@aeolus-fleet/gateway 0.36.1 → 0.36.3
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/README.md +4 -0
- package/dist/adapters/fleet/active-ships.d.ts +8 -0
- package/dist/adapters/fleet/active-ships.js +22 -0
- package/dist/adapters/fleet/active-ships.js.map +1 -0
- package/dist/adapters/fleet/actor-door.d.ts +8 -1
- package/dist/adapters/fleet/actor-door.js +12 -5
- package/dist/adapters/fleet/actor-door.js.map +1 -1
- package/dist/adapters/fleet/argo-inbox-door.d.ts +4 -0
- package/dist/adapters/fleet/argo-inbox-door.js +81 -0
- package/dist/adapters/fleet/argo-inbox-door.js.map +1 -0
- package/dist/adapters/fleet/every-listed-ship.d.ts +21 -0
- package/dist/adapters/fleet/every-listed-ship.js +28 -0
- package/dist/adapters/fleet/every-listed-ship.js.map +1 -0
- package/dist/adapters/fleet/fleet-ships.d.ts +1 -3
- package/dist/adapters/fleet/fleet-ships.js +5 -22
- package/dist/adapters/fleet/fleet-ships.js.map +1 -1
- package/dist/adapters/fleet/rest-fleet-door.d.ts +14 -0
- package/dist/adapters/fleet/rest-fleet-door.js +50 -6
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/front-door.js +3 -1
- package/dist/adapters/http/front-door.js.map +1 -1
- package/dist/adapters/http/live.d.ts +10 -1
- package/dist/adapters/http/live.js +10 -1
- package/dist/adapters/http/live.js.map +1 -1
- package/dist/adapters/http/party-sign-in-routes.d.ts +7 -0
- package/dist/adapters/http/party-sign-in-routes.js +18 -0
- package/dist/adapters/http/party-sign-in-routes.js.map +1 -1
- package/dist/adapters/http/person-tools.js +3 -2
- package/dist/adapters/http/person-tools.js.map +1 -1
- package/dist/adapters/http/slack-routes.d.ts +2 -0
- package/dist/adapters/http/slack-routes.js +12 -4
- package/dist/adapters/http/slack-routes.js.map +1 -1
- package/dist/adapters/mcp/mcp-servers.d.ts +8 -2
- package/dist/adapters/mcp/mcp-servers.js +8 -4
- package/dist/adapters/mcp/mcp-servers.js.map +1 -1
- package/dist/adapters/pagasae/email-channel.js +5 -3
- package/dist/adapters/pagasae/email-channel.js.map +1 -1
- package/dist/adapters/pagasae/pagasae-client.js +1 -0
- package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
- package/dist/adapters/pagasae/shared-sign-in.js +2 -2
- package/dist/adapters/pagasae/shared-sign-in.js.map +1 -1
- package/dist/adapters/prisma/argo-accounts.d.ts +4 -0
- package/dist/adapters/prisma/argo-accounts.js +17 -0
- package/dist/adapters/prisma/argo-accounts.js.map +1 -0
- package/dist/adapters/prisma/argo-slack-posts.d.ts +4 -0
- package/dist/adapters/prisma/argo-slack-posts.js +30 -0
- package/dist/adapters/prisma/argo-slack-posts.js.map +1 -0
- package/dist/adapters/prisma/argo-wakes.d.ts +4 -0
- package/dist/adapters/prisma/argo-wakes.js +54 -0
- package/dist/adapters/prisma/argo-wakes.js.map +1 -0
- package/dist/adapters/prisma/basket-entries.js +4 -2
- package/dist/adapters/prisma/basket-entries.js.map +1 -1
- package/dist/adapters/prisma/connected-chats.d.ts +4 -0
- package/dist/adapters/prisma/connected-chats.js +21 -0
- package/dist/adapters/prisma/connected-chats.js.map +1 -0
- package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
- package/dist/adapters/prisma/fleet-forgetter.js +2 -2
- package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +26 -1
- package/dist/adapters/prisma/generated/client.d.ts +26 -1
- package/dist/adapters/prisma/generated/internal/class.d.ts +55 -0
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +428 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +49 -2
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +52 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +49 -2
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/ArgoAccount.d.ts +946 -0
- package/dist/adapters/prisma/generated/models/ArgoAccount.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoAccount.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ArgoMessageCovered.d.ts +947 -0
- package/dist/adapters/prisma/generated/models/ArgoMessageCovered.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoMessageCovered.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ArgoSlackPost.d.ts +1065 -0
- package/dist/adapters/prisma/generated/models/ArgoSlackPost.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoSlackPost.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ArgoWakeSent.d.ts +975 -0
- package/dist/adapters/prisma/generated/models/ArgoWakeSent.js +2 -0
- package/dist/adapters/prisma/generated/models/ArgoWakeSent.js.map +1 -0
- package/dist/adapters/prisma/generated/models/BasketEntry.d.ts +114 -18
- package/dist/adapters/prisma/generated/models/ItemOutcome.d.ts +91 -1
- package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +95 -2
- package/dist/adapters/prisma/generated/models/Party.d.ts +32 -1
- package/dist/adapters/prisma/generated/models/SlackLinkStep.d.ts +1005 -0
- package/dist/adapters/prisma/generated/models/SlackLinkStep.js +2 -0
- package/dist/adapters/prisma/generated/models/SlackLinkStep.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +5 -0
- package/dist/adapters/prisma/item-outcomes.d.ts +6 -1
- package/dist/adapters/prisma/item-outcomes.js +19 -3
- package/dist/adapters/prisma/item-outcomes.js.map +1 -1
- package/dist/adapters/prisma/opened-deliveries.js +5 -0
- package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
- package/dist/adapters/prisma/party-store.js +4 -1
- package/dist/adapters/prisma/party-store.js.map +1 -1
- package/dist/adapters/prisma/slack-link-steps.d.ts +8 -0
- package/dist/adapters/prisma/slack-link-steps.js +28 -0
- package/dist/adapters/prisma/slack-link-steps.js.map +1 -0
- package/dist/adapters/prisma/slack-posts.js +4 -3
- package/dist/adapters/prisma/slack-posts.js.map +1 -1
- package/dist/adapters/slack/slack-messages.d.ts +2 -0
- package/dist/adapters/slack/slack-messages.js +125 -18
- package/dist/adapters/slack/slack-messages.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +78 -2
- package/dist/adapters/trpc/router.js +36 -1
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/adapters/web-push/web-push.js +1 -1
- package/dist/adapters/web-push/web-push.js.map +1 -1
- package/dist/app.js +128 -15
- package/dist/app.js.map +1 -1
- package/dist/core/account-sign-in/account-of-sign-in.d.ts +7 -2
- package/dist/core/account-sign-in/account-of-sign-in.js +9 -3
- package/dist/core/account-sign-in/account-of-sign-in.js.map +1 -1
- package/dist/core/account-sign-in/ports.d.ts +2 -0
- package/dist/core/argo-inbox/argo-inbox.d.ts +31 -0
- package/dist/core/argo-inbox/argo-inbox.js +23 -0
- package/dist/core/argo-inbox/argo-inbox.js.map +1 -0
- package/dist/core/argo-inbox/argo-slack-message.d.ts +17 -0
- package/dist/core/argo-inbox/argo-slack-message.js +40 -0
- package/dist/core/argo-inbox/argo-slack-message.js.map +1 -0
- package/dist/core/argo-inbox/argo-slack-post.d.ts +21 -0
- package/dist/core/argo-inbox/argo-slack-post.js +2 -0
- package/dist/core/argo-inbox/argo-slack-post.js.map +1 -0
- package/dist/core/argo-inbox/follow-argo-inbox.d.ts +33 -0
- package/dist/core/argo-inbox/follow-argo-inbox.js +133 -0
- package/dist/core/argo-inbox/follow-argo-inbox.js.map +1 -0
- package/dist/core/argo-inbox/note-argo-account.d.ts +19 -0
- package/dist/core/argo-inbox/note-argo-account.js +18 -0
- package/dist/core/argo-inbox/note-argo-account.js.map +1 -0
- package/dist/core/argo-inbox/ports.d.ts +123 -0
- package/dist/core/argo-inbox/ports.js +2 -0
- package/dist/core/argo-inbox/ports.js.map +1 -0
- package/dist/core/argo-inbox/read-argo-inbox-notice.d.ts +34 -0
- package/dist/core/argo-inbox/read-argo-inbox-notice.js +20 -0
- package/dist/core/argo-inbox/read-argo-inbox-notice.js.map +1 -0
- package/dist/core/argo-inbox/read-argo-section.d.ts +54 -0
- package/dist/core/argo-inbox/read-argo-section.js +67 -0
- package/dist/core/argo-inbox/read-argo-section.js.map +1 -0
- package/dist/core/argo-inbox/show-argo-inbox-in-slack.d.ts +36 -0
- package/dist/core/argo-inbox/show-argo-inbox-in-slack.js +125 -0
- package/dist/core/argo-inbox/show-argo-inbox-in-slack.js.map +1 -0
- package/dist/core/argo-inbox/wake-for-argo.d.ts +37 -0
- package/dist/core/argo-inbox/wake-for-argo.js +139 -0
- package/dist/core/argo-inbox/wake-for-argo.js.map +1 -0
- package/dist/core/mcp-out/grant-calls.js +1 -1
- package/dist/core/mcp-out/grant-calls.js.map +1 -1
- package/dist/core/mcp-out/hand-call.js +1 -1
- package/dist/core/mcp-out/hand-call.js.map +1 -1
- package/dist/core/mcp-out/keep-server-title.d.ts +13 -0
- package/dist/core/mcp-out/keep-server-title.js +14 -0
- package/dist/core/mcp-out/keep-server-title.js.map +1 -0
- package/dist/core/mcp-out/ports.d.ts +10 -0
- package/dist/core/oauth/exchange-id-jag.d.ts +4 -1
- package/dist/core/oauth/exchange-id-jag.js +5 -2
- package/dist/core/oauth/exchange-id-jag.js.map +1 -1
- package/dist/core/parties/approve-party.js +1 -1
- package/dist/core/parties/approve-party.js.map +1 -1
- package/dist/core/parties/party.d.ts +2 -0
- package/dist/core/parties/party.js.map +1 -1
- package/dist/core/parties/ports.d.ts +5 -0
- package/dist/core/party-grants/listing-connection.js +2 -2
- package/dist/core/party-grants/listing-connection.js.map +1 -1
- package/dist/core/party-grants/tell-sign-in-needed.d.ts +2 -0
- package/dist/core/party-grants/tell-sign-in-needed.js +16 -4
- package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -1
- package/dist/core/people/act-in-place.d.ts +42 -0
- package/dist/core/people/act-in-place.js +26 -0
- package/dist/core/people/act-in-place.js.map +1 -0
- package/dist/core/people/answer-delivery.js +13 -1
- package/dist/core/people/answer-delivery.js.map +1 -1
- package/dist/core/people/basket.d.ts +32 -10
- package/dist/core/people/basket.js +24 -6
- package/dist/core/people/basket.js.map +1 -1
- package/dist/core/people/count-basket.d.ts +4 -3
- package/dist/core/people/count-basket.js +9 -3
- package/dist/core/people/count-basket.js.map +1 -1
- package/dist/core/people/done-delivery.js +1 -1
- package/dist/core/people/done-delivery.js.map +1 -1
- package/dist/core/people/finish-own-step.js +2 -2
- package/dist/core/people/finish-own-step.js.map +1 -1
- package/dist/core/people/inbox-entry.d.ts +17 -1
- package/dist/core/people/inbox-entry.js +28 -1
- package/dist/core/people/inbox-entry.js.map +1 -1
- package/dist/core/people/item-job.d.ts +3 -1
- package/dist/core/people/item-job.js +5 -1
- package/dist/core/people/item-job.js.map +1 -1
- package/dist/core/people/item-outcome.d.ts +21 -2
- package/dist/core/people/item-outcome.js.map +1 -1
- package/dist/core/people/item-places.d.ts +26 -0
- package/dist/core/people/item-places.js +12 -0
- package/dist/core/people/item-places.js.map +1 -0
- package/dist/core/people/open-delivery.d.ts +6 -6
- package/dist/core/people/open-delivery.js +13 -10
- package/dist/core/people/open-delivery.js.map +1 -1
- package/dist/core/people/opened-of.d.ts +5 -1
- package/dist/core/people/opened-of.js +5 -1
- package/dist/core/people/opened-of.js.map +1 -1
- package/dist/core/people/person-wakes.d.ts +49 -0
- package/dist/core/people/person-wakes.js +27 -0
- package/dist/core/people/person-wakes.js.map +1 -0
- package/dist/core/people/ports.d.ts +46 -5
- package/dist/core/people/put-in-basket.d.ts +8 -6
- package/dist/core/people/put-in-basket.js +16 -5
- package/dist/core/people/put-in-basket.js.map +1 -1
- package/dist/core/people/read-basket.d.ts +8 -3
- package/dist/core/people/read-basket.js +8 -10
- package/dist/core/people/read-basket.js.map +1 -1
- package/dist/core/people/read-bridge-home.d.ts +39 -11
- package/dist/core/people/read-bridge-home.js +74 -12
- package/dist/core/people/read-bridge-home.js.map +1 -1
- package/dist/core/people/read-chats.d.ts +21 -0
- package/dist/core/people/read-chats.js +20 -0
- package/dist/core/people/read-chats.js.map +1 -0
- package/dist/core/people/read-inbox.d.ts +19 -9
- package/dist/core/people/read-inbox.js +57 -15
- package/dist/core/people/read-inbox.js.map +1 -1
- package/dist/core/people/read-record.d.ts +37 -11
- package/dist/core/people/read-record.js +44 -12
- package/dist/core/people/read-record.js.map +1 -1
- package/dist/core/people/read-send-to.d.ts +23 -0
- package/dist/core/people/read-send-to.js +37 -0
- package/dist/core/people/read-send-to.js.map +1 -0
- package/dist/core/people/read-your-fleet.d.ts +19 -0
- package/dist/core/people/read-your-fleet.js +22 -0
- package/dist/core/people/read-your-fleet.js.map +1 -0
- package/dist/core/people/remove-from-basket.d.ts +2 -1
- package/dist/core/people/remove-from-basket.js +4 -1
- package/dist/core/people/remove-from-basket.js.map +1 -1
- package/dist/core/people/routing.d.ts +13 -4
- package/dist/core/people/routing.js +14 -0
- package/dist/core/people/routing.js.map +1 -1
- package/dist/core/people/send-basket.d.ts +11 -7
- package/dist/core/people/send-basket.js +68 -11
- package/dist/core/people/send-basket.js.map +1 -1
- package/dist/core/people/send-message.d.ts +3 -1
- package/dist/core/people/send-message.js +9 -2
- package/dist/core/people/send-message.js.map +1 -1
- package/dist/core/people/send-stored-answers.d.ts +4 -3
- package/dist/core/people/send-stored-answers.js +62 -12
- package/dist/core/people/send-stored-answers.js.map +1 -1
- package/dist/core/people/stale-item.d.ts +40 -0
- package/dist/core/people/stale-item.js +36 -0
- package/dist/core/people/stale-item.js.map +1 -0
- package/dist/core/people/wake-person.d.ts +3 -1
- package/dist/core/people/wake-person.js +5 -3
- package/dist/core/people/wake-person.js.map +1 -1
- package/dist/core/people/web-push-channel.js +2 -2
- package/dist/core/people/web-push-channel.js.map +1 -1
- package/dist/core/people/your-fleet.d.ts +44 -0
- package/dist/core/people/your-fleet.js +64 -0
- package/dist/core/people/your-fleet.js.map +1 -0
- package/dist/core/sign-in/account-token.d.ts +5 -1
- package/dist/core/sign-in/account-token.js +8 -2
- package/dist/core/sign-in/account-token.js.map +1 -1
- package/dist/core/sign-in/complete-sign-in.d.ts +4 -1
- package/dist/core/sign-in/complete-sign-in.js +5 -2
- package/dist/core/sign-in/complete-sign-in.js.map +1 -1
- package/dist/core/sign-in/ports.d.ts +2 -0
- package/dist/core/slack/answer-in-slack.d.ts +15 -9
- package/dist/core/slack/answer-in-slack.js +43 -18
- package/dist/core/slack/answer-in-slack.js.map +1 -1
- package/dist/core/slack/ask-to-link-slack.d.ts +28 -0
- package/dist/core/slack/ask-to-link-slack.js +31 -0
- package/dist/core/slack/ask-to-link-slack.js.map +1 -0
- package/dist/core/slack/complete-link.d.ts +6 -1
- package/dist/core/slack/complete-link.js +6 -0
- package/dist/core/slack/complete-link.js.map +1 -1
- package/dist/core/slack/done-in-slack.d.ts +36 -0
- package/dist/core/slack/done-in-slack.js +63 -0
- package/dist/core/slack/done-in-slack.js.map +1 -0
- package/dist/core/slack/edit-slack-posts.d.ts +7 -5
- package/dist/core/slack/edit-slack-posts.js +13 -10
- package/dist/core/slack/edit-slack-posts.js.map +1 -1
- package/dist/core/slack/edited-post-of.d.ts +21 -0
- package/dist/core/slack/edited-post-of.js +77 -0
- package/dist/core/slack/edited-post-of.js.map +1 -0
- package/dist/core/slack/ports.d.ts +70 -10
- package/dist/core/slack/pressed-post-of.d.ts +9 -0
- package/dist/core/slack/pressed-post-of.js +18 -0
- package/dist/core/slack/pressed-post-of.js.map +1 -0
- package/dist/core/slack/read-slack-dropped-out.d.ts +23 -0
- package/dist/core/slack/read-slack-dropped-out.js +24 -0
- package/dist/core/slack/read-slack-dropped-out.js.map +1 -0
- package/dist/core/slack/read-slack-link.d.ts +4 -0
- package/dist/core/slack/read-slack-link.js +5 -0
- package/dist/core/slack/read-slack-link.js.map +1 -1
- package/dist/core/slack/show-in-slack.js +8 -7
- package/dist/core/slack/show-in-slack.js.map +1 -1
- package/dist/core/slack/slack-post-of.d.ts +24 -12
- package/dist/core/slack/slack-post-of.js +118 -37
- package/dist/core/slack/slack-post-of.js.map +1 -1
- package/dist/core/slack/slack-post.d.ts +13 -1
- package/dist/core/slack/slack-post.js +16 -1
- package/dist/core/slack/slack-post.js.map +1 -1
- package/dist/core/slack/slack-press.d.ts +1 -1
- package/dist/core/slack/slack-press.js +2 -1
- package/dist/core/slack/slack-press.js.map +1 -1
- package/package.json +4 -2
- package/src/adapters/prisma/migrations/20261104090000_basket_entries_note_alone/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261105090000_slack_link_steps/migration.sql +10 -0
- package/src/adapters/prisma/migrations/20261106090000_opened_deliveries_withdrawn_steps/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261107090000_opened_deliveries_step_link/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261107100000_opened_deliveries_opened_in/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261108090000_item_outcomes_note_and_seen/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261108090000_parties_display_name/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261109090000_argo_accounts/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261109090000_basket_entries_option_label/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261109100000_basket_entries_sent/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261110090000_argo_slack_posts/migration.sql +12 -0
- package/src/adapters/prisma/migrations/20261110090000_connected_chats_indexes/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20261110100000_argo_wakes/migration.sql +18 -0
- package/src/adapters/prisma/schema.prisma +88 -6
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +10 -8
- package/web/.next/build-manifest.json +114 -90
- package/web/.next/diagnostics/route-bundle-stats.json +268 -208
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/routes-manifest.json +12 -0
- package/web/.next/server/app/(bridge)/bridge/basket/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/basket/page/server-reference-manifest.json +105 -0
- package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/basket}/page.js +15 -14
- package/web/.next/server/app/(bridge)/bridge/basket/page.js.nft.json +1 -0
- package/web/.next/server/app/(bridge)/bridge/basket/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/changes/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/changes/route.js +8 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/changes/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/done/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/done/page/server-reference-manifest.json +25 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js +16 -15
- package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/done}/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/done/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/fleet/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/(bridge)/bridge/fleet/page.js +24 -0
- package/web/.next/server/app/{(console)/bridge/done → (bridge)/bridge/fleet}/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/fleet/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/focus/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/focus/route.js +8 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/focus/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page/build-manifest.json +4 -4
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page/next-font-manifest.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/page/server-reference-manifest.json +95 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js +16 -14
- package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(bridge)/bridge/settings/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/page.js +15 -14
- package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/settings}/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page.js +26 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js +15 -14
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page.js.map +5 -0
- package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js.nft.json +1 -1
- package/web/.next/server/app/(bridge)/bridge/settings/routing/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/build-manifest.json +23 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page/server-reference-manifest.json +95 -0
- package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/stay-aware}/page.js +15 -14
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.map +5 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.nft.json +1 -0
- package/web/.next/server/app/(bridge)/bridge/stay-aware/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/gateway-off/page.js +2 -2
- package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +2 -2
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/(console)/outside-parties/add/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/page.js +2 -2
- package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/parties/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/(console)/parties/page.js +2 -2
- package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page.js +2 -2
- package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/(console)/slack/disconnect/page.js +2 -2
- package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/(console)/slack/expose/page.js +2 -2
- package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/(console)/slack/page.js +2 -2
- package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +4 -4
- package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/(console)/slack/remove/page.js +4 -4
- package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page.js +2 -2
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
- package/web/.next/server/app/authorize/failed/page/build-manifest.json +4 -4
- package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/failed/page.js +3 -3
- package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/pick/page/build-manifest.json +4 -4
- package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/pick/page.js +7 -6
- package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +4 -4
- package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page.js +3 -3
- package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/icon.svg/route.js.nft.json +1 -1
- package/web/.next/server/app-paths-manifest.json +10 -8
- package/web/.next/server/chunks/0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js +2 -2
- package/web/.next/server/chunks/_0up_7s_05-7vm._.js +3 -0
- package/web/.next/server/chunks/_0up_7s_05-7vm._.js.map +1 -0
- package/web/.next/server/chunks/_0xw0b7avhvg75._.js +1 -1
- package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js +1 -1
- package/web/.next/server/chunks/_1xaed_q500ez6._.js +3 -0
- package/web/.next/server/chunks/_1xaed_q500ez6._.js.map +1 -0
- package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +1 -1
- package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js +3 -0
- package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js.map +1 -0
- package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js +3 -0
- package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js +3 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js → [root-of-the-server]__04_bc8g0oe4jt._.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js → [root-of-the-server]__179upda-y7uap._.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1ektgsnjg4btl._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1ektgsnjg4btl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nfpyr3ynmwks._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nfpyr3ynmwks._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js +57 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_00fvst5icgei4._.js +3 -0
- package/web/.next/server/chunks/ssr/_00fvst5icgei4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_02mwdj1oj1zgm._.js +3 -0
- package/web/.next/server/chunks/ssr/_02mwdj1oj1zgm._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js +3 -0
- package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0fqd23gyia_8g._.js +3 -0
- package/web/.next/server/chunks/ssr/_0fqd23gyia_8g._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js +3 -0
- package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js +3 -0
- package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0u0u0owpxx_37._.js +3 -0
- package/web/.next/server/chunks/ssr/_0u0u0owpxx_37._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js +3 -0
- package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0x5-_917zcaj9._.js +3 -0
- package/web/.next/server/chunks/ssr/_0x5-_917zcaj9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0xajzaside0sw._.js +3 -0
- package/web/.next/server/chunks/ssr/_0xajzaside0sw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0yhvyj-yts7qi._.js +3 -0
- package/web/.next/server/chunks/ssr/_0yhvyj-yts7qi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_104ilzyn58zw_._.js +3 -0
- package/web/.next/server/chunks/ssr/_104ilzyn58zw_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_13_ady-a4058y._.js +3 -0
- package/web/.next/server/chunks/ssr/_13_ady-a4058y._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js +3 -0
- package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js +3 -0
- package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js +3 -0
- package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js +3 -0
- package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
- package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js +3 -0
- package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1cc4ie_s4tycq._.js +3 -0
- package/web/.next/server/chunks/ssr/_1cc4ie_s4tycq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
- package/web/.next/server/chunks/ssr/{_0a_nsm-ye2r6v._.js → _1gbkqq8ra1nei._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1gbkqq8ra1nei._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1gnk2vqna6c6u._.js +3 -0
- package/web/.next/server/chunks/ssr/_1gnk2vqna6c6u._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js +3 -0
- package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1k2b80m058vgx._.js +3 -0
- package/web/.next/server/chunks/ssr/_1k2b80m058vgx._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js +3 -0
- package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1rfpx4ze-3l8z._.js +3 -0
- package/web/.next/server/chunks/ssr/{web_features_0mi9a9pdzkdji._.js.map → _1rfpx4ze-3l8z._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js +3 -0
- package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js +3 -0
- package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1xgivp19ts9hn._.js +3 -0
- package/web/.next/server/chunks/ssr/_1xgivp19ts9hn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js +4 -0
- package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_05ni_zu0e0w44._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_05ni_zu0e0w44._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_07vtvfyfo0a6i._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_07vtvfyfo0a6i._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_12euo0ncdx1pn._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_12euo0ncdx1pn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_1722-epjft-rn._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_1722-epjft-rn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js → node_modules_@aeolus-fleet_ui_dist_11tn8gozt2_c3._.js} +2 -2
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_ui_dist_11tn8gozt2_c3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_ui_dist_16j49enf275ln._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_ui_dist_16j49enf275ln._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1cvjxnw-b3pnv._.js +3 -0
- package/web/.next/server/chunks/ssr/{node_modules_@base-ui_react_1lbvjrzg8s2ox._.js.map → node_modules_@base-ui_react_1cvjxnw-b3pnv._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +2 -2
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +2 -2
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0qgev3ti257yj._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js +1 -1
- package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js +3 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js → web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +1 -1
- package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js +1 -1
- package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_06f9kfi0c4nf8._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_06f9kfi0c4nf8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js → web_features_0f2pobf_t4wjt._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js.map → web_features_0f2pobf_t4wjt._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_12b-75qfhurxi._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_12b-75qfhurxi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_1m5g9a6mwrsd-._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_0msm42qwm0-jq._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_0msm42qwm0-jq._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{web_features_0f6r-m-dq36vf._.js → web_features_forms_1u0akr22eh_x_._.js} +2 -2
- package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_frame_01uyck6q56an2._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_frame_01uyck6q56an2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
- package/web/.next/server/chunks/web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js +3 -0
- package/web/.next/server/middleware-build-manifest.js +114 -90
- package/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +14 -6
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/preview-props.json +3 -3
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +167 -105
- package/web/.next/static/chunks/030kay14jcn_y.js +1 -0
- package/web/.next/static/chunks/0ben53l12lrh1.js +1 -0
- package/web/.next/static/chunks/0d1u4n5okodee.css +3 -0
- package/web/.next/static/chunks/0dg4cy4rae-3o.js +1 -0
- package/web/.next/static/chunks/0jwils_670syn.js +1 -0
- package/web/.next/static/chunks/0lnew3mjkd54b.js +1 -0
- package/web/.next/static/chunks/0m95j-t2qmnd_.js +1 -0
- package/web/.next/static/chunks/0r5ujkp-5utsu.js +1 -0
- package/web/.next/static/chunks/{1166rxt6h6ilq.js → 1c8q9h-van9r6.js} +1 -1
- package/web/.next/static/chunks/{3db90zxmny2y-.js → 1jyiwl5szsvgn.js} +1 -1
- package/web/.next/static/chunks/{2z2auwx1s2mgl.js → 1lkcm-iwggfae.js} +1 -1
- package/web/.next/static/chunks/1ml6wx1ya9wwo.js +1 -0
- package/web/.next/static/chunks/1nzfw6ajt5nf9.js +55 -0
- package/web/.next/static/chunks/22wtc73dzqm8f.js +1 -0
- package/web/.next/static/chunks/2drwxc7-hry0u.js +1 -0
- package/web/.next/static/chunks/2ewacyhp73due.js +1 -0
- package/web/.next/static/chunks/2fimf0wcjnmpj.js +1 -0
- package/web/.next/static/chunks/2fk9ydkphmyna.js +1 -0
- package/web/.next/static/chunks/{07j7jnfe13wx6.js → 2ich96rzec753.js} +1 -1
- package/web/.next/static/chunks/2khjzepn4_2a-.js +1 -0
- package/web/.next/static/chunks/2mpwg-t6pat39.js +1 -0
- package/web/.next/static/chunks/2ui6n5-n032a3.js +1 -0
- package/web/.next/static/chunks/2wvdu6-tx1h0l.js +1 -0
- package/web/.next/static/chunks/33qpc2y76i927.js +1 -0
- package/web/.next/static/chunks/39tst46ewpx_k.js +1 -0
- package/web/.next/static/chunks/3h8spyc73a438.js +1 -0
- package/web/.next/static/chunks/3kenmp9pjwgf2.js +1 -0
- package/web/.next/static/chunks/3knqujtrdi225.js +1 -0
- package/web/.next/static/chunks/3v8s571padqcz.js +1 -0
- package/web/.next/static/chunks/3wg9zn3lyhf-b.js +1 -0
- package/web/.next/static/chunks/{0lzisjsmhlhjf.js → 3zhaqdsq15d1e.js} +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/routes.d.ts +3 -1
- package/web/.next/types/validator.ts +50 -16
- package/web/public/argo-wake-icon.svg +1 -0
- package/web/public/wake-worker.js +8 -2
- package/web/public/wake-worker.test.ts +52 -0
- package/dist/core/people/stale-question.d.ts +0 -28
- package/dist/core/people/stale-question.js +0 -26
- package/dist/core/people/stale-question.js.map +0 -1
- package/web/.next/server/app/(console)/bridge/basket/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/basket/page/server-reference-manifest.json +0 -75
- package/web/.next/server/app/(console)/bridge/basket/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/changes/route/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/changes/route.js +0 -8
- package/web/.next/server/app/(console)/bridge/changes/route_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/done/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/done/page/server-reference-manifest.json +0 -75
- package/web/.next/server/app/(console)/bridge/done/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/focus/route/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/focus/route.js +0 -8
- package/web/.next/server/app/(console)/bridge/focus/route_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/page/server-reference-manifest.json +0 -65
- package/web/.next/server/app/(console)/bridge/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/settings/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/settings/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/build-manifest.json +0 -23
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +0 -11
- package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +0 -3
- package/web/.next/server/app/(console)/bridge/settings/routing/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/(console)/bridge/settings/routing/page/build-manifest.json +0 -23
- package/web/.next/server/app/(console)/bridge/settings/routing/page/next-font-manifest.json +0 -11
- package/web/.next/server/app/(console)/bridge/settings/routing/page_client-reference-manifest.js +0 -3
- package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js +0 -3
- package/web/.next/server/chunks/_05qgg3__4kdbm._.js +0 -3
- package/web/.next/server/chunks/_05qgg3__4kdbm._.js.map +0 -1
- package/web/.next/server/chunks/_1uap5tql2vvsb._.js +0 -3
- package/web/.next/server/chunks/_1uap5tql2vvsb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js +0 -3
- package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js.map +0 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js +0 -3
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js +0 -3
- package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js +0 -3
- package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +0 -3
- package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_177fdczus39s7._.js +0 -3
- package/web/.next/server/chunks/ssr/_177fdczus39s7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js +0 -3
- package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js +0 -3
- package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js +0 -3
- package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js +0 -3
- package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1x3s5abk_uj9j._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js +0 -3
- package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js +0 -3
- package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js +0 -3
- package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js +0 -3
- package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js +0 -3
- package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js.map +0 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js +0 -3
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js +0 -3
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js +0 -3
- package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0f6r-m-dq36vf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +0 -1
- package/web/.next/server/chunks/web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js +0 -3
- package/web/.next/static/chunks/0az9upwm-8_q9.js +0 -1
- package/web/.next/static/chunks/0c1tqlbsvq1dj.js +0 -1
- package/web/.next/static/chunks/0fh11dkddwf_2.js +0 -1
- package/web/.next/static/chunks/0gbozvd_yh421.js +0 -1
- package/web/.next/static/chunks/0l9_oie6xi0kd.js +0 -1
- package/web/.next/static/chunks/0m512dxdcrv-b.js +0 -1
- package/web/.next/static/chunks/0zbcy0_3jemrv.js +0 -1
- package/web/.next/static/chunks/1485slb5zus5p.js +0 -1
- package/web/.next/static/chunks/180aowme095ds.js +0 -1
- package/web/.next/static/chunks/24olc0btcvn7q.js +0 -1
- package/web/.next/static/chunks/296w-74ry5lzk.js +0 -1
- package/web/.next/static/chunks/2gghdkr64z9f9.js +0 -1
- package/web/.next/static/chunks/2hoi73vy1wqpo.js +0 -1
- package/web/.next/static/chunks/2mtfca4qk_s34.js +0 -1
- package/web/.next/static/chunks/397zvdr6xr5pq.js +0 -1
- package/web/.next/static/chunks/3ow9h8hreko-p.css +0 -3
- package/web/.next/static/chunks/3pd8pele5x1o9.js +0 -1
- package/web/.next/static/chunks/3srfjz42u14tx.js +0 -1
- package/web/.next/static/chunks/3x0p-z3zdrk_b.js +0 -1
- package/web/.next/static/chunks/3yq9jt4p_0uid.js +0 -1
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page.js.map +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/build-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/server-reference-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.map +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page.js.map +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/build-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/server-reference-manifest.json +0 -0
- /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page.js.map +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page/react-loadable-manifest.json +0 -0
- /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page.js.map +0 -0
- /package/web/.next/server/chunks/{0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js.map → 0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js.map → [root-of-the-server]__04_bc8g0oe4jt._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js.map → [root-of-the-server]__179upda-y7uap._.js.map} +0 -0
- /package/web/.next/server/chunks/{web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js.map → web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js.map} +0 -0
- /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 79SqN0pBIJ0D-DK1jZmK6}/_buildManifest.js +0 -0
- /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 79SqN0pBIJ0D-DK1jZmK6}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 79SqN0pBIJ0D-DK1jZmK6}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/next/src/client/components/server-async-storage.ts","../../../../../web/features/frame/hooks/use-account-menu.tsx","../../../../../web/features/frame/data%3A5ef672%20%3Ctext/javascript%3E","../../../../../web/features/frame/theme.ts","../../../../../web/lib/gateway-api/page-account.ts"],"sourcesContent":["// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n","'use client';\n\nimport type { Theme } from '@aeolus-fleet/common';\nimport type { AvatarMenuEntry, AvatarMenuProps } from '@aeolus-fleet/ui';\nimport { useRef, useState, type ReactNode } from 'react';\n\nimport { setTheme } from '../actions';\nimport { THEMES } from '../theme';\n\n/** Where the avatar menu's Help leads, as in the console. */\nconst HELP_URL = 'https://github.com/ThomasHendrickx/aeolus-fleet';\n\n/** The gateway's server ends the shared sign-in here, in every app at once, for a form sent from its own pages. */\nconst SIGN_OUT_PATH = '/sign-in/end';\n\n/** Applies a theme at once, as the root layout's script does on the next load. */\nfunction applyTheme(theme: Theme): void {\n document.documentElement.dataset.theme = theme;\n const isDark = theme === 'dark' || (theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches);\n document.documentElement.classList.toggle('dark', isDark);\n}\n\nexport interface AccountMenuOf {\n readonly email: string;\n /** Account's address, for the avatar menu's Your account, Your rights and Email updates. */\n readonly accountUrl: string | undefined;\n readonly theme: Theme;\n /** The page's own entries, such as the phone's for what its tab bar lacks. */\n readonly entries?: readonly AvatarMenuEntry[];\n}\n\n/**\n * The avatar menu of the account signed in (header design H8): its theme,\n * applied at once and kept, and sign out, which ends the shared sign-in in\n * every app and says \"Signing out\" until the page leaves. The form that\n * signs out goes on the page beside the menu.\n */\nexport function useAccountMenu({ email, accountUrl, theme, entries = [] }: AccountMenuOf): { account: AvatarMenuProps; signOutForm: ReactNode } {\n const [shownTheme, setShownTheme] = useState(theme);\n const [isSigningOut, setIsSigningOut] = useState(false);\n const form = useRef<HTMLFormElement>(null);\n const account: AvatarMenuProps = {\n name: email,\n signedInAs: 'account',\n accountUrl,\n theme: shownTheme,\n themes: THEMES,\n hasTheme: true,\n onThemeChange: (next) => {\n setShownTheme(next);\n applyTheme(next);\n void setTheme(next);\n },\n shortcuts: [],\n helpUrl: HELP_URL,\n onSignOut: () => {\n setIsSigningOut(true);\n form.current?.requestSubmit();\n },\n isSigningOut,\n entries,\n };\n return { account, signOutForm: <form ref={form} method=\"post\" action={SIGN_OUT_PATH} hidden /> };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40ca8029b8207bd47293950b98bdbd89c6c994c5fa\":{\"name\":\"setTheme\"}},\"web/features/frame/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40ca8029b8207bd47293950b98bdbd89c6c994c5fa\",callServer,void 0,findSourceMapURL,\"setTheme\");export{$$RSC_SERVER_ACTION_0 as setTheme};","/**\n * The theme this browser chose for the gateway's pages (header design H13:\n * each app keeps its own), System until chosen.\n */\nimport type { Theme } from '@aeolus-fleet/common';\n\n/** The themes, as common names them: written here so the header's browser code loads no schema (decision 0033). */\nexport const THEMES: readonly Theme[] = ['light', 'dark', 'system'];\n\n/** The cookie that keeps it. */\nexport const THEME_COOKIE = 'aeolus_gateway_theme';\n\nexport function isTheme(value: unknown): value is Theme {\n return THEMES.some((theme) => theme === value);\n}\n\n/** The theme a cookie names, or System. */\nexport function themeFrom(value: string | undefined): Theme {\n return isTheme(value) ? value : 'system';\n}\n","/**\n * What a page of the web app does with the API's account.inView (header\n * design H5, H9): show its fleet as the account signed in, or send the\n * browser where it may go: the same page in the fleet the account may open,\n * the app it may open there, or sign-in and back to the page. Where the\n * gateway is off for the account's fleet, the page says so instead.\n */\n\n/** The API's answer to account.inView. */\nexport type InView =\n | { kind: 'signedIn'; fleetId: string; accountId: string; scopes: string[] }\n | { kind: 'goTo'; fleetId: string }\n | { kind: 'off'; fleetName: string; accountUrl: string }\n | { kind: 'elsewhere'; url: string };\n\n/** The API's refusals of account.inView a page answers: signed in to no account, and no shared sign-in at this gateway. */\nexport type InViewRefusal = 'UNAUTHORIZED' | 'NOT_FOUND';\n\nexport type PageAccount =\n | { kind: 'signedIn'; fleetId: string; scopes: readonly string[] }\n | { kind: 'goTo'; location: string }\n | { kind: 'off'; fleetName: string; accountUrl: string }\n | { kind: 'noSignIn' };\n\nconst SIGN_IN_START = '/sign-in/start';\n\n/** The parameter a page names its fleet by. */\nexport const FLEET_PARAMETER = 'fleet';\n\n/** A page of the web app in a fleet: every link keeps the fleet in its address. */\nexport function inFleet(page: string, fleetId: string): string {\n const [path = '', query = ''] = page.split('?');\n const parameters = new URLSearchParams(query);\n parameters.set(FLEET_PARAMETER, fleetId);\n return `${path}?${parameters.toString()}`;\n}\n\n/** Reads the answer for the page asked for, its path and query as the browser sent them. */\nexport function pageAccountOf(read: { inView: InView } | { refusal: InViewRefusal }, page: string): PageAccount {\n if ('refusal' in read) {\n return read.refusal === 'UNAUTHORIZED' ? { kind: 'goTo', location: `${SIGN_IN_START}?${new URLSearchParams({ return_to: page }).toString()}` } : { kind: 'noSignIn' };\n }\n const { inView } = read;\n switch (inView.kind) {\n case 'signedIn':\n return { kind: 'signedIn', fleetId: inView.fleetId, scopes: inView.scopes };\n case 'goTo':\n return { kind: 'goTo', location: inFleet(page, inView.fleetId) };\n case 'off':\n return inView;\n case 'elsewhere':\n return { kind: 'goTo', location: inView.url };\n }\n}\n"],"names":["actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage","$$RSC_SERVER_ACTION_0","SIGN_IN_START","FLEET_PARAMETER","inFleet","page","fleetId","path","query","split","parameters","URLSearchParams","set","toString","pageAccountOf","read","refusal","kind","location","return_to","inView","scopes","url"],"mappings":"2GAMSA,kBAAkB,CAAA,kBAAlBA,EAAAA,kBAAkB,EAClBC,gBAAgB,CAAA,kBAAhBA,EAAAA,gBAAgB,EAChBC,oBAAoB,CAAA,kBAApBA,EAAAA,oBAAoB,8EAFM,CAAA,CAAA,IAAA,OACF,CAAA,CAAA,IAAA,OACI,CAAA,CAAA,IAAA,oPCJrC,EAAA,EAAA,CAAA,CAAA,OCJwL,EAAA,EAAA,CAAA,CAAA,MAAsG,IAAMC,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,YCOha,EAA2B,CAAC,QAAS,OAAQ,SAAS,YF8B5D,SAAS,AAAe,OAAE,CAAK,YAAE,CAAU,OAAE,CAAK,SAAE,EAAU,EAAE,CAAiB,EACtF,GAAM,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,GACvC,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC3C,EAAO,CAAA,EAAA,EAAA,MAAA,AAAM,EAAkB,MAsBrC,MAAO,CAAE,QArBwB,CAC/B,KAAM,EACN,WAAY,qBACZ,EACA,MAAO,EACP,OAAQ,EACR,UAAU,EACV,cAAe,AAAC,UACd,EAAc,GAhClB,SAAS,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG,AACnC,EAAS,AAAU,YAAW,AAAU,WAgC/B,GAhC2C,OAAO,UAAU,CAAC,gCAAgC,OAAO,CACnH,SAAS,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,OAAQ,GAgCzC,EAAS,EAChB,EACA,UAAW,EAAE,CACb,QA5Ca,CA4CJ,iDACT,UAAW,KACT,GAAgB,GAChB,EAAK,OAAO,EAAE,eAChB,eACA,UACA,CACF,EACkB,YAAa,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,IAAK,EAAM,OAAO,OAAO,OAjD1C,CAiDkD,cAAe,MAAM,CAAA,CAAA,GAAI,CACjG,8BGjCO,SAASG,AAAQC,CAAY,CAAEC,CAAe,EACnD,GAAM,CAACC,EAAO,EAAE,CAAEC,EAAQ,EAAE,CAAC,CAAGH,EAAKI,KAAK,CAAC,KACrCC,EAAa,IAAIC,gBAAgBH,GAEvC,OADAE,EAAWE,GAAG,CANe,AAMdT,QAAiBG,GACzB,CAAA,EAAGC,EAAK,CAAC,EAAEG,EAAWG,QAAQ,GAAA,CAAI,AAC3C","ignoreList":[0]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[22432,21817,43256,27350,a=>{var b=a.i(82360);a.s(["f",0,b],22432),a.s(["f",0,b],21817),a.s(["f",0,b],43256),a.s(["f",0,b],27350)},30587,a=>{a.s(["H",0,"fleet","Q",0,{kind:"idle"}])},88412,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])},36855,a=>{var b=a.i(87924);a.s(["f",0,function({state:a,testId:c}){switch(a.kind){case"idle":return null;case"done":return(0,b.jsx)("p",{role:"status","data-testid":c,className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a.message});case"refused":case"openNetwork":return(0,b.jsx)("p",{role:"alert","data-testid":c,className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a.message})}}])},77237,a=>{var b=a.i(87924),c=a.i(35112),d=a.i(88412);a.s(["f",0,function({children:a,pending:e,kind:f="primary",testId:g}){let h=(0,c.useFormStatus)();return(0,b.jsx)("button",{type:"submit",className:d.x[f],disabled:h.pending,"aria-busy":h.pending,"data-testid":g,children:h.pending?e:a})}])},47763,a=>{var b=a.i(87924);let c={waiting:"border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg",active:"border-tone-active-border bg-tone-active-bg text-tone-active-fg",ok:"border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg",attention:"border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg",ended:"border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg"};a.s(["T",0,function({tone:a,label:d}){return(0,b.jsx)("span",{className:`inline-flex items-center rounded-full border px-2 text-caption ${c[a]}`,children:d})},"E",0,function({children:a,isMono:c=!1}){return(0,b.jsx)("span",{className:`inline-flex items-center rounded-md border border-border px-2 text-caption ${c?"font-mono":""}`,children:a})}])}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_0x5-_917zcaj9._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/forms/form-state.ts","../../../../../web/features/forms/ui/look.ts","../../../../../web/features/forms/ui/outcome.tsx","../../../../../web/features/forms/ui/submit-button.tsx","../../../../../web/features/outside-parties/ui/status-badge.tsx"],"sourcesContent":["/**\n * What a page's form (a server action) answers the browser: nothing yet,\n * done with what changed, or refused with why, as the API said it. The\n * open network's warning asks for a confirm (interop I-3).\n */\nexport type FormState =\n | { kind: 'idle' }\n | { kind: 'done'; message: string }\n | { kind: 'refused'; message: string }\n | { kind: 'openNetwork'; message: string };\n\nexport const IDLE: FormState = { kind: 'idle' };\n\n/** A form's text field, empty when it was not sent. */\nexport function fieldOf(form: FormData, name: string): string {\n const value = form.get(name);\n return typeof value === 'string' ? value : '';\n}\n\n/** The form's fields as text, files left out. */\nexport function fieldsOf(form: FormData): Record<string, string> {\n return Object.fromEntries([...form.entries()].flatMap(([name, value]) => (typeof value === 'string' ? [[name, value]] : [])));\n}\n\n/** The fleet a page's form names: the page's own, sent in a hidden field. */\nexport const FLEET_FIELD = 'fleet';\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n","import type { FormState } from '../form-state';\n\n/** How a form ended: what changed, or why it was refused. Nothing while it has not been sent. */\nexport function Outcome({ state, testId }: { state: FormState; testId?: string }) {\n switch (state.kind) {\n case 'idle':\n return null;\n case 'done':\n return (\n <p role=\"status\" data-testid={testId} className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {state.message}\n </p>\n );\n case 'refused':\n case 'openNetwork':\n return (\n <p role=\"alert\" data-testid={testId} className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {state.message}\n </p>\n );\n }\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useFormStatus } from 'react-dom';\n\nimport { BUTTONS, type ButtonKind } from './look';\n\n/** A form's button: it says the form is on its way at once, and takes no second press meanwhile. */\nexport function SubmitButton({ children, pending, kind = 'primary', testId }: { children: ReactNode; pending: string; kind?: ButtonKind; testId?: string }) {\n const status = useFormStatus();\n return (\n <button type=\"submit\" className={BUTTONS[kind]} disabled={status.pending} aria-busy={status.pending} data-testid={testId}>\n {status.pending ? pending : children}\n </button>\n );\n}\n","import type { Tone } from '../party-kinds';\n\nconst TONES: Record<Tone, string> = {\n waiting: 'border-tone-waiting-border bg-tone-waiting-bg text-tone-waiting-fg',\n active: 'border-tone-active-border bg-tone-active-bg text-tone-active-fg',\n ok: 'border-tone-ok-border bg-tone-ok-bg text-tone-ok-fg',\n attention: 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg',\n ended: 'border-tone-ended-border bg-tone-ended-bg text-tone-ended-fg',\n};\n\n/** A status in its tone, as the console shows one. */\nexport function StatusBadge({ tone, label }: { tone: Tone; label: string }) {\n return <span className={`inline-flex items-center rounded-full border px-2 text-caption ${TONES[tone]}`}>{label}</span>;\n}\n\n/** A plain tag: a protocol, a side, an id. */\nexport function Tag({ children, isMono = false }: { children: React.ReactNode; isMono?: boolean }) {\n return <span className={`inline-flex items-center rounded-md border border-border px-2 text-caption ${isMono ? 'font-mono' : ''}`}>{children}</span>;\n}\n"],"names":["IDLE","kind","fieldOf","form","name","value","get","fieldsOf","Object","fromEntries","entries","flatMap","FLEET_FIELD","CARD","BUTTON","BUTTONS","primary","secondary","destructive","INPUT","LABEL","Outcome","state","testId","role","className","message","SubmitButton","children","pending","status","type","disabled","TONES","waiting","active","ok","attention","ended","StatusBadge","tone","label","Tag","isMono"],"mappings":"0LAyB2B,cAdI,CAAEC,KAAM,MAAO,eCR9C,IAAMa,EAAS,oGAEFC,EAAU,CACrBC,QAAS,CAAA,EAAGF,EAAO,0DAA0D,CAAC,CAC9EG,UAAW,CAAA,EAAGH,EAAO,6CAA6C,CAAC,CACnEI,YAAa,CAAA,EAAGJ,EAAO,2CAA2C,CAAC,AACrE,qBARoB,mFAYC,yFAEA,sDCZd,SAASO,AAAQ,OAAEC,CAAK,QAAEC,CAAM,CAAyC,EAC9E,OAAQD,EAAMrB,IAAI,EAChB,IAAK,OACH,OAAO,IACT,KAAK,OACH,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEuB,KAAK,SAAS,cAAaD,EAAQE,UAAU,2FAC7CH,EAAMI,OAAO,EAGpB,KAAK,UACL,IAAK,cACH,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEF,KAAK,QAAQ,cAAaD,EAAQE,UAAU,gHAC5CH,EAAMI,OAAO,EAGtB,CACF,gCClBA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,kBAGO,SAASC,AAAa,UAAEC,CAAQ,SAAEC,CAAO,MAAE5B,EAAO,SAAS,CAAEsB,QAAM,CAAgF,EACxJ,IAAMO,EAAS,CAAA,EAAA,EAAA,aAAa,AAAb,IACf,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOC,KAAK,SAASN,UAAW,EAAA,CAAO,CAACxB,EAAK,CAAE+B,SAAUF,EAAOD,OAAO,CAAE,YAAWC,EAAOD,OAAO,CAAE,cAAaN,WAC/GO,EAAOD,OAAO,CAAGA,EAAUD,GAGlC,gCCbA,IAAMK,EAA8B,CAClCC,QAAS,qEACTC,OAAQ,kEACRC,GAAI,sDACJC,UAAW,2EACXC,MAAO,8DACT,aAGO,SAASC,AAAY,MAAEC,CAAI,OAAEC,CAAK,CAAiC,EACxE,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKhB,UAAW,CAAC,+DAA+D,EAAEQ,CAAK,CAACO,EAAK,CAAA,CAAE,UAAGC,GAC5G,QAGO,SAAa,AAAJC,UAAMd,CAAQ,QAAEe,GAAS,CAAK,CAAmD,EAC/F,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKlB,UAAW,CAAC,2EAA2E,EAAEkB,EAAS,YAAc,GAAA,CAAI,UAAGf,GACtI"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[74215,a=>{var b=a.i(76965);a.s(["X",()=>b.f])},15562,a=>{var b=a.i(5050);let c=(0,b.createServerReference)("600027e660d1eb6aa8b21edba45ec532d962d5bb53",b.callServer,void 0,b.findSourceMapURL,"removeFromBasket");a.s(["f",0,c])},91777,34129,a=>{var b=a.i(87924),c=a.i(99271),d=a.i(76983),e=a.i(72131),f=a.i(52779),g=a.i(25959),h=a.i(36247),i=a.i(82686),j=a.i(41053),k=a.i(89479),l=a.i(48162),m=a.i(15562),n=a.i(16550),o=a.i(17758),p=a.i(86970),q=a.i(11725),r=a.i(74352),s=a.i(10039),t=a.i(40197),u=a.i(21341),v=a.i(68758),w=a.i(5358),x=a.i(70879),y=a.i(53368),z=a.i(48514),A=a.i(21338),B=a.i(37987),C=a.i(69035),D=a.i(21777),E=a.i(85804),F=a.i(93817),G=a.i(52357),H=a.i(58983),I=a.i(48819),J=a.i(33540),K=a.i(74746),L=a.i(98238),M=a.i(74215),N=a.i(88412);let O={alert:"Alert",waiting:"Waiting",working:"Working",idle:"Idle"},P={alert:"bg-tone-attention-bg text-tone-attention-fg",waiting:"bg-tone-waiting-bg text-tone-waiting-fg",working:"bg-tone-ok-bg text-tone-ok-fg",idle:"bg-tone-ended-bg text-tone-ended-fg"},Q="flex min-h-9 w-full items-center gap-2 rounded-md border border-input bg-background px-2";function R({to:a,isLocked:c,onClear:d,isRefused:e}){return(0,b.jsxs)("div",{"data-testid":"bridge-send-to",className:`${Q} justify-between py-1 ${c?"bg-muted":""} ${e?"border-destructive ring-2 ring-tone-attention-border":""}`,children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-sm border border-border bg-secondary px-1.5 py-0.5 font-mono text-code",children:[(0,b.jsx)(L.f,{"aria-hidden":"true",className:"size-3.5 text-muted-foreground"}),a]}),(0,b.jsx)("button",{type:"button","aria-label":`Clear ${a}`,onClick:d,className:"inline-flex size-7 items-center justify-center rounded-md hover:bg-accent disabled:opacity-60",children:(0,b.jsx)(M.X,{"aria-hidden":"true",className:"size-4"})})]})}function S({sendTo:a,onPick:c}){let[d,f]=(0,e.useState)(""),[g,h]=(0,e.useState)(!1),i="read"===a.kind?a.value.ships:[];return(0,b.jsxs)(A.f.Root,{inline:!0,open:g,onOpenChange:h,items:i,filteredItems:(0,z.t)(i,d),inputValue:d,onInputValueChange:a=>{f(a),h(!0)},itemToStringLabel:a=>a.name,value:null,onValueChange:a=>{null!==a&&c(a.name)},autoHighlight:!0,children:[(0,b.jsxs)("div",{className:`${Q} focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/30`,children:[(0,b.jsx)(J.f,{"aria-hidden":"true",className:"size-4 text-muted-foreground"}),(0,b.jsx)(B.f.Input,{id:"bridge-send-to","data-testid":"bridge-send-to-search",placeholder:"Search your fleet's ships",onFocus:()=>{h(!0)},className:"h-9 w-full bg-transparent outline-none"})]}),g?(0,b.jsxs)("div",{"data-testid":"bridge-send-ships",className:"max-h-72 overflow-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md",children:[(0,b.jsx)("div",{className:"px-2 py-1 text-caption text-muted-foreground",children:"Ships you can send to"}),(0,b.jsx)(C.f.Empty,{className:"px-2 py-1 text-muted-foreground",children:"reading"===a.kind?"Reading the ships you can send to...":"unreadable"===a.kind?a.message:"No ship you can send to matches."}),(0,b.jsx)(D.f.List,{children:a=>(0,b.jsxs)(E.f.Item,{value:a,className:"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 data-highlighted:bg-accent",children:[(0,b.jsx)(L.f,{"aria-hidden":"true",className:"size-4 text-muted-foreground"}),(0,b.jsx)("span",{className:"flex-1",children:a.name}),null===a.state?null:(0,b.jsx)("span",{className:`rounded-sm px-1 text-caption ${P[a.state]}`,children:O[a.state]})]},a.name)})]}):null]})}function T({phase:a}){switch(a.kind){case"writing":return null;case"sending":return(0,b.jsxs)("p",{role:"status","data-testid":"bridge-send-sending",className:"flex items-center gap-2",children:[(0,b.jsx)(H.f,{"aria-hidden":"true",className:"size-4 animate-spin text-tone-waiting-fg"}),"Sending. Bridge waits until the fleet has stored it."]});case"failed":return(0,b.jsxs)("p",{role:"alert","data-testid":"bridge-send-failure",className:"flex items-start gap-2 text-destructive-text",children:[(0,b.jsx)(F.f,{"aria-hidden":"true",className:"mt-0.5 size-4 shrink-0"}),"noAnswer"===a.failure.kind?"The fleet did not answer, so it may not be stored. Your message is kept here. Send again: it carries the same key, so it arrives once.":"Not sent. Your message is kept here: pick another ship, or cancel."]})}}function U({sendTo:a,to:c,isFromAlert:d,message:e,phase:f,onPick:g,onWrite:h,onSend:i,onClose:j}){let k="sending"===f.kind,l="failed"===f.kind?f.failure:void 0,m=l?.kind==="noAnswer",n="read"===a.kind?a.value.sentAs:void 0,o=k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(H.f,{"aria-hidden":"true",className:"size-4 animate-spin"}),"Sending..."]}):m?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(I.f,{"aria-hidden":"true",className:"size-4"}),"Send again"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(K.f,{"aria-hidden":"true",className:"size-4"}),"Send"]}),p=k||!(0,z.f)({to:c,message:e})||l?.kind==="refused";return(0,b.jsxs)("form",{"data-testid":"bridge-send-form",className:"flex h-full flex-col",onSubmit:a=>{a.preventDefault(),p||i()},children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 border-b border-border px-4 py-3 sm:border-0 sm:px-5 sm:pt-5 sm:pb-0",children:[(0,b.jsx)("button",{type:"button","aria-label":"Close",onClick:j,className:"inline-flex size-8 items-center justify-center rounded-md hover:bg-accent disabled:opacity-60 sm:order-last sm:ml-auto",children:(0,b.jsx)(M.X,{"aria-hidden":"true",className:"size-5"})}),(0,b.jsx)("h2",{className:"text-heading font-semibold",children:"Send a ship a message"})]}),(0,b.jsxs)("div",{className:"grid flex-1 content-start gap-4 overflow-auto px-4 py-4 sm:px-5",children:[(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)("label",{htmlFor:"bridge-send-to",className:"font-semibold",children:"To"}),null===c?(0,b.jsx)(S,{sendTo:a,onPick:g}):(0,b.jsx)(R,{to:c,isLocked:k,isRefused:l?.kind==="refused",onClear:()=>{g(null)}}),l?.kind==="refused"?(0,b.jsx)("span",{"data-testid":"bridge-send-refusal",className:"text-destructive-text",children:l.reason}):d&&null!==c&&"writing"===f.kind?(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:"Filled in from the alert; change it if you like."}):null]}),(0,b.jsxs)("div",{className:"grid gap-1.5",children:[(0,b.jsx)("label",{htmlFor:"bridge-send-message",className:"font-semibold",children:"Message"}),(0,b.jsx)("textarea",{id:"bridge-send-message","data-testid":"bridge-send-message",disabled:k,rows:5,value:e,placeholder:"Write what the ship should know or do.",onChange:a=>{h(a.target.value)},className:"min-h-32 rounded-md border border-input bg-background px-3 py-2 disabled:bg-muted disabled:text-muted-foreground"}),(0,b.jsx)("span",{className:"text-caption text-muted-foreground",children:"Text or Markdown, up to 256 KB."})]}),(0,b.jsx)(T,{phase:f})]}),(0,b.jsxs)("div",{className:"grid gap-3 border-t border-border px-4 py-3 sm:flex sm:items-center sm:justify-between sm:px-5",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-caption text-muted-foreground",children:[(0,b.jsx)(G.f,{"aria-hidden":"true",className:"size-4"}),void 0===n?"Sent as your person ship.":`Sent as ${n}, your person ship.`]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{type:"button",disabled:k,onClick:j,className:"hidden h-9 items-center rounded-md px-4 font-medium hover:bg-accent disabled:opacity-60 sm:inline-flex",children:"Cancel"}),(0,b.jsx)("button",{type:"submit","data-testid":"bridge-send",disabled:p,"aria-busy":k,className:`${N.x.primary} h-11 w-full sm:h-9 sm:w-auto`,children:o})]})]})]})}var V=a.i(805),W=a.i(60232),X=a.i(62043),Y=a.i(11591),Z=a.i(58710),$=a.i(93294),_=a.i(94894),aa=a.i(97024);function ab(){let{toasts:a}=d.f.useToastManager();return(0,b.jsx)(V.f.Portal,{children:(0,b.jsx)(W.f.Viewport,{className:"fixed right-4 bottom-4 z-50 grid w-[min(24rem,calc(100vw-2rem))] gap-2",children:a.map(a=>(0,b.jsx)(X.f.Root,{toast:a,"data-testid":"bridge-send-toast",className:"rounded-lg border border-border bg-popover px-4 py-3 text-popover-foreground shadow-lg",children:(0,b.jsxs)(Y.f.Content,{className:"flex items-start gap-3",children:[(0,b.jsx)(aa.f,{"aria-hidden":"true",className:"mt-0.5 size-4 shrink-0 text-tone-ok-fg"}),(0,b.jsxs)("div",{className:"grid flex-1 gap-1",children:[(0,b.jsx)(Z.f.Title,{className:"font-semibold"}),(0,b.jsx)($.f.Description,{className:"text-muted-foreground"})]}),(0,b.jsx)(_.f.Close,{"aria-label":"Close",className:"inline-flex size-7 items-center justify-center rounded-md hover:bg-accent",children:(0,b.jsx)(M.X,{"aria-hidden":"true",className:"size-4"})})]})},a.id))})})}let ac=(0,e.createContext)(void 0);function ad(){return(0,e.useContext)(ac)}function ae({fleetId:a,children:c}){let[f,g]=(0,e.useState)(),[h,i]=(0,e.useState)({kind:"reading"}),j=(0,e.useRef)(null),k=(0,e.useRef)(0),[,l]=(0,e.useTransition)(),m=d.f.useToastManager(),n=()=>{g(void 0)};return(0,b.jsxs)(ac,{value:b=>{k.current+=1,j.current=null,g({to:b?.alertShip??null,isFromAlert:void 0!==b,message:"",phase:{kind:"writing"}}),i({kind:"reading"}),l(async()=>{let b=await (0,x.f)(a);i(b.isOk?{kind:"read",value:b.value}:{kind:"unreadable",message:b.message})})},children:[c,(0,b.jsx)(t.f.Root,{open:void 0!==f,onOpenChange:a=>{a||n()},children:(0,b.jsxs)(u.f.Portal,{children:[(0,b.jsx)(v.f.Backdrop,{className:"fixed inset-0 z-40 bg-(--overlay)"}),(0,b.jsx)(w.f.Popup,{"data-testid":"bridge-send-dialog","aria-label":"Send a ship a message",initialFocus:()=>document.getElementById(f?.to===null?"bridge-send-to":"bridge-send-message"),className:"fixed inset-0 z-50 bg-popover text-popover-foreground sm:inset-auto sm:top-[10vh] sm:left-1/2 sm:max-h-[80vh] sm:w-[min(34rem,calc(100vw-2rem))] sm:-translate-x-1/2 sm:overflow-auto sm:rounded-lg sm:border sm:border-border sm:shadow-lg",children:void 0===f?null:(0,b.jsx)(U,{sendTo:h,to:f.to,isFromAlert:f.isFromAlert,message:f.message,phase:f.phase,onPick:a=>{g({...f,to:a,isFromAlert:!1,phase:{kind:"writing"}})},onWrite:a=>{g({...f,message:a,phase:"failed"===f.phase.kind&&"refused"===f.phase.failure.kind?f.phase:{kind:"writing"}})},onSend:()=>{var b;let c,d;null!==f.to&&(b={...f,to:f.to},c=(0,z.g)({last:j.current,to:b.to,message:b.message,newKey:crypto.randomUUID()}),j.current={key:c,to:b.to,message:b.message},g({...b,phase:{kind:"sending"}}),d=k.current,l(async()=>{let e=await (0,y.f)({fleet:a,to:b.to,payload:b.message,idempotencyKey:c}),f=k.current!==d;if(e.isOk){f||g(void 0);let a="read"===h.kind?h.value.sentAs:"your person ship";m.add({...(0,z.q)({to:b.to,sentAs:a,storedAt:e.value.storedAt}),timeout:0})}else f||g({...b,phase:{kind:"failed",failure:(0,z.S)(e)}})}))},onClose:n})})]})}),(0,b.jsx)(ab,{})]})}function af({fleetId:a,children:d}){return(0,b.jsx)(c.f.Provider,{children:(0,b.jsx)(ae,{fleetId:a,children:d})})}a.s(["T",0,af,"P",0,ad],34129);var ag=a.i(18145);function ah({fleetId:a,decidePlaces:c,consoleUrl:t,children:u}){let v=d.f.useToastManager(),w=ad(),[x,y]=(0,e.useState)(),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)(),[D,E]=(0,e.useState)(),[F,G]=(0,e.useState)(),[H,I]=(0,e.useState)(),[J,K]=(0,e.useState)(),[L,M]=(0,e.useState)(),[,N]=(0,e.useTransition)(),[O,P]=(0,e.useState)(0);(0,ag.R)(void 0===x?void 0:(0,o.u)(x.opened.job),()=>{y(void 0)});let Q=b=>{C(b.deliveryId),I(void 0),M(void 0),N(async()=>{let c=await (0,j.f)(a,b.deliveryId);if(C(void 0),c.isOk){let a=b.inBasket??null;y({delivery:c.value,opened:{job:b.job,isAlert:b.isAlert??!1,wasNew:"seen"!==b.state},inBasket:a,finished:null}),A(a?.note??""),K(void 0)}else I({deliveryId:b.deliveryId,message:c.message})})},R=({control:a,action:b,onSettled:c})=>{G(a),K(void 0),N(async()=>{let a=await b();G(void 0),a.isOk?c(a.value):K(a.message)})},S=a=>()=>{y(void 0),M(a)},T=void 0===x?void 0:{deliveryId:x.delivery.deliveryId,job:x.opened.job};return(0,b.jsx)(r.f,{list:(0,b.jsxs)("div",{className:"grid gap-4",children:[void 0===L?null:(0,b.jsx)(s.f,{message:L,isFailure:!1}),u({open:Q,openingId:B,putPick:(b,c)=>{E(b.deliveryId),I(void 0),M(void 0),N(async()=>{let d=await (0,l.f)({fleet:a,deliveryId:b.deliveryId,option:c});E(void 0),d.isOk?(M(`Option ${String(c)} is in the basket, not sent: ${b.from} receives it when you send the basket.`),P(a=>a+1)):I({deliveryId:b.deliveryId,message:d.message})})},puttingId:D,failure:H,opened:T})]},O),item:void 0===x?void 0:(({delivery:d,inBasket:e,opened:j,finished:l})=>{let o=d.question?.id;return(0,b.jsx)(q.u,{delivery:d,opened:j,meetingHref:void 0===d.meetingId?void 0:(0,f.f)({fleetId:a,meetingId:d.meetingId}),consoleUrl:t,basketHref:(0,g.f)(n.H,a),inBasket:e,finished:l,places:c,note:z,working:F,failure:J,onNoteChange:A,onAnswer:b=>{R({control:void 0===b?{kind:"note"}:{kind:"option",option:b},action:()=>(0,h.f)({fleet:a,deliveryId:d.deliveryId,input:{questionId:d.question?.id,option:b,note:z}}),onSettled:S(`Your answer went to ${d.from}.`)})},onPut:b=>{R({control:null===b?{kind:"note"}:{kind:"option",option:b},action:()=>(0,k.f)({fleet:a,deliveryId:d.deliveryId,option:b,optionLabel:d.question?.options.find(({key:a})=>a===b)?.label??null,note:z}),onSettled:a=>{y({delivery:d,opened:j,finished:l,inBasket:a}),v.add((0,p.f)(a.option))}})},onRemove:()=>{void 0!==o&&R({control:{kind:"remove"},action:()=>(0,m.f)(a,o),onSettled:S(`Your answer to “${d.title}” is out of the basket; the question still waits on you.`)})},onDone:()=>{R({control:{kind:"done"},action:()=>(0,i.f)({fleet:a,deliveryId:d.deliveryId}),onSettled:S(`Done with “${d.title}”.`)})},onFinishStep:b=>{R({control:{kind:b},action:()=>(0,i.f)({fleet:a,deliveryId:d.deliveryId,step:{outcome:b,note:z}}),onSettled:()=>{y({delivery:d,inBasket:e,opened:j,finished:{outcome:b,note:z.trim(),at:new Date().toISOString()}})}})},onOpen:a=>{Q({deliveryId:a,job:j.job})},onSendMessage:void 0===d.alertShip||void 0===w?void 0:a=>{w({alertShip:a})},onBack:()=>{y(void 0)}},d.deliveryId)})(x)})}a.s(["f",0,function({fleetId:a,decidePlaces:d,consoleUrl:e,children:f}){return(0,b.jsx)(af,{fleetId:a,children:(0,b.jsxs)(c.f.Provider,{children:[(0,b.jsx)(ah,{fleetId:a,decidePlaces:d,consoleUrl:e,children:f}),(0,b.jsx)(p.o,{})]})})}],91777)},86970,93294,70879,53368,48514,48819,a=>{var b=a.i(87924),c=a.i(76983),d=a.i(805),e=a.i(60232),f=a.i(62043),g=a.i(11591),h=a.i(58710),i=a.i(64267);a.s(["f",0,i],93294);var i=i,j=a.i(55596);a.s(["o",0,function(){let{toasts:a}=c.f.useToastManager();return(0,b.jsx)(d.f.Portal,{children:(0,b.jsx)(e.f.Viewport,{className:"fixed bottom-4 left-4 z-50 hidden w-[min(24rem,calc(100vw-2rem))] gap-2 sm:grid",children:a.map(a=>(0,b.jsxs)(f.f.Root,{toast:a,"data-testid":"bridge-basket-toast",className:"flex items-start gap-3 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-lg",children:[(0,b.jsx)(j.f,{"aria-hidden":!0,className:"mt-0.5 size-4 shrink-0"}),(0,b.jsxs)(g.f.Content,{className:"grid flex-1 gap-1",children:[(0,b.jsx)(h.f.Title,{className:"font-medium"}),(0,b.jsx)(i.Description,{className:"text-caption text-muted-foreground"})]})]},a.id))})})},"f",0,function(a){return{title:null===a?"Your note alone in the basket":`Option ${String(a)} in the basket`,description:"Not sent. Still waiting on you until you send it."}}],86970);var k=a.i(5050);let l=(0,k.createServerReference)("400284782d121950f35e1ce856d3d8f0158fbb10f4",k.callServer,void 0,k.findSourceMapURL,"readSendTo");a.s(["f",0,l],70879);let m=(0,k.createServerReference)("4000cf62bc21b02b0dec545692328f576b09e289a7",k.callServer,void 0,k.findSourceMapURL,"sendShipMessage");a.s(["f",0,m],53368);var n=a.i(46059),o=a.i(98868);let p=new Set(["BAD_REQUEST","FORBIDDEN"]);n.z.object({ship:n.z.object({name:o.z.string().min(1)})}),a.s(["f",0,function({to:a,message:b}){return null!==a&&""!==b.trim()},"g",0,function({last:a,to:b,message:c,newKey:d}){return null!==a&&a.to===b&&a.message===c?a.key:d},"S",0,function({code:a,message:b}){return void 0!==a&&p.has(a)?{kind:"refused",reason:b}:{kind:"noAnswer"}},"q",0,function({to:a,sentAs:b,storedAt:c}){return{title:`Sent to ${a}`,description:`Stored by the fleet at ${new Date(c).toISOString().slice(11,16)} UTC, sent as ${b}. ${a} receives it when it next looks.`}},"t",0,function(a,b){let c=b.trim().toLowerCase();return""===c?a:a.filter(({name:a})=>a.toLowerCase().includes(c))}],48514);var q=a.i(64831);let r={name:"rotate-cw",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]};r.node;let s=(0,q.f)(r);a.s(["f",0,s],48819)},52779,36247,82686,41053,89479,48162,a=>{a.s(["f",0,function(a){let b=new URLSearchParams({fleet:a.fleetId,...void 0===a.cursor?{}:{cursor:a.cursor}});return`/meetings/${encodeURIComponent(a.meetingId)}?${b.toString()}`}],52779);var b=a.i(5050);let c=(0,b.createServerReference)("4001ea780db1ead1cb2c7ef9e012482be9e1166c90",b.callServer,void 0,b.findSourceMapURL,"answerDelivery");a.s(["f",0,c],36247);let d=(0,b.createServerReference)("406cdc77dbf870c019aab6c37c746129540f7344b4",b.callServer,void 0,b.findSourceMapURL,"doneDelivery");a.s(["f",0,d],82686);let e=(0,b.createServerReference)("60a206312560da7e8d3118b69c571db7006f3401ec",b.callServer,void 0,b.findSourceMapURL,"openDelivery");a.s(["f",0,e],41053);let f=(0,b.createServerReference)("409fc33bee7fa9990c372a16941b80a35aef4a2974",b.callServer,void 0,b.findSourceMapURL,"putInBasket");a.s(["f",0,f],89479);let g=(0,b.createServerReference)("40c4bdf099ebf75c7f472730d1a2313320401d4ebd",b.callServer,void 0,b.findSourceMapURL,"putPickInBasket");a.s(["f",0,g],48162)}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_0xajzaside0sw._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../web/features/bridge/hooks/data%3A33c25a%20%3Ctext/javascript%3E","../../../../../web/features/bridge/state/item-focus.tsx","../../../../../web/features/bridge/state/send-message.tsx","../../../../../web/features/bridge/ui/send-message-form.tsx","../../../../../web/features/bridge/fleet/services/your-fleet.ts","../../../../../web/features/bridge/ui/sent-toasts.tsx","../../../../../web/features/bridge/ui/basket-toast.tsx","../../../../../web/features/bridge/hooks/data%3A7c59e8%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A2ab6e6%20%3Ctext/javascript%3E","../../../../../web/features/bridge/services/send-message.ts","../../../../../node_modules/lucide-react/src/icons/rotate-cw.ts","../../../../../web/features/meeting/paths.ts","../../../../../web/features/bridge/hooks/data%3Acedf13%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3Ac22581%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A7b9f0c%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A174fe4%20%3Ctext/javascript%3E","../../../../../web/features/bridge/hooks/data%3A8743ae%20%3Ctext/javascript%3E"],"sourcesContent":["/* __next_internal_action_entry_do_not_use__ [{\"600027e660d1eb6aa8b21edba45ec532d962d5bb53\":{\"name\":\"removeFromBasket\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_5=/*#__PURE__*/createServerReference(\"600027e660d1eb6aa8b21edba45ec532d962d5bb53\",callServer,void 0,findSourceMapURL,\"removeFromBasket\");export{$$RSC_SERVER_ACTION_5 as removeFromBasket};","'use client';\n\nimport { Toast } from '@base-ui/react/toast';\nimport { useState, useTransition, type ReactNode } from 'react';\n\nimport { meetingPathOf } from '../../meeting/paths';\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { answerDelivery, doneDelivery, openDelivery, putInBasket, putPickInBasket, removeFromBasket, type ActionOutcome } from '../hooks/bridge-actions';\nimport { BRIDGE_BASKET_PATH } from '../paths';\nimport type { FocusedDelivery } from '../services/deliveries';\nimport { openedScreenOf } from '../services/shell';\nimport type { HomeItem } from '../services/items';\nimport type { RoutedPlace } from '../services/routing';\nimport { BasketToasts, putToastOf } from '../ui/basket-toast';\nimport { DeliveryCard, type DeliveryControl, type InBasket, type Opened, type StepFinished } from '../ui/delivery-card';\nimport { ItemSplit } from '../ui/item-split';\nimport { Notice } from '../ui/notice';\nimport { SendMessageProvider, useSendMessage } from './send-message';\nimport { useOpenedItem } from './opened-item';\n\n/** An item to open: by its delivery, with its job, whether an alert, whether it was new, and the answer to it in the basket, if any. A replacement opened from its stale item is new. */\nexport interface ToOpen {\n readonly deliveryId: string;\n readonly job: HomeItem['job'];\n readonly isAlert?: boolean;\n readonly state?: HomeItem['state'];\n readonly inBasket?: InBasket | null;\n}\n\n/** A question to put its asker's pick in the basket from its row: by its delivery, from its asker. */\nexport interface ToPut {\n readonly deliveryId: string;\n readonly from: string;\n}\n\n/** What a list of items gets to open one or put a pick in the basket from its row: the presses, the one opening or putting, and why one could not be. */\nexport interface ItemOpening {\n readonly open: (item: ToOpen) => void;\n readonly openingId: string | undefined;\n readonly putPick: (item: ToPut, option: number) => void;\n readonly puttingId: string | undefined;\n readonly failure: { deliveryId: string; message: string } | undefined;\n /** The item open beside the list, by its delivery and job; none while the list is shown alone. */\n readonly opened: { readonly deliveryId: string; readonly job: HomeItem['job'] } | undefined;\n}\n\n/**\n * A list of Bridge's items with one in focus at a time. Opening is the\n * person's own act, so it is a press, never a link: the gateway acknowledges\n * the item for them, and it is shown whole. An alert or a notice seen is\n * done at once (CC16), so it shows with no answer to give, as does a\n * question its asker withdrew or replaced; a replaced one opens its\n * replacement. A step ends done or cannot with the note, sent at once,\n * never through the basket (CC23), and stays open showing its outcome. A question's answer goes in the basket (CC24): the\n * question stays open saying so, with a toast (basket.html), and comes out\n * of it there; from its row, a new question's pick goes in it at once, opened by the same press. Answering or being done says so in place, and the page reads\n * itself again. A question names where it shows when the page read its places.\n * An opened alert offers to send its ship a message, as home offers to send\n * any ship one (aeolus-fleet #1547). The open item shows beside its list on\n * a desktop, and on its own screen on a phone (aeolus-fleet#1538).\n */\nexport function ItemFocus({ fleetId, decidePlaces, consoleUrl, children }: { fleetId: string; decidePlaces?: readonly RoutedPlace[]; /** The fleet's console, where an opened alert's ship shows its Health. */ consoleUrl?: string; children: (opening: ItemOpening) => ReactNode }) {\n return (\n <SendMessageProvider fleetId={fleetId}>\n <Toast.Provider>\n <FocusedItems fleetId={fleetId} decidePlaces={decidePlaces} consoleUrl={consoleUrl}>{children}</FocusedItems>\n <BasketToasts />\n </Toast.Provider>\n </SendMessageProvider>\n );\n}\n\nfunction FocusedItems({ fleetId, decidePlaces, consoleUrl, children }: { fleetId: string; decidePlaces?: readonly RoutedPlace[]; consoleUrl?: string; children: (opening: ItemOpening) => ReactNode }) {\n const toasts = Toast.useToastManager();\n const sendMessage = useSendMessage();\n const [focus, setFocus] = useState<{ delivery: FocusedDelivery; opened: Opened; inBasket: InBasket | null; finished: StepFinished | null } | undefined>();\n const [note, setNote] = useState('');\n const [openingId, setOpeningId] = useState<string | undefined>();\n const [puttingId, setPuttingId] = useState<string | undefined>();\n const [working, setWorking] = useState<DeliveryControl | undefined>();\n const [openFailure, setOpenFailure] = useState<{ deliveryId: string; message: string } | undefined>();\n const [failure, setFailure] = useState<string | undefined>();\n const [done, setDone] = useState<string | undefined>();\n const [, startTransition] = useTransition();\n // Each pick put from a row shows the list anew, as it is after a card: it reads the page as the action left it.\n const [shownTimes, setShownTimes] = useState(0);\n useOpenedItem(focus === undefined ? undefined : openedScreenOf(focus.opened.job), () => {\n setFocus(undefined);\n });\n\n const open = (item: ToOpen) => {\n setOpeningId(item.deliveryId);\n setOpenFailure(undefined);\n setDone(undefined);\n startTransition(async () => {\n const outcome = await openDelivery(fleetId, item.deliveryId);\n setOpeningId(undefined);\n if (outcome.isOk) {\n const inBasket = item.inBasket ?? null;\n setFocus({ delivery: outcome.value, opened: { job: item.job, isAlert: item.isAlert ?? false, wasNew: item.state !== 'seen' }, inBasket, finished: null });\n setNote(inBasket?.note ?? '');\n setFailure(undefined);\n } else {\n setOpenFailure({ deliveryId: item.deliveryId, message: outcome.message });\n }\n });\n };\n\n /** Opens a question and puts its asker's pick in the basket, with no note, from its row: nothing is sent (CC24). */\n const putPick = (item: ToPut, option: number) => {\n setPuttingId(item.deliveryId);\n setOpenFailure(undefined);\n setDone(undefined);\n startTransition(async () => {\n const outcome = await putPickInBasket({ fleet: fleetId, deliveryId: item.deliveryId, option });\n setPuttingId(undefined);\n if (outcome.isOk) {\n setDone(`Option ${String(option)} is in the basket, not sent: ${item.from} receives it when you send the basket.`);\n setShownTimes((times) => times + 1);\n } else {\n setOpenFailure({ deliveryId: item.deliveryId, message: outcome.message });\n }\n });\n };\n\n const settle = <T,>({ control, action, onSettled }: { control: DeliveryControl; action: () => Promise<ActionOutcome<T>>; onSettled: (value: T) => void }) => {\n setWorking(control);\n setFailure(undefined);\n startTransition(async () => {\n const outcome = await action();\n setWorking(undefined);\n if (outcome.isOk) {\n onSettled(outcome.value);\n } else {\n setFailure(outcome.message);\n }\n });\n };\n\n /** Back to the list, saying what was done. */\n const leave = (said: string) => () => {\n setFocus(undefined);\n setDone(said);\n };\n\n const cardOf = ({ delivery, inBasket, opened, finished }: NonNullable<typeof focus>) => {\n const questionId = delivery.question?.id;\n return (\n <DeliveryCard\n key={delivery.deliveryId}\n delivery={delivery}\n opened={opened}\n meetingHref={delivery.meetingId === undefined ? undefined : meetingPathOf({ fleetId, meetingId: delivery.meetingId })}\n consoleUrl={consoleUrl}\n basketHref={inFleet(BRIDGE_BASKET_PATH, fleetId)}\n inBasket={inBasket}\n finished={finished}\n places={decidePlaces}\n note={note}\n working={working}\n failure={failure}\n onNoteChange={setNote}\n onAnswer={(option) => { settle({ control: option === undefined ? { kind: 'note' } : { kind: 'option', option }, action: () => answerDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId, input: { questionId: delivery.question?.id, option, note } }), onSettled: leave(`Your answer went to ${delivery.from}.`) }); }\n }\n onPut={(option) => { settle({ control: option === null ? { kind: 'note' } : { kind: 'option', option }, action: () => putInBasket({ fleet: fleetId, deliveryId: delivery.deliveryId, option, optionLabel: delivery.question?.options.find(({ key }) => key === option)?.label ?? null, note }), onSettled: (put) => {\n setFocus({ delivery, opened, finished, inBasket: put });\n toasts.add(putToastOf(put.option));\n } }); }}\n onRemove={() => {\n if (questionId !== undefined) {\n settle({ control: { kind: 'remove' }, action: () => removeFromBasket(fleetId, questionId), onSettled: leave(`Your answer to “${delivery.title}” is out of the basket; the question still waits on you.`) });\n }\n }}\n onDone={() => { settle({ control: { kind: 'done' }, action: () => doneDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId }), onSettled: leave(`Done with “${delivery.title}”.`) }); }}\n onFinishStep={(outcome) => {\n settle({\n control: { kind: outcome },\n action: () => doneDelivery({ fleet: fleetId, deliveryId: delivery.deliveryId, step: { outcome, note } }),\n onSettled: () => { setFocus({ delivery, inBasket, opened, finished: { outcome, note: note.trim(), at: new Date().toISOString() } }); },\n });\n }}\n onOpen={(deliveryId) => { open({ deliveryId, job: opened.job }); }}\n onSendMessage={delivery.alertShip === undefined || sendMessage === undefined ? undefined : (alertShip) => { sendMessage({ alertShip }); }}\n onBack={() => { setFocus(undefined); }}\n />\n );\n };\n\n const opened = focus === undefined ? undefined : { deliveryId: focus.delivery.deliveryId, job: focus.opened.job };\n return (\n <ItemSplit\n list={\n <div key={shownTimes} className=\"grid gap-4\">\n {done === undefined ? null : <Notice message={done} isFailure={false} />}\n {children({ open, openingId, putPick, puttingId, failure: openFailure, opened })}\n </div>\n }\n item={focus === undefined ? undefined : cardOf(focus)}\n />\n );\n}\n","'use client';\n\nimport { Dialog } from '@base-ui/react/dialog';\nimport { Toast } from '@base-ui/react/toast';\nimport { createContext, useContext, useRef, useState, useTransition, type ReactNode } from 'react';\n\nimport { readSendTo, sendShipMessage } from '../hooks/bridge-actions';\nimport { keyToSend, sendFailureOf, sentNoticeOf, type LastSend } from '../services/send-message';\nimport { SendMessageForm, type SendPhase, type SendToRead } from '../ui/send-message-form';\nimport { SentToasts } from '../ui/sent-toasts';\n\n/** Opens the form to send a ship a message, with the ship filled in when it opens from an alert. */\ntype OpenSendMessage = (from?: { alertShip: string }) => void;\n\nconst SendMessageContext = createContext<OpenSendMessage | undefined>(undefined);\n\n/** The opener of the form to send a ship a message, where a page offers it. */\nexport function useSendMessage(): OpenSendMessage | undefined {\n return useContext(SendMessageContext);\n}\n\n/** The form as it stands while open. */\ninterface Draft {\n readonly to: string | null;\n readonly isFromAlert: boolean;\n readonly message: string;\n readonly phase: SendPhase;\n}\n\n/**\n * Bridge's form to send a ship a message (aeolus-fleet #1547,\n * send-message.html), for the pages under it to open: from home, or from an\n * opened alert with its ship filled in. Opening reads who the person can\n * send to; Send goes as the person ship and waits until the fleet stored\n * it, then closes with a toast. It opens on what the person fills in first:\n * the ship from home, the message from an alert. A message is not an answer, so it never\n * goes through the basket. Cancel or close keeps nothing. Closed while it\n * sends, the send goes on: stored, the toast says so; failed, the form\n * opens again with the message kept, unless the person opened it anew. A send sent again\n * with the same ship and message carries the same key, so it arrives once.\n */\nfunction SendMessageDialog({ fleetId, children }: { fleetId: string; children: ReactNode }) {\n const [draft, setDraft] = useState<Draft | undefined>();\n const [sendTo, setSendTo] = useState<SendToRead>({ kind: 'reading' });\n const lastSend = useRef<LastSend | null>(null);\n /** How many times the form opened: a send answered after the person opened it anew leaves the new form alone. */\n const openings = useRef(0);\n const [, startTransition] = useTransition();\n const toasts = Toast.useToastManager();\n\n const open: OpenSendMessage = (from) => {\n openings.current += 1;\n lastSend.current = null;\n setDraft({ to: from?.alertShip ?? null, isFromAlert: from !== undefined, message: '', phase: { kind: 'writing' } });\n setSendTo({ kind: 'reading' });\n startTransition(async () => {\n const read = await readSendTo(fleetId);\n setSendTo(read.isOk ? { kind: 'read', value: read.value } : { kind: 'unreadable', message: read.message });\n });\n };\n\n const close = () => {\n setDraft(undefined);\n };\n\n const send = (sending: Draft & { to: string }) => {\n const key = keyToSend({ last: lastSend.current, to: sending.to, message: sending.message, newKey: crypto.randomUUID() });\n lastSend.current = { key, to: sending.to, message: sending.message };\n setDraft({ ...sending, phase: { kind: 'sending' } });\n const opening = openings.current;\n startTransition(async () => {\n const sent = await sendShipMessage({ fleet: fleetId, to: sending.to, payload: sending.message, idempotencyKey: key });\n const isOpenedAnew = openings.current !== opening;\n if (sent.isOk) {\n if (!isOpenedAnew) {\n setDraft(undefined);\n }\n const sentAs = sendTo.kind === 'read' ? sendTo.value.sentAs : 'your person ship';\n toasts.add({ ...sentNoticeOf({ to: sending.to, sentAs, storedAt: sent.value.storedAt }), timeout: 0 });\n } else if (!isOpenedAnew) {\n setDraft({ ...sending, phase: { kind: 'failed', failure: sendFailureOf(sent) } });\n }\n });\n };\n\n return (\n <SendMessageContext value={open}>\n {children}\n <Dialog.Root\n open={draft !== undefined}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n close();\n }\n }}\n >\n <Dialog.Portal>\n <Dialog.Backdrop className=\"fixed inset-0 z-40 bg-(--overlay)\" />\n <Dialog.Popup\n data-testid=\"bridge-send-dialog\"\n aria-label=\"Send a ship a message\"\n initialFocus={() => document.getElementById(draft?.to === null ? 'bridge-send-to' : 'bridge-send-message')}\n className=\"fixed inset-0 z-50 bg-popover text-popover-foreground sm:inset-auto sm:top-[10vh] sm:left-1/2 sm:max-h-[80vh] sm:w-[min(34rem,calc(100vw-2rem))] sm:-translate-x-1/2 sm:overflow-auto sm:rounded-lg sm:border sm:border-border sm:shadow-lg\"\n >\n {draft === undefined ? null : (\n <SendMessageForm\n sendTo={sendTo}\n to={draft.to}\n isFromAlert={draft.isFromAlert}\n message={draft.message}\n phase={draft.phase}\n onPick={(to) => { setDraft({ ...draft, to, isFromAlert: false, phase: { kind: 'writing' } }); }}\n onWrite={(message) => { setDraft({ ...draft, message, phase: draft.phase.kind === 'failed' && draft.phase.failure.kind === 'refused' ? draft.phase : { kind: 'writing' } }); }}\n onSend={() => {\n if (draft.to !== null) {\n send({ ...draft, to: draft.to });\n }\n }}\n onClose={close}\n />\n )}\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n <SentToasts />\n </SendMessageContext>\n );\n}\n\n/** Offers the pages under it the form to send a ship a message, and the toasts it raises once a message is stored. */\nexport function SendMessageProvider({ fleetId, children }: { fleetId: string; children: ReactNode }) {\n return (\n <Toast.Provider>\n <SendMessageDialog fleetId={fleetId}>{children}</SendMessageDialog>\n </Toast.Provider>\n );\n}\n","'use client';\n\nimport { Combobox } from '@base-ui/react/combobox';\nimport { CircleAlert, Info, LoaderCircle, RotateCw, Search, Send, Ship, X } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { BUTTONS } from '../../forms/ui/look';\nimport { STATE_LABELS, type ShipState } from '../fleet/services/your-fleet';\nimport { isSendable, shipsMatching, type SendableShip, type SendFailure } from '../services/send-message';\n\n/** Where the form stands: written in, on its way to the fleet, or failed, kept for the person. */\nexport type SendPhase = { readonly kind: 'writing' } | { readonly kind: 'sending' } | { readonly kind: 'failed'; readonly failure: SendFailure };\n\n/** Who the person can send to, as the form read it on opening: reading, read, or why it could not be read. */\nexport type SendToRead =\n | { readonly kind: 'reading' }\n | { readonly kind: 'read'; readonly value: { readonly sentAs: string; readonly ships: readonly SendableShip[] } }\n | { readonly kind: 'unreadable'; readonly message: string };\n\n/** Each state's tone, as Your fleet colours its word. */\nconst STATE_TONES: Record<ShipState, string> = {\n alert: 'bg-tone-attention-bg text-tone-attention-fg',\n waiting: 'bg-tone-waiting-bg text-tone-waiting-fg',\n working: 'bg-tone-ok-bg text-tone-ok-fg',\n idle: 'bg-tone-ended-bg text-tone-ended-fg',\n};\n\nconst FIELD = 'flex min-h-9 w-full items-center gap-2 rounded-md border border-input bg-background px-2';\n\n/** The ship picked, as a chip with its ship mark, and the button that clears it, on even while the form sends, as drawn. */\nfunction PickedShip({ to, isLocked, onClear, isRefused }: { to: string; isLocked: boolean; onClear: () => void; isRefused: boolean }) {\n return (\n <div data-testid=\"bridge-send-to\" className={`${FIELD} justify-between py-1 ${isLocked ? 'bg-muted' : ''} ${isRefused ? 'border-destructive ring-2 ring-tone-attention-border' : ''}`}>\n <span className=\"inline-flex items-center gap-1.5 rounded-sm border border-border bg-secondary px-1.5 py-0.5 font-mono text-code\">\n <Ship aria-hidden=\"true\" className=\"size-3.5 text-muted-foreground\" />\n {to}\n </span>\n <button type=\"button\" aria-label={`Clear ${to}`} onClick={onClear} className=\"inline-flex size-7 items-center justify-center rounded-md hover:bg-accent disabled:opacity-60\">\n <X aria-hidden=\"true\" className=\"size-4\" />\n </button>\n </div>\n );\n}\n\n/**\n * Picks the ship to send to, filtered as the person types: the ships their\n * person ship may send to. The list opens in the form, under To and at its\n * full width, pushing Message down, as drawn.\n */\nfunction ShipSearch({ sendTo, onPick }: { sendTo: SendToRead; onPick: (to: string) => void }) {\n const [typed, setTyped] = useState('');\n const [isListOpen, setIsListOpen] = useState(false);\n const ships = sendTo.kind === 'read' ? sendTo.value.ships : [];\n return (\n <Combobox.Root\n inline\n open={isListOpen}\n onOpenChange={setIsListOpen}\n items={ships}\n filteredItems={shipsMatching(ships, typed)}\n inputValue={typed}\n onInputValueChange={(value: string) => {\n setTyped(value);\n setIsListOpen(true);\n }}\n itemToStringLabel={(ship: SendableShip) => ship.name}\n value={null}\n onValueChange={(picked: SendableShip | null) => {\n if (picked !== null) {\n onPick(picked.name);\n }\n }}\n autoHighlight\n >\n <div className={`${FIELD} focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/30`}>\n <Search aria-hidden=\"true\" className=\"size-4 text-muted-foreground\" />\n <Combobox.Input id=\"bridge-send-to\" data-testid=\"bridge-send-to-search\" placeholder=\"Search your fleet's ships\" onFocus={() => { setIsListOpen(true); }} className=\"h-9 w-full bg-transparent outline-none\" />\n </div>\n {isListOpen ? (\n <div data-testid=\"bridge-send-ships\" className=\"max-h-72 overflow-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md\">\n <div className=\"px-2 py-1 text-caption text-muted-foreground\">Ships you can send to</div>\n <Combobox.Empty className=\"px-2 py-1 text-muted-foreground\">\n {sendTo.kind === 'reading' ? 'Reading the ships you can send to...' : sendTo.kind === 'unreadable' ? sendTo.message : 'No ship you can send to matches.'}\n </Combobox.Empty>\n <Combobox.List>\n {(ship: SendableShip) => (\n <Combobox.Item key={ship.name} value={ship} className=\"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 data-highlighted:bg-accent\">\n <Ship aria-hidden=\"true\" className=\"size-4 text-muted-foreground\" />\n <span className=\"flex-1\">{ship.name}</span>\n {ship.state === null ? null : <span className={`rounded-sm px-1 text-caption ${STATE_TONES[ship.state]}`}>{STATE_LABELS[ship.state]}</span>}\n </Combobox.Item>\n )}\n </Combobox.List>\n </div>\n ) : null}\n </Combobox.Root>\n );\n}\n\n/** What the form says under the message: sending, or why the last send failed and what the person can do. */\nfunction PhaseLine({ phase }: { phase: SendPhase }) {\n switch (phase.kind) {\n case 'writing':\n return null;\n case 'sending':\n return (\n <p role=\"status\" data-testid=\"bridge-send-sending\" className=\"flex items-center gap-2\">\n <LoaderCircle aria-hidden=\"true\" className=\"size-4 animate-spin text-tone-waiting-fg\" />\n Sending. Bridge waits until the fleet has stored it.\n </p>\n );\n case 'failed':\n return (\n <p role=\"alert\" data-testid=\"bridge-send-failure\" className=\"flex items-start gap-2 text-destructive-text\">\n <CircleAlert aria-hidden=\"true\" className=\"mt-0.5 size-4 shrink-0\" />\n {phase.failure.kind === 'noAnswer' ? 'The fleet did not answer, so it may not be stored. Your message is kept here. Send again: it carries the same key, so it arrives once.' : 'Not sent. Your message is kept here: pick another ship, or cancel.'}\n </p>\n );\n }\n}\n\n/**\n * The form to send a ship a message (send-message.html), inside its dialog:\n * To, the ship picked or searched among those the person ship may send to;\n * the message; and Send, off until both are there. While it sends the form\n * locks. Failed, the message stays: no answer offers Send again, under the\n * same key; a refusal says the fleet's reason under To, for another ship\n * to be picked. Sending locks the message, Cancel and Send only; Close and\n * the clear of the ship stay on, as drawn. The line saying the ship came\n * from the alert goes once a send was tried. On the phone it fills the\n * screen, Send full width.\n */\nexport function SendMessageForm({\n sendTo,\n to,\n isFromAlert,\n message,\n phase,\n onPick,\n onWrite,\n onSend,\n onClose,\n}: {\n sendTo: SendToRead;\n to: string | null;\n /** Whether To was filled in from an opened alert and not changed since. */\n isFromAlert: boolean;\n message: string;\n phase: SendPhase;\n onPick: (to: string | null) => void;\n onWrite: (message: string) => void;\n onSend: () => void;\n onClose: () => void;\n}) {\n const isSending = phase.kind === 'sending';\n const failure = phase.kind === 'failed' ? phase.failure : undefined;\n const isNoAnswer = failure?.kind === 'noAnswer';\n const sentAs = sendTo.kind === 'read' ? sendTo.value.sentAs : undefined;\n const sendLabel = isSending ? (\n <>\n <LoaderCircle aria-hidden=\"true\" className=\"size-4 animate-spin\" />\n Sending...\n </>\n ) : isNoAnswer ? (\n <>\n <RotateCw aria-hidden=\"true\" className=\"size-4\" />\n Send again\n </>\n ) : (\n <>\n <Send aria-hidden=\"true\" className=\"size-4\" />\n Send\n </>\n );\n const isSendOff = isSending || !isSendable({ to, message }) || failure?.kind === 'refused';\n return (\n <form\n data-testid=\"bridge-send-form\"\n className=\"flex h-full flex-col\"\n onSubmit={(event) => {\n event.preventDefault();\n if (!isSendOff) {\n onSend();\n }\n }}\n >\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3 sm:border-0 sm:px-5 sm:pt-5 sm:pb-0\">\n <button type=\"button\" aria-label=\"Close\" onClick={onClose} className=\"inline-flex size-8 items-center justify-center rounded-md hover:bg-accent disabled:opacity-60 sm:order-last sm:ml-auto\">\n <X aria-hidden=\"true\" className=\"size-5\" />\n </button>\n <h2 className=\"text-heading font-semibold\">Send a ship a message</h2>\n </div>\n <div className=\"grid flex-1 content-start gap-4 overflow-auto px-4 py-4 sm:px-5\">\n <div className=\"grid gap-1.5\">\n <label htmlFor=\"bridge-send-to\" className=\"font-semibold\">\n To\n </label>\n {to === null ? (\n <ShipSearch sendTo={sendTo} onPick={onPick} />\n ) : (\n <PickedShip to={to} isLocked={isSending} isRefused={failure?.kind === 'refused'} onClear={() => { onPick(null); }} />\n )}\n {failure?.kind === 'refused' ? (\n <span data-testid=\"bridge-send-refusal\" className=\"text-destructive-text\">\n {failure.reason}\n </span>\n ) : isFromAlert && to !== null && phase.kind === 'writing' ? (\n <span className=\"text-caption text-muted-foreground\">Filled in from the alert; change it if you like.</span>\n ) : null}\n </div>\n <div className=\"grid gap-1.5\">\n <label htmlFor=\"bridge-send-message\" className=\"font-semibold\">\n Message\n </label>\n <textarea\n id=\"bridge-send-message\"\n data-testid=\"bridge-send-message\"\n disabled={isSending}\n rows={5}\n value={message}\n placeholder=\"Write what the ship should know or do.\"\n onChange={(event) => { onWrite(event.target.value); }}\n className=\"min-h-32 rounded-md border border-input bg-background px-3 py-2 disabled:bg-muted disabled:text-muted-foreground\"\n />\n <span className=\"text-caption text-muted-foreground\">Text or Markdown, up to 256 KB.</span>\n </div>\n <PhaseLine phase={phase} />\n </div>\n <div className=\"grid gap-3 border-t border-border px-4 py-3 sm:flex sm:items-center sm:justify-between sm:px-5\">\n <span className=\"flex items-center gap-2 text-caption text-muted-foreground\">\n <Info aria-hidden=\"true\" className=\"size-4\" />\n {sentAs === undefined ? 'Sent as your person ship.' : `Sent as ${sentAs}, your person ship.`}\n </span>\n <div className=\"flex gap-2\">\n <button type=\"button\" disabled={isSending} onClick={onClose} className=\"hidden h-9 items-center rounded-md px-4 font-medium hover:bg-accent disabled:opacity-60 sm:inline-flex\">\n Cancel\n </button>\n <button type=\"submit\" data-testid=\"bridge-send\" disabled={isSendOff} aria-busy={isSending} className={`${BUTTONS.primary} h-11 w-full sm:h-9 sm:w-auto`}>\n {sendLabel}\n </button>\n </div>\n </div>\n </form>\n );\n}\n","/**\n * Your fleet as Bridge shows it (Bridge home, as Harbour draws it,\n * docs/design/fleet-overview): each state's word and tone, each group's\n * name, and Harbour's lead line. Pure view logic, no React and no API client.\n */\nimport type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../../src/adapters/trpc/router.js';\n\n/** Your fleet as the API answers it: the ship count, how many are in each state, and the tiles by group. */\nexport type YourFleet = inferRouterOutputs<GatewayRouter>['people']['yourFleet'];\n\nexport type FleetGroup = YourFleet['groups'][number]['group'];\n\nexport type ShipState = keyof YourFleet['counts'];\n\nexport type FleetTile = YourFleet['groups'][number]['tiles'][number];\n\n/** The states in the order the numbers show them. */\nexport const SHIP_STATES: readonly ShipState[] = ['alert', 'waiting', 'working', 'idle'];\n\nexport const STATE_LABELS: Record<ShipState, string> = { alert: 'Alert', waiting: 'Waiting', working: 'Working', idle: 'Idle' };\n\nexport const GROUP_LABELS: Record<FleetGroup, string> = { people: 'People', agents: 'Agents', plugins: 'Plugins', throughTheGateway: 'Through the gateway' };\n\n/** Harbour's lead line words each state so; working and idle first, as most ships are. */\nconst SUMMARY_PARTS: readonly { state: ShipState; words: string }[] = [\n { state: 'working', words: 'working' },\n { state: 'idle', words: 'idle' },\n { state: 'waiting', words: 'waiting' },\n { state: 'alert', words: 'with an alert' },\n];\n\n/** How many ships, in words: \"1 ship\", \"15 ships\". */\nexport function shipsOf(count: number): string {\n return `${String(count)} ${count === 1 ? 'ship' : 'ships'}`;\n}\n\n/** Harbour's lead line: the ships, then how many are in each state any ship is in. */\nexport function summaryOf(fleet: YourFleet): string {\n if (fleet.shipCount === 0) {\n return 'No ships';\n }\n const parts = SUMMARY_PARTS.filter(({ state }) => fleet.counts[state] > 0).map(({ state, words }) => `${String(fleet.counts[state])} ${words}`);\n return `${shipsOf(fleet.shipCount)}: ${parts.join(', ')}`;\n}\n","'use client';\n\nimport { Toast } from '@base-ui/react/toast';\nimport { CircleCheck, X } from 'lucide-react';\n\n/** The toasts the form raised, each saying a message was sent and stored. */\nexport function SentToasts() {\n const { toasts } = Toast.useToastManager();\n return (\n <Toast.Portal>\n <Toast.Viewport className=\"fixed right-4 bottom-4 z-50 grid w-[min(24rem,calc(100vw-2rem))] gap-2\">\n {toasts.map((toast) => (\n <Toast.Root key={toast.id} toast={toast} data-testid=\"bridge-send-toast\" className=\"rounded-lg border border-border bg-popover px-4 py-3 text-popover-foreground shadow-lg\">\n <Toast.Content className=\"flex items-start gap-3\">\n <CircleCheck aria-hidden=\"true\" className=\"mt-0.5 size-4 shrink-0 text-tone-ok-fg\" />\n <div className=\"grid flex-1 gap-1\">\n <Toast.Title className=\"font-semibold\" />\n <Toast.Description className=\"text-muted-foreground\" />\n </div>\n <Toast.Close aria-label=\"Close\" className=\"inline-flex size-7 items-center justify-center rounded-md hover:bg-accent\">\n <X aria-hidden=\"true\" className=\"size-4\" />\n </Toast.Close>\n </Toast.Content>\n </Toast.Root>\n ))}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n","'use client';\n\nimport { Toast } from '@base-ui/react/toast';\nimport { ShoppingBasket } from 'lucide-react';\n\n/** What a toast says: what happened, then what it means. */\nexport interface ToastWords {\n readonly title: string;\n readonly description: string;\n}\n\n/** What the toast says once an answer is in the basket (basket.html): what went in, not sent, still waiting. */\nexport function putToastOf(option: number | null): ToastWords {\n return { title: option === null ? 'Your note alone in the basket' : `Option ${String(option)} in the basket`, description: 'Not sent. Still waiting on you until you send it.' };\n}\n\n/** The toasts Bridge raised for the basket, each behind the basket icon, on the popover, gone by themselves: at the left on a desktop and none on a phone, as basket.html draws them. */\nexport function BasketToasts() {\n const { toasts } = Toast.useToastManager();\n return (\n <Toast.Portal>\n <Toast.Viewport className=\"fixed bottom-4 left-4 z-50 hidden w-[min(24rem,calc(100vw-2rem))] gap-2 sm:grid\">\n {toasts.map((toast) => (\n <Toast.Root key={toast.id} toast={toast} data-testid=\"bridge-basket-toast\" className=\"flex items-start gap-3 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-lg\">\n <ShoppingBasket aria-hidden className=\"mt-0.5 size-4 shrink-0\" />\n <Toast.Content className=\"grid flex-1 gap-1\">\n <Toast.Title className=\"font-medium\" />\n <Toast.Description className=\"text-caption text-muted-foreground\" />\n </Toast.Content>\n </Toast.Root>\n ))}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"400284782d121950f35e1ce856d3d8f0158fbb10f4\":{\"name\":\"readSendTo\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_8=/*#__PURE__*/createServerReference(\"400284782d121950f35e1ce856d3d8f0158fbb10f4\",callServer,void 0,findSourceMapURL,\"readSendTo\");export{$$RSC_SERVER_ACTION_8 as readSendTo};","/* __next_internal_action_entry_do_not_use__ [{\"4000cf62bc21b02b0dec545692328f576b09e289a7\":{\"name\":\"sendShipMessage\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_9=/*#__PURE__*/createServerReference(\"4000cf62bc21b02b0dec545692328f576b09e289a7\",callServer,void 0,findSourceMapURL,\"sendShipMessage\");export{$$RSC_SERVER_ACTION_9 as sendShipMessage};","/**\n * Bridge's form to send a ship a message (aeolus-fleet #1547,\n * send-message.html): which ships it offers, when Send is on, the key a\n * send carries, why one failed, what the toast says once the fleet stored\n * it, and the ship an opened alert is about. Pure view logic, no React and\n * no API client.\n */\nimport { ALERT_CONTENT_TYPE } from '@aeolus-fleet/common';\nimport type { inferRouterOutputs } from '@trpc/server';\nimport { z } from 'zod';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport { SHIP_STATES, type ShipState, type YourFleet } from '../fleet/services/your-fleet';\n\n/** Who the person can send a message to, as the API answers it: the ships their person ship may send to now, and the name it sends as. */\nexport type SendTo = inferRouterOutputs<GatewayRouter>['people']['sendTo'];\n\n/** A ship the form offers: by name, with its state as Your fleet shows it, none where Your fleet does not show the ship. */\nexport interface SendableShip {\n readonly name: string;\n readonly state: ShipState | null;\n}\n\n/**\n * The ships the person ship may send to, each in its state as Your fleet\n * shows it, in Your fleet's order: alerts first, then waiting, working and\n * idle, ties by name; a ship Your fleet does not show, or every ship when it\n * could not be read, comes after, with no state.\n */\nexport function sendableShipsOf(ships: readonly string[], fleet: YourFleet | undefined): readonly SendableShip[] {\n const states = new Map((fleet?.groups ?? []).flatMap(({ tiles }) => tiles.map(({ name, state }) => [name, state] as const)));\n const rank = (state: ShipState | null) => (state === null ? SHIP_STATES.length : SHIP_STATES.indexOf(state));\n return ships\n .map((name) => ({ name, state: states.get(name) ?? null }))\n .toSorted((one, other) => rank(one.state) - rank(other.state) || one.name.localeCompare(other.name));\n}\n\n/** The ships whose name holds what the person typed, whatever its case; every ship while nothing is typed. */\nexport function shipsMatching(ships: readonly SendableShip[], typed: string): readonly SendableShip[] {\n const sought = typed.trim().toLowerCase();\n return sought === '' ? ships : ships.filter(({ name }) => name.toLowerCase().includes(sought));\n}\n\n/** Send is on once a ship is picked and something is written. */\nexport function isSendable({ to, message }: { to: string | null; message: string }): boolean {\n return to !== null && message.trim() !== '';\n}\n\n/** A send the form made: its key, and the ship and message it carried. */\nexport interface LastSend {\n readonly key: string;\n readonly to: string;\n readonly message: string;\n}\n\n/**\n * The key a send carries: the last send's again while the ship and the\n * message are the same, so a message sent again arrives once; a new one\n * otherwise, as a changed message is a new message.\n */\nexport function keyToSend({ last, to, message, newKey }: { last: LastSend | null; to: string; message: string; newKey: string }): string {\n return last !== null && last.to === to && last.message === message ? last.key : newKey;\n}\n\n/** Why a send failed: the fleet refused it, in its own words, or no answer came, so it may be stored. */\nexport type SendFailure = { readonly kind: 'refused'; readonly reason: string } | { readonly kind: 'noAnswer' };\n\n/** The API's codes for a send the fleet refused: its reason is the person's to read. */\nconst REFUSED_CODES = new Set(['BAD_REQUEST', 'FORBIDDEN']);\n\n/** A refusal when the fleet refused the send; no answer for anything else, as the message may be stored. */\nexport function sendFailureOf({ code, message }: { code?: string | undefined; message: string }): SendFailure {\n return code !== undefined && REFUSED_CODES.has(code) ? { kind: 'refused', reason: message } : { kind: 'noAnswer' };\n}\n\n/** Where a time shows to the minute in an ISO 8601 time: hours and minutes, in UTC. */\nconst MINUTE = { start: 11, end: 16 } as const;\n\n/** What the toast says once the fleet stored the message: to whom, when in UTC as every Bridge time, and as which person ship. */\nexport function sentNoticeOf({ to, sentAs, storedAt }: { to: string; sentAs: string; storedAt: string }): { title: string; description: string } {\n return {\n title: `Sent to ${to}`,\n description: `Stored by the fleet at ${new Date(storedAt).toISOString().slice(MINUTE.start, MINUTE.end)} UTC, sent as ${sentAs}. ${to} receives it when it next looks.`,\n };\n}\n\n/** What Bridge reads of an alert to send its ship a message: the ship, by name. */\nconst alertShipSchema = z.object({ ship: z.object({ name: z.string().min(1) }) });\n\n/** The ship an alert is about, by name; none for any other message, or an alert whose payload does not read. */\nexport function alertShipOf(opened: { contentType: string; payload: string }): string | undefined {\n const [essence = ''] = opened.contentType.split(';');\n if (essence.trim().toLowerCase() !== ALERT_CONTENT_TYPE) {\n return undefined;\n }\n try {\n return alertShipSchema.safeParse(JSON.parse(opened.payload)).data?.ship.name;\n } catch {\n return undefined;\n }\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'rotate-cw',\n size: 24,\n node: [\n ['path', { d: 'M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8', key: '1p45f6' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name RotateCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/rotate-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RotateCw = createLucideIcon(__iconData);\n\nexport default RotateCw;\n","/** Where a meeting's page is, for server and client code alike. */\n\n/** The meeting page's address, before the meeting's id. */\nexport const MEETINGS_PATH = '/meetings';\n\n/** The address of a meeting's page in a fleet, at the page of contributions after the cursor, if one is given. */\nexport function meetingPathOf(meeting: { fleetId: string; meetingId: string; cursor?: string }): string {\n const query = new URLSearchParams({ fleet: meeting.fleetId, ...(meeting.cursor === undefined ? {} : { cursor: meeting.cursor }) });\n return `${MEETINGS_PATH}/${encodeURIComponent(meeting.meetingId)}?${query.toString()}`;\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4001ea780db1ead1cb2c7ef9e012482be9e1166c90\":{\"name\":\"answerDelivery\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_2=/*#__PURE__*/createServerReference(\"4001ea780db1ead1cb2c7ef9e012482be9e1166c90\",callServer,void 0,findSourceMapURL,\"answerDelivery\");export{$$RSC_SERVER_ACTION_2 as answerDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"406cdc77dbf870c019aab6c37c746129540f7344b4\":{\"name\":\"doneDelivery\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_7=/*#__PURE__*/createServerReference(\"406cdc77dbf870c019aab6c37c746129540f7344b4\",callServer,void 0,findSourceMapURL,\"doneDelivery\");export{$$RSC_SERVER_ACTION_7 as doneDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"60a206312560da7e8d3118b69c571db7006f3401ec\":{\"name\":\"openDelivery\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"60a206312560da7e8d3118b69c571db7006f3401ec\",callServer,void 0,findSourceMapURL,\"openDelivery\");export{$$RSC_SERVER_ACTION_1 as openDelivery};","/* __next_internal_action_entry_do_not_use__ [{\"409fc33bee7fa9990c372a16941b80a35aef4a2974\":{\"name\":\"putInBasket\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"409fc33bee7fa9990c372a16941b80a35aef4a2974\",callServer,void 0,findSourceMapURL,\"putInBasket\");export{$$RSC_SERVER_ACTION_3 as putInBasket};","/* __next_internal_action_entry_do_not_use__ [{\"40c4bdf099ebf75c7f472730d1a2313320401d4ebd\":{\"name\":\"putPickInBasket\"}},\"web/features/bridge/hooks/bridge-actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_4=/*#__PURE__*/createServerReference(\"40c4bdf099ebf75c7f472730d1a2313320401d4ebd\",callServer,void 0,findSourceMapURL,\"putPickInBasket\");export{$$RSC_SERVER_ACTION_4 as putPickInBasket};"],"names":["$$RSC_SERVER_ACTION_5","SHIP_STATES","STATE_LABELS","alert","waiting","working","idle","GROUP_LABELS","people","agents","plugins","throughTheGateway","SUMMARY_PARTS","state","words","shipsOf","count","String","summaryOf","fleet","shipCount","parts","filter","counts","map","join","MEETINGS_PATH","meetingPathOf","meeting","query","URLSearchParams","fleetId","cursor","undefined","encodeURIComponent","meetingId","toString"],"mappings":"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","ignoreList":[10]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
(()=>{"use strict";module.exports=[13095,(a,b,c)=>{function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`)}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},37936,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},82110,a=>{var b=a.i(70043);a.S([b,"
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`)}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},37936,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(11857)},82110,a=>{var b=a.i(70043);a.S([b,"40ca8029b8207bd47293950b98bdbd89c6c994c5fa,f"],82110)},70043,a=>{var b=a.i(37936),c=a.i(5246),d=a.i(67591);async function e(a){(0,d.x)(a)&&(await (0,c.cookies)()).set(d.g,a,{path:"/",sameSite:"lax",maxAge:31536e3})}(0,a.i(13095).ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"40ca8029b8207bd47293950b98bdbd89c6c994c5fa",null),a.s(["f",0,e])}]})();
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=_0xickgbbju_9-._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../web/.next-internal/server/app/authorize/waiting/approval/page/actions.js%20%28server%20actions%20loader%29","../../../../../web/features/frame/actions.ts"],"sourcesContent":["// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","export {setTheme as '
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../web/.next-internal/server/app/authorize/waiting/approval/page/actions.js%20%28server%20actions%20loader%29","../../../../../web/features/frame/actions.ts"],"sourcesContent":["// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","export {setTheme as '40ca8029b8207bd47293950b98bdbd89c6c994c5fa'} from 'ACTIONS_MODULE0'\n","'use server';\n\n/** The header's theme choice, kept for this browser for a year. */\nimport { cookies } from 'next/headers';\n\nimport { isTheme, THEME_COOKIE } from './theme';\n\nconst YEAR_SECONDS = 365 * 24 * 60 * 60;\n\nexport async function setTheme(theme: unknown): Promise<void> {\n if (!isTheme(theme)) {\n return;\n }\n (await cookies()).set(THEME_COOKIE, theme, { path: '/', sameSite: 'lax', maxAge: YEAR_SECONDS });\n}\n"],"names":["ensureServerEntryExports","actions","i","length","action","Error","registerServerReference","YEAR_SECONDS","setTheme","theme","set","path","sameSite","maxAge"],"mappings":"mDAGO,SAASA,EAAyBC,CAAc,EACrD,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQE,MAAM,CAAED,IAAK,CACvC,IAAME,EAASH,CAAO,CAACC,EAAE,CACzB,GAAsB,YAAlB,AAA8B,OAAvBE,EACT,MAAUC,AAAJ,MACJ,CAAC,2DAA2D,EAAE,OAAOD,EAAO;AAAA,oEAAuE,CAAC,CAG1J,CACF,0EATgBJ,2BAAAA,qCAAAA,sBCHoC,OAAA,cAAA,CAAA,EAAA,aAAA,oCAC3CM,0BAAAA,qCAAAA,EAAAA,uBAAuB,YAAQ,CAAA,CAAA,IAAA,cCDxC,IAAA,EAAA,EAAA,CAAA,CAAA,iGCGA,EAAA,EAAA,CAAA,CAAA,MAEA,EAAA,EAAA,CAAA,CAAA,OAIO,eAAeE,EAASC,CAAc,EACtC,CAAA,EAAA,EAAA,CAAA,AAAO,EAACA,IAGb,CAAC,GAHoB,GAGd,CAAA,EAAA,EAAA,OAAA,AAAO,GAAA,CAAE,CAAEC,GAAG,CAAC,EAAA,CAAY,CAAED,EAAO,CAAEE,KAAM,IAAKC,SAAU,MAAOC,OANtD,CAM8DN,KANxD,CAMqE,EAChG,EAPgC,KAAK,mCAEfC,IAAAA,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA","ignoreList":[0,1]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[53116,a=>{var b=a.i(72131),c=a.i(35112),d=a.i(54098),e=a.i(87924);let f=b.forwardRef(function(a,f){let{children:g,container:h,className:i,render:j,style:k,...l}=a,{node:m,subtree:n}=(0,d.o)({container:h,ref:f,componentProps:a,elementProps:l});return n||m?(0,e.jsxs)(b.Fragment,{children:[n,m&&c.createPortal(g,m)]}):null});a.s(["f",0,f])},69789,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},919,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("40ca8029b8207bd47293950b98bdbd89c6c994c5fa",d.callServer,void 0,d.findSourceMapURL,"setTheme"),f=["light","dark","system"];a.s(["f",0,function({email:a,accountUrl:d,theme:g,entries:h=[]}){let[i,j]=(0,c.useState)(g),[k,l]=(0,c.useState)(!1),m=(0,c.useRef)(null);return{account:{name:a,signedInAs:"account",accountUrl:d,theme:i,themes:f,hasTheme:!0,onThemeChange:a=>{let b;j(a),document.documentElement.dataset.theme=a,b="dark"===a||"system"===a&&window.matchMedia("(prefers-color-scheme: dark)").matches,document.documentElement.classList.toggle("dark",b),e(a)},shortcuts:[],helpUrl:"https://github.com/ThomasHendrickx/aeolus-fleet",onSignOut:()=>{l(!0),m.current?.requestSubmit()},isSigningOut:k,entries:h},signOutForm:(0,b.jsx)("form",{ref:m,method:"post",action:"/sign-in/end",hidden:!0})}}],919)},48242,a=>{let b="/outside-parties";a.s(["$",0,b,"N",0,function(a,c){return`${b}/${encodeURIComponent(a)}${void 0===c?"":`/${c}`}`}])},25959,a=>{a.s(["f",0,function(a,b){let[c="",d=""]=a.split("?"),e=new URLSearchParams(d);return e.set("fleet",b),`${c}?${e.toString()}`}])}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_0yhvyj-yts7qi._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/%40base-ui/react/utils/FloatingPortalLite.mjs","../../../../../node_modules/next/src/client/components/server-async-storage.ts","../../../../../web/features/frame/hooks/use-account-menu.tsx","../../../../../web/features/frame/data%3A5ef672%20%3Ctext/javascript%3E","../../../../../web/features/frame/theme.ts","../../../../../web/features/outside-parties/paths.ts","../../../../../web/lib/gateway-api/page-account.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useFloatingPortalNode } from \"../floating-ui-react/components/FloatingPortal.mjs\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * `FloatingPortal` includes tabbable logic handling for focus management.\n * For components that don't need tabbable logic, use `FloatingPortalLite`.\n * @internal\n */\nexport const FloatingPortalLite = /*#__PURE__*/React.forwardRef(function FloatingPortalLite(componentProps, forwardedRef) {\n const {\n children,\n container,\n className,\n render,\n style,\n ...elementProps\n } = componentProps;\n const {\n node: portalNode,\n subtree: portalSubtree\n } = useFloatingPortalNode({\n container,\n ref: forwardedRef,\n componentProps,\n elementProps\n });\n if (!portalSubtree && !portalNode) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [portalSubtree, portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode)]\n });\n});\nif (process.env.NODE_ENV !== \"production\") FloatingPortalLite.displayName = \"FloatingPortalLite\";","// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n","'use client';\n\nimport type { Theme } from '@aeolus-fleet/common';\nimport type { AvatarMenuEntry, AvatarMenuProps } from '@aeolus-fleet/ui';\nimport { useRef, useState, type ReactNode } from 'react';\n\nimport { setTheme } from '../actions';\nimport { THEMES } from '../theme';\n\n/** Where the avatar menu's Help leads, as in the console. */\nconst HELP_URL = 'https://github.com/ThomasHendrickx/aeolus-fleet';\n\n/** The gateway's server ends the shared sign-in here, in every app at once, for a form sent from its own pages. */\nconst SIGN_OUT_PATH = '/sign-in/end';\n\n/** Applies a theme at once, as the root layout's script does on the next load. */\nfunction applyTheme(theme: Theme): void {\n document.documentElement.dataset.theme = theme;\n const isDark = theme === 'dark' || (theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches);\n document.documentElement.classList.toggle('dark', isDark);\n}\n\nexport interface AccountMenuOf {\n readonly email: string;\n /** Account's address, for the avatar menu's Your account, Your rights and Email updates. */\n readonly accountUrl: string | undefined;\n readonly theme: Theme;\n /** The page's own entries, such as the phone's for what its tab bar lacks. */\n readonly entries?: readonly AvatarMenuEntry[];\n}\n\n/**\n * The avatar menu of the account signed in (header design H8): its theme,\n * applied at once and kept, and sign out, which ends the shared sign-in in\n * every app and says \"Signing out\" until the page leaves. The form that\n * signs out goes on the page beside the menu.\n */\nexport function useAccountMenu({ email, accountUrl, theme, entries = [] }: AccountMenuOf): { account: AvatarMenuProps; signOutForm: ReactNode } {\n const [shownTheme, setShownTheme] = useState(theme);\n const [isSigningOut, setIsSigningOut] = useState(false);\n const form = useRef<HTMLFormElement>(null);\n const account: AvatarMenuProps = {\n name: email,\n signedInAs: 'account',\n accountUrl,\n theme: shownTheme,\n themes: THEMES,\n hasTheme: true,\n onThemeChange: (next) => {\n setShownTheme(next);\n applyTheme(next);\n void setTheme(next);\n },\n shortcuts: [],\n helpUrl: HELP_URL,\n onSignOut: () => {\n setIsSigningOut(true);\n form.current?.requestSubmit();\n },\n isSigningOut,\n entries,\n };\n return { account, signOutForm: <form ref={form} method=\"post\" action={SIGN_OUT_PATH} hidden /> };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40ca8029b8207bd47293950b98bdbd89c6c994c5fa\":{\"name\":\"setTheme\"}},\"web/features/frame/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40ca8029b8207bd47293950b98bdbd89c6c994c5fa\",callServer,void 0,findSourceMapURL,\"setTheme\");export{$$RSC_SERVER_ACTION_0 as setTheme};","/**\n * The theme this browser chose for the gateway's pages (header design H13:\n * each app keeps its own), System until chosen.\n */\nimport type { Theme } from '@aeolus-fleet/common';\n\n/** The themes, as common names them: written here so the header's browser code loads no schema (decision 0033). */\nexport const THEMES: readonly Theme[] = ['light', 'dark', 'system'];\n\n/** The cookie that keeps it. */\nexport const THEME_COOKIE = 'aeolus_gateway_theme';\n\nexport function isTheme(value: unknown): value is Theme {\n return THEMES.some((theme) => theme === value);\n}\n\n/** The theme a cookie names, or System. */\nexport function themeFrom(value: string | undefined): Theme {\n return isTheme(value) ? value : 'system';\n}\n","/** The outside parties' pages. */\nexport const OUTSIDE_PARTIES_PATH = '/outside-parties';\n\nexport const ADD_SERVER_PATH = `${OUTSIDE_PARTIES_PATH}/add`;\n\nexport const ADD_A2A_CLIENT_PATH = `${OUTSIDE_PARTIES_PATH}/add-a2a-client`;\n\nexport const ADD_A2A_AGENT_PATH = `${OUTSIDE_PARTIES_PATH}/add-a2a-agent`;\n\n/** One outside party's page, or one of its own: changing it, retiring it. */\nexport function partyPath(name: string, action?: 'change' | 'retire'): string {\n return `${OUTSIDE_PARTIES_PATH}/${encodeURIComponent(name)}${action === undefined ? '' : `/${action}`}`;\n}\n","/**\n * What a page of the web app does with the API's account.inView (header\n * design H5, H9): show its fleet as the account signed in, or send the\n * browser where it may go: the same page in the fleet the account may open,\n * the app it may open there, or sign-in and back to the page. Where the\n * gateway is off for the account's fleet, the page says so instead.\n */\n\n/** The API's answer to account.inView. */\nexport type InView =\n | { kind: 'signedIn'; fleetId: string; accountId: string; scopes: string[] }\n | { kind: 'goTo'; fleetId: string }\n | { kind: 'off'; fleetName: string; accountUrl: string }\n | { kind: 'elsewhere'; url: string };\n\n/** The API's refusals of account.inView a page answers: signed in to no account, and no shared sign-in at this gateway. */\nexport type InViewRefusal = 'UNAUTHORIZED' | 'NOT_FOUND';\n\nexport type PageAccount =\n | { kind: 'signedIn'; fleetId: string; scopes: readonly string[] }\n | { kind: 'goTo'; location: string }\n | { kind: 'off'; fleetName: string; accountUrl: string }\n | { kind: 'noSignIn' };\n\nconst SIGN_IN_START = '/sign-in/start';\n\n/** The parameter a page names its fleet by. */\nexport const FLEET_PARAMETER = 'fleet';\n\n/** A page of the web app in a fleet: every link keeps the fleet in its address. */\nexport function inFleet(page: string, fleetId: string): string {\n const [path = '', query = ''] = page.split('?');\n const parameters = new URLSearchParams(query);\n parameters.set(FLEET_PARAMETER, fleetId);\n return `${path}?${parameters.toString()}`;\n}\n\n/** Reads the answer for the page asked for, its path and query as the browser sent them. */\nexport function pageAccountOf(read: { inView: InView } | { refusal: InViewRefusal }, page: string): PageAccount {\n if ('refusal' in read) {\n return read.refusal === 'UNAUTHORIZED' ? { kind: 'goTo', location: `${SIGN_IN_START}?${new URLSearchParams({ return_to: page }).toString()}` } : { kind: 'noSignIn' };\n }\n const { inView } = read;\n switch (inView.kind) {\n case 'signedIn':\n return { kind: 'signedIn', fleetId: inView.fleetId, scopes: inView.scopes };\n case 'goTo':\n return { kind: 'goTo', location: inFleet(page, inView.fleetId) };\n case 'off':\n return inView;\n case 'elsewhere':\n return { kind: 'goTo', location: inView.url };\n }\n}\n"],"names":["FloatingPortalLite","componentProps","forwardedRef","children","container","className","render","style","elementProps","node","portalNode","subtree","portalSubtree","ref","actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage","$$RSC_SERVER_ACTION_0","OUTSIDE_PARTIES_PATH","ADD_SERVER_PATH","ADD_A2A_CLIENT_PATH","ADD_A2A_AGENT_PATH","partyPath","name","action","encodeURIComponent","undefined","SIGN_IN_START","FLEET_PARAMETER","inFleet","page","fleetId","path","query","split","parameters","URLSearchParams","set","toString","pageAccountOf","read","refusal","kind","location","return_to","inView","scopes","url"],"mappings":"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","ignoreList":[0,1]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[53116,a=>{var b=a.i(72131),c=a.i(35112),d=a.i(54098),e=a.i(87924);let f=b.forwardRef(function(a,f){let{children:g,container:h,className:i,render:j,style:k,...l}=a,{node:m,subtree:n}=(0,d.o)({container:h,ref:f,componentProps:a,elementProps:l});return n||m?(0,e.jsxs)(b.Fragment,{children:[n,m&&c.createPortal(g,m)]}):null});a.s(["f",0,f])},69789,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},32043,a=>{var b=a.i(87924);let c={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent",ghost:"text-foreground hover:bg-accent"},d={regular:"h-9 gap-2 px-4",row:"h-9 gap-2 px-4 text-body sm:h-6 sm:gap-1.5 sm:px-2.5 sm:text-meta",small:"h-8 gap-2 px-3 text-meta",xs:"h-7 gap-1.5 px-2.5 text-caption font-medium"};a.s(["i",0,function({isPending:a,pendingLabel:e,variant:f="secondary",size:g="regular",children:h,className:i="",disabled:j,...k}){return(0,b.jsx)("button",{...k,disabled:!0===j||a,"aria-busy":a,className:`inline-flex items-center rounded-md disabled:cursor-not-allowed disabled:opacity-70 ${d[g]} ${c[f]} ${i}`,children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),e]}):h})},"o",0,d])},10039,a=>{var b=a.i(87924);a.s(["f",0,function({message:a,isFailure:c}){return c?(0,b.jsx)("p",{role:"alert","data-testid":"bridge-failure",className:"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg",children:a}):(0,b.jsx)("p",{role:"status","data-testid":"bridge-success",className:"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg",children:a})}])},919,a=>{var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("40ca8029b8207bd47293950b98bdbd89c6c994c5fa",d.callServer,void 0,d.findSourceMapURL,"setTheme"),f=["light","dark","system"];a.s(["f",0,function({email:a,accountUrl:d,theme:g,entries:h=[]}){let[i,j]=(0,c.useState)(g),[k,l]=(0,c.useState)(!1),m=(0,c.useRef)(null);return{account:{name:a,signedInAs:"account",accountUrl:d,theme:i,themes:f,hasTheme:!0,onThemeChange:a=>{let b;j(a),document.documentElement.dataset.theme=a,b="dark"===a||"system"===a&&window.matchMedia("(prefers-color-scheme: dark)").matches,document.documentElement.classList.toggle("dark",b),e(a)},shortcuts:[],helpUrl:"https://github.com/ThomasHendrickx/aeolus-fleet",onSignOut:()=>{l(!0),m.current?.requestSubmit()},isSigningOut:k,entries:h},signOutForm:(0,b.jsx)("form",{ref:m,method:"post",action:"/sign-in/end",hidden:!0})}}],919)},48242,a=>{let b="/outside-parties";a.s(["$",0,b,"N",0,function(a,c){return`${b}/${encodeURIComponent(a)}${void 0===c?"":`/${c}`}`}])},25959,a=>{a.s(["f",0,function(a,b){let[c="",d=""]=a.split("?"),e=new URLSearchParams(d);return e.set("fleet",b),`${c}?${e.toString()}`}])}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_104ilzyn58zw_._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/%40base-ui/react/utils/FloatingPortalLite.mjs","../../../../../node_modules/next/src/client/components/server-async-storage.ts","../../../../../web/features/bridge/ui/action-button.tsx","../../../../../web/features/bridge/ui/notice.tsx","../../../../../web/features/frame/hooks/use-account-menu.tsx","../../../../../web/features/frame/data%3A5ef672%20%3Ctext/javascript%3E","../../../../../web/features/frame/theme.ts","../../../../../web/features/outside-parties/paths.ts","../../../../../web/lib/gateway-api/page-account.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useFloatingPortalNode } from \"../floating-ui-react/components/FloatingPortal.mjs\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * `FloatingPortal` includes tabbable logic handling for focus management.\n * For components that don't need tabbable logic, use `FloatingPortalLite`.\n * @internal\n */\nexport const FloatingPortalLite = /*#__PURE__*/React.forwardRef(function FloatingPortalLite(componentProps, forwardedRef) {\n const {\n children,\n container,\n className,\n render,\n style,\n ...elementProps\n } = componentProps;\n const {\n node: portalNode,\n subtree: portalSubtree\n } = useFloatingPortalNode({\n container,\n ref: forwardedRef,\n componentProps,\n elementProps\n });\n if (!portalSubtree && !portalNode) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [portalSubtree, portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode)]\n });\n});\nif (process.env.NODE_ENV !== \"production\") FloatingPortalLite.displayName = \"FloatingPortalLite\";","// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n","import type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nconst VARIANTS = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'border border-border bg-card text-card-foreground hover:bg-accent',\n ghost: 'text-foreground hover:bg-accent',\n} as const;\n\n/** A row's buttons are small on a desktop, and a thumb's size on a phone (Bridge mockups, home). */\nexport const SIZES = {\n regular: 'h-9 gap-2 px-4',\n row: 'h-9 gap-2 px-4 text-body sm:h-6 sm:gap-1.5 sm:px-2.5 sm:text-meta',\n /** A basket entry's buttons (basket.html). */\n small: 'h-8 gap-2 px-3 text-meta',\n /** A place card's one action (routing.html). */\n xs: 'h-7 gap-1.5 px-2.5 text-caption font-medium',\n} as const;\n\n/**\n * A button for an action: the moment it is pressed and until the answer\n * comes, it shows a spinner and its working label, and cannot run twice.\n */\nexport function ActionButton({\n isPending,\n pendingLabel,\n variant = 'secondary',\n size = 'regular',\n children,\n className = '',\n disabled,\n ...button\n}: ButtonHTMLAttributes<HTMLButtonElement> & { isPending: boolean; pendingLabel: string; variant?: keyof typeof VARIANTS; size?: keyof typeof SIZES; children: ReactNode }) {\n return (\n <button\n {...button}\n disabled={disabled === true || isPending}\n aria-busy={isPending}\n className={`inline-flex items-center rounded-md disabled:cursor-not-allowed disabled:opacity-70 ${SIZES[size]} ${VARIANTS[variant]} ${className}`}\n >\n {isPending ? (\n <>\n <span aria-hidden=\"true\" className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {pendingLabel}\n </>\n ) : (\n children\n )}\n </button>\n );\n}\n","/** What an action came to, said in place: a success as a status, a failure as an alert by the control. */\nexport function Notice({ message, isFailure }: { message: string; isFailure: boolean }) {\n return isFailure ? (\n <p role=\"alert\" data-testid=\"bridge-failure\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\">\n {message}\n </p>\n ) : (\n <p role=\"status\" data-testid=\"bridge-success\" className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-3 py-2 text-tone-ok-fg\">\n {message}\n </p>\n );\n}\n","'use client';\n\nimport type { Theme } from '@aeolus-fleet/common';\nimport type { AvatarMenuEntry, AvatarMenuProps } from '@aeolus-fleet/ui';\nimport { useRef, useState, type ReactNode } from 'react';\n\nimport { setTheme } from '../actions';\nimport { THEMES } from '../theme';\n\n/** Where the avatar menu's Help leads, as in the console. */\nconst HELP_URL = 'https://github.com/ThomasHendrickx/aeolus-fleet';\n\n/** The gateway's server ends the shared sign-in here, in every app at once, for a form sent from its own pages. */\nconst SIGN_OUT_PATH = '/sign-in/end';\n\n/** Applies a theme at once, as the root layout's script does on the next load. */\nfunction applyTheme(theme: Theme): void {\n document.documentElement.dataset.theme = theme;\n const isDark = theme === 'dark' || (theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches);\n document.documentElement.classList.toggle('dark', isDark);\n}\n\nexport interface AccountMenuOf {\n readonly email: string;\n /** Account's address, for the avatar menu's Your account, Your rights and Email updates. */\n readonly accountUrl: string | undefined;\n readonly theme: Theme;\n /** The page's own entries, such as the phone's for what its tab bar lacks. */\n readonly entries?: readonly AvatarMenuEntry[];\n}\n\n/**\n * The avatar menu of the account signed in (header design H8): its theme,\n * applied at once and kept, and sign out, which ends the shared sign-in in\n * every app and says \"Signing out\" until the page leaves. The form that\n * signs out goes on the page beside the menu.\n */\nexport function useAccountMenu({ email, accountUrl, theme, entries = [] }: AccountMenuOf): { account: AvatarMenuProps; signOutForm: ReactNode } {\n const [shownTheme, setShownTheme] = useState(theme);\n const [isSigningOut, setIsSigningOut] = useState(false);\n const form = useRef<HTMLFormElement>(null);\n const account: AvatarMenuProps = {\n name: email,\n signedInAs: 'account',\n accountUrl,\n theme: shownTheme,\n themes: THEMES,\n hasTheme: true,\n onThemeChange: (next) => {\n setShownTheme(next);\n applyTheme(next);\n void setTheme(next);\n },\n shortcuts: [],\n helpUrl: HELP_URL,\n onSignOut: () => {\n setIsSigningOut(true);\n form.current?.requestSubmit();\n },\n isSigningOut,\n entries,\n };\n return { account, signOutForm: <form ref={form} method=\"post\" action={SIGN_OUT_PATH} hidden /> };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40ca8029b8207bd47293950b98bdbd89c6c994c5fa\":{\"name\":\"setTheme\"}},\"web/features/frame/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40ca8029b8207bd47293950b98bdbd89c6c994c5fa\",callServer,void 0,findSourceMapURL,\"setTheme\");export{$$RSC_SERVER_ACTION_0 as setTheme};","/**\n * The theme this browser chose for the gateway's pages (header design H13:\n * each app keeps its own), System until chosen.\n */\nimport type { Theme } from '@aeolus-fleet/common';\n\n/** The themes, as common names them: written here so the header's browser code loads no schema (decision 0033). */\nexport const THEMES: readonly Theme[] = ['light', 'dark', 'system'];\n\n/** The cookie that keeps it. */\nexport const THEME_COOKIE = 'aeolus_gateway_theme';\n\nexport function isTheme(value: unknown): value is Theme {\n return THEMES.some((theme) => theme === value);\n}\n\n/** The theme a cookie names, or System. */\nexport function themeFrom(value: string | undefined): Theme {\n return isTheme(value) ? value : 'system';\n}\n","/** The outside parties' pages. */\nexport const OUTSIDE_PARTIES_PATH = '/outside-parties';\n\nexport const ADD_SERVER_PATH = `${OUTSIDE_PARTIES_PATH}/add`;\n\nexport const ADD_A2A_CLIENT_PATH = `${OUTSIDE_PARTIES_PATH}/add-a2a-client`;\n\nexport const ADD_A2A_AGENT_PATH = `${OUTSIDE_PARTIES_PATH}/add-a2a-agent`;\n\n/** One outside party's page, or one of its own: changing it, retiring it. */\nexport function partyPath(name: string, action?: 'change' | 'retire'): string {\n return `${OUTSIDE_PARTIES_PATH}/${encodeURIComponent(name)}${action === undefined ? '' : `/${action}`}`;\n}\n","/**\n * What a page of the web app does with the API's account.inView (header\n * design H5, H9): show its fleet as the account signed in, or send the\n * browser where it may go: the same page in the fleet the account may open,\n * the app it may open there, or sign-in and back to the page. Where the\n * gateway is off for the account's fleet, the page says so instead.\n */\n\n/** The API's answer to account.inView. */\nexport type InView =\n | { kind: 'signedIn'; fleetId: string; accountId: string; scopes: string[] }\n | { kind: 'goTo'; fleetId: string }\n | { kind: 'off'; fleetName: string; accountUrl: string }\n | { kind: 'elsewhere'; url: string };\n\n/** The API's refusals of account.inView a page answers: signed in to no account, and no shared sign-in at this gateway. */\nexport type InViewRefusal = 'UNAUTHORIZED' | 'NOT_FOUND';\n\nexport type PageAccount =\n | { kind: 'signedIn'; fleetId: string; scopes: readonly string[] }\n | { kind: 'goTo'; location: string }\n | { kind: 'off'; fleetName: string; accountUrl: string }\n | { kind: 'noSignIn' };\n\nconst SIGN_IN_START = '/sign-in/start';\n\n/** The parameter a page names its fleet by. */\nexport const FLEET_PARAMETER = 'fleet';\n\n/** A page of the web app in a fleet: every link keeps the fleet in its address. */\nexport function inFleet(page: string, fleetId: string): string {\n const [path = '', query = ''] = page.split('?');\n const parameters = new URLSearchParams(query);\n parameters.set(FLEET_PARAMETER, fleetId);\n return `${path}?${parameters.toString()}`;\n}\n\n/** Reads the answer for the page asked for, its path and query as the browser sent them. */\nexport function pageAccountOf(read: { inView: InView } | { refusal: InViewRefusal }, page: string): PageAccount {\n if ('refusal' in read) {\n return read.refusal === 'UNAUTHORIZED' ? { kind: 'goTo', location: `${SIGN_IN_START}?${new URLSearchParams({ return_to: page }).toString()}` } : { kind: 'noSignIn' };\n }\n const { inView } = read;\n switch (inView.kind) {\n case 'signedIn':\n return { kind: 'signedIn', fleetId: inView.fleetId, scopes: inView.scopes };\n case 'goTo':\n return { kind: 'goTo', location: inFleet(page, inView.fleetId) };\n case 'off':\n return inView;\n case 'elsewhere':\n return { kind: 'goTo', location: inView.url };\n }\n}\n"],"names":["FloatingPortalLite","componentProps","forwardedRef","children","container","className","render","style","elementProps","node","portalNode","subtree","portalSubtree","ref","actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage","VARIANTS","primary","secondary","ghost","SIZES","regular","row","small","xs","ActionButton","isPending","pendingLabel","variant","size","disabled","button","Notice","message","isFailure","role","$$RSC_SERVER_ACTION_0","OUTSIDE_PARTIES_PATH","ADD_SERVER_PATH","ADD_A2A_CLIENT_PATH","ADD_A2A_AGENT_PATH","partyPath","name","action","encodeURIComponent","undefined","SIGN_IN_START","FLEET_PARAMETER","inFleet","page","fleetId","path","query","split","parameters","URLSearchParams","set","toString","pageAccountOf","read","refusal","kind","location","return_to","inView","scopes","url"],"mappings":"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","ignoreList":[0,1]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[53116,a=>{var b=a.i(72131),c=a.i(35112),d=a.i(54098),e=a.i(87924);let f=b.forwardRef(function(a,f){let{children:g,container:h,className:i,render:j,style:k,...l}=a,{node:m,subtree:n}=(0,d.o)({container:h,ref:f,componentProps:a,elementProps:l});return n||m?(0,e.jsxs)(b.Fragment,{children:[n,m&&c.createPortal(g,m)]}):null});a.s(["f",0,f])},69789,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},32043,a=>{var b=a.i(87924);let c={primary:"bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border border-border bg-card text-card-foreground hover:bg-accent",ghost:"text-foreground hover:bg-accent"},d={regular:"h-9 gap-2 px-4",row:"h-9 gap-2 px-4 text-body sm:h-6 sm:gap-1.5 sm:px-2.5 sm:text-meta",small:"h-8 gap-2 px-3 text-meta",xs:"h-7 gap-1.5 px-2.5 text-caption font-medium"};a.s(["i",0,function({isPending:a,pendingLabel:e,variant:f="secondary",size:g="regular",children:h,className:i="",disabled:j,...k}){return(0,b.jsx)("button",{...k,disabled:!0===j||a,"aria-busy":a,className:`inline-flex items-center rounded-md disabled:cursor-not-allowed disabled:opacity-70 ${d[g]} ${c[f]} ${i}`,children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{"aria-hidden":"true",className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),e]}):h})},"o",0,d])},88412,a=>{let b="inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60",c={primary:`${b} bg-primary text-primary-foreground hover:bg-primary-hover`,secondary:`${b} border border-border bg-card hover:bg-accent`,destructive:`${b} bg-destructive text-destructive-foreground`};a.s(["x",0,c,"r",0,"rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm","w",0,"h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code","z",0,"grid gap-1"])}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_13_ady-a4058y._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/%40base-ui/react/utils/FloatingPortalLite.mjs","../../../../../node_modules/next/src/client/components/server-async-storage.ts","../../../../../web/features/bridge/ui/action-button.tsx","../../../../../web/features/forms/ui/look.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useFloatingPortalNode } from \"../floating-ui-react/components/FloatingPortal.mjs\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * `FloatingPortal` includes tabbable logic handling for focus management.\n * For components that don't need tabbable logic, use `FloatingPortalLite`.\n * @internal\n */\nexport const FloatingPortalLite = /*#__PURE__*/React.forwardRef(function FloatingPortalLite(componentProps, forwardedRef) {\n const {\n children,\n container,\n className,\n render,\n style,\n ...elementProps\n } = componentProps;\n const {\n node: portalNode,\n subtree: portalSubtree\n } = useFloatingPortalNode({\n container,\n ref: forwardedRef,\n componentProps,\n elementProps\n });\n if (!portalSubtree && !portalNode) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [portalSubtree, portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode)]\n });\n});\nif (process.env.NODE_ENV !== \"production\") FloatingPortalLite.displayName = \"FloatingPortalLite\";","// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n","import type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nconst VARIANTS = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n secondary: 'border border-border bg-card text-card-foreground hover:bg-accent',\n ghost: 'text-foreground hover:bg-accent',\n} as const;\n\n/** A row's buttons are small on a desktop, and a thumb's size on a phone (Bridge mockups, home). */\nexport const SIZES = {\n regular: 'h-9 gap-2 px-4',\n row: 'h-9 gap-2 px-4 text-body sm:h-6 sm:gap-1.5 sm:px-2.5 sm:text-meta',\n /** A basket entry's buttons (basket.html). */\n small: 'h-8 gap-2 px-3 text-meta',\n /** A place card's one action (routing.html). */\n xs: 'h-7 gap-1.5 px-2.5 text-caption font-medium',\n} as const;\n\n/**\n * A button for an action: the moment it is pressed and until the answer\n * comes, it shows a spinner and its working label, and cannot run twice.\n */\nexport function ActionButton({\n isPending,\n pendingLabel,\n variant = 'secondary',\n size = 'regular',\n children,\n className = '',\n disabled,\n ...button\n}: ButtonHTMLAttributes<HTMLButtonElement> & { isPending: boolean; pendingLabel: string; variant?: keyof typeof VARIANTS; size?: keyof typeof SIZES; children: ReactNode }) {\n return (\n <button\n {...button}\n disabled={disabled === true || isPending}\n aria-busy={isPending}\n className={`inline-flex items-center rounded-md disabled:cursor-not-allowed disabled:opacity-70 ${SIZES[size]} ${VARIANTS[variant]} ${className}`}\n >\n {isPending ? (\n <>\n <span aria-hidden=\"true\" className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {pendingLabel}\n </>\n ) : (\n children\n )}\n </button>\n );\n}\n","/** The classes the pages share, on the design tokens: a card and the button kinds. */\nexport const CARD = 'rounded-lg border border-border bg-card p-6 text-card-foreground shadow-sm';\n\nconst BUTTON = 'inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 font-medium disabled:opacity-60';\n\nexport const BUTTONS = {\n primary: `${BUTTON} bg-primary text-primary-foreground hover:bg-primary-hover`,\n secondary: `${BUTTON} border border-border bg-card hover:bg-accent`,\n destructive: `${BUTTON} bg-destructive text-destructive-foreground`,\n} as const;\n\nexport type ButtonKind = keyof typeof BUTTONS;\n\nexport const INPUT = 'h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-code';\n\nexport const LABEL = 'grid gap-1';\n"],"names":["FloatingPortalLite","componentProps","forwardedRef","children","container","className","render","style","elementProps","node","portalNode","subtree","portalSubtree","ref","actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage","VARIANTS","primary","secondary","ghost","SIZES","regular","row","small","xs","ActionButton","isPending","pendingLabel","variant","size","disabled","button","CARD","BUTTON","BUTTONS","destructive","INPUT","LABEL"],"mappings":"6CAEA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAMO,IAAMA,EAAkC,EAAA,UAAgB,CAAC,MAA9B,GAAuCA,AAAmBC,CAAc,CAAEC,CAAY,EACtH,GAAM,AADqC,UAEzCC,CAAQ,CACRC,WAAS,WACTC,CAAS,QACTC,CAAM,OACNC,CAAK,CACL,GAAGC,EACJ,CAAGP,EACE,CACJQ,KAAMC,CAAU,CAChBC,QAASC,CAAa,CACvB,CAAG,CAAA,EAAA,EAAA,CAAA,AAAqB,EAAC,WACxBR,EACAS,IAAKX,iBACLD,eACAO,CACF,UACA,AAAI,AAACI,GAAkBF,EAGH,CAAA,EAAA,EAAA,IAAA,AAAK,CAHU,CAGT,CAHJ,CAGI,QAAc,CAAE,CACxCP,SAAU,CAACS,EAAeF,GAA2B,EAAA,SAAb,GAAkC,CAACP,EAAUO,GACvF,AADmG,EAA9C,CAH5C,IAKX,2FC7BSI,kBAAkB,CAAA,kBAAlBA,EAAAA,kBAAkB,EAClBC,gBAAgB,CAAA,kBAAhBA,EAAAA,gBAAgB,EAChBC,oBAAoB,CAAA,kBAApBA,EAAAA,oBAAoB,8EAFM,CAAA,CAAA,IAAA,OACF,CAAA,CAAA,IAAA,OACI,CAAA,CAAA,IAAA,sPCNrC,IAAMC,EAAW,CACfC,QAAS,4DACTC,UAAW,oEACXC,MAAO,iCACT,EAGaC,EAAQ,CACnBC,QAAS,iBACTC,IAAK,oEAELC,MAAO,2BAEPC,GAAI,6CACN,aAMO,SAASC,AAAa,WAC3BC,CAAS,cACTC,CAAY,SACZC,EAAU,WAAW,MACrBC,EAAO,SAAS,UAChB3B,CAAQ,WACRE,EAAY,EAAE,CACd0B,UAAQ,CACR,GAAGC,EACqK,EACxK,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACE,GAAGA,CAAM,CACVD,UAAuB,IAAbA,GAAqBJ,EAC/B,YAAWA,EACXtB,UAAW,CAAC,oFAAoF,EAAEgB,CAAK,CAACS,EAAK,CAAC,CAAC,EAAEb,CAAQ,CAACY,EAAQ,CAAC,CAAC,EAAExB,EAAAA,CAAW,UAEhJsB,EACC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,cAAY,OAAOtB,UAAU,oFAClCuB,KAGHzB,GAIR,uBC9CA,IAAM+B,EAAS,oGAEFC,EAAU,CACrBjB,QAAS,CAAA,EAAGgB,EAAO,0DAA0D,CAAC,CAC9Ef,UAAW,CAAA,EAAGe,EAAO,6CAA6C,CAAC,CACnEE,YAAa,CAAA,EAAGF,EAAO,2CAA2C,CAAC,AACrE,qBARoB,mFAYC,yFAEA","ignoreList":[0,1]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[7963,a=>{var b=a.i(64831);let c={name:"chevron-left",size:24,node:[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]};c.node;let d=(0,b.f)(c);a.s(["f",0,d],7963)},16550,a=>{a.s(["H",0,"/bridge/basket","P",0,"/bridge","i",0,"/bridge/settings/routing","T",0,"/bridge/settings"])},17758,18145,a=>{let b={home:{name:"Bridge",hasBack:!1,tab:"waiting"},basket:{name:"Basket",hasBack:!0,tab:"waiting"},"stay-aware":{name:"Stay aware",hasBack:!1,tab:"aware"},done:{name:"Done",hasBack:!1,tab:"done"},fleet:{name:"Your fleet",hasBack:!1,tab:"fleet"},routing:{name:"Where things show",hasBack:!0,tab:null},settings:{name:"Settings",hasBack:!0,tab:null}},c={decide:"Question",do:"Step","stay-aware":"Stay aware","everything-else":"Message"};a.s(["u",0,function(a){return c[a]},"f",0,function(a){return b[a]}],17758);var d=a.i(87924),e=a.i(72131);let f=(0,e.createContext)(void 0);a.s(["D",0,function({children:a}){let[b,c]=(0,e.useState)();return(0,d.jsx)(f,{value:{opened:b,setOpened:c},children:a(b)})},"R",0,function(a,b){let c=(0,e.useContext)(f)?.setOpened,d=(0,e.useRef)(b);(0,e.useEffect)(()=>{d.current=b}),(0,e.useEffect)(()=>{if(void 0!==c)return c(void 0===a?void 0:{title:a,onBack:()=>{d.current()}}),()=>{c(void 0)}},[c,a])}],18145)},5759,56672,a=>{var b=a.i(87924),c=a.i(72131);function d(a,b){return void 0!==b.readAt?{kept:{readAt:b.readAt,part:b.part},shown:{part:b.part,lastReadAt:void 0}}:void 0===a?{kept:a,shown:{part:b.part,lastReadAt:void 0}}:{kept:a,shown:{part:a.part,lastReadAt:a.readAt}}}a.s(["C",0,function(a){return`${new Date(a).toISOString().slice(11,16)} UTC`},"R",0,d],56672);let e=(0,c.createContext)(void 0);function f({at:a,children:c}){return(0,b.jsx)(e,{value:a,children:c})}a.s(["KeptRead",0,function({readAt:a,children:e}){let[g,h]=(0,c.useState)(),i=d(g,{readAt:a,part:e});return i.kept?.readAt!==g?.readAt&&h(i.kept),(0,b.jsx)(f,{at:i.shown.lastReadAt,children:i.shown.part})},"useLastReadAt",0,function(){return(0,c.useContext)(e)}],5759)},44337,a=>{var b=a.i(87924),c=a.i(83230),d=a.i(64831);let e={name:"globe",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]};e.node;let f=(0,d.f)(e),g={name:"route",size:24,node:[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]};g.node;let h=(0,d.f)(g),i={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]};i.node;let j=(0,d.f)(i);var k=a.i(25959),l=a.i(919),m=a.i(48242),n=a.i(72131),o=a.i(50944),p=a.i(16550);let q={name:"app-window",size:24,node:[["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}],["path",{d:"M10 4v4",key:"pp8u80"}],["path",{d:"M2 8h20",key:"d11cs7"}],["path",{d:"M6 4v4",key:"1svtjw"}]]};q.node;let r=(0,d.f)(q);var s=a.i(52562),t=a.i(7963),u=a.i(17758);let v="inline-flex size-8 shrink-0 items-center justify-center rounded-md hover:bg-accent sm:hidden";function w({fleetId:a,hasBack:c,opened:d}){return void 0!==d?(0,b.jsx)("button",{type:"button","data-testid":"bridge-back","aria-label":"Back",onClick:d.onBack,className:v,children:(0,b.jsx)(t.f,{"aria-hidden":!0,className:"size-5"})}):c?(0,b.jsx)("a",{"data-testid":"bridge-back","aria-label":"Back to Bridge",href:(0,k.f)(p.P,a),className:v,children:(0,b.jsx)(t.f,{"aria-hidden":!0,className:"size-5"})}):null}function x({fleetId:a,fleetName:c,screen:d,isLive:e,opened:f,avatar:g}){let{name:h,hasBack:i}=(0,u.f)(d),j=void 0!==f&&"home"===d?"Waiting on you":h;return(0,b.jsxs)("header",{className:"sticky top-0 z-30 flex h-14 shrink-0 items-center gap-2 border-b border-border bg-background pr-3 pl-4",children:[(0,b.jsx)(w,{fleetId:a,hasBack:i,opened:f}),(0,b.jsxs)("span",{"data-testid":"bridge-crumb",className:"text-muted-foreground max-sm:hidden",children:[void 0===c?null:`${c} / `,(0,b.jsx)("b",{className:"font-semibold text-foreground",children:j})]}),(0,b.jsx)("span",{"data-testid":"bridge-title",className:`min-w-0 flex-1 truncate font-semibold tracking-tight sm:hidden ${i||void 0!==f?"text-lg":"text-title-touch"}`,children:f?.title??h}),e?(0,b.jsxs)("span",{"data-testid":"bridge-live",className:"inline-flex items-center gap-1.5 text-meta text-muted-foreground",children:[(0,b.jsx)("i",{"aria-hidden":!0,className:"inline-block size-2 rounded-full bg-tone-ok-fg"}),"Live"]}):null,(0,b.jsx)("span",{className:"sm:hidden",children:g})]})}var y=a.i(18145);function z({fleetId:a,switcher:d,account:{email:e,accountUrl:g,theme:i}}){let{account:n,signOutForm:o}=(0,l.f)({email:e,accountUrl:g,theme:i,entries:[...d?.apps.map(({app:a,label:c,url:d,isCurrent:e})=>({key:`app-${a}`,label:c,href:d,icon:e?(0,b.jsx)(s.f,{"aria-hidden":!0}):(0,b.jsx)(r,{"aria-hidden":!0}),isPhoneOnly:!0}))??[],{key:"routing",label:"Where things show",icon:(0,b.jsx)(h,{"aria-hidden":!0}),href:(0,k.f)(p.i,a),isPhoneOnly:!0},{key:"outside-parties",label:"Outside parties",icon:(0,b.jsx)(f,{"aria-hidden":!0}),href:(0,k.f)(m.$,a),isPhoneOnly:!0},...void 0===g?[]:[{key:"fleets-and-account",label:"Fleets and account",icon:(0,b.jsx)(j,{"aria-hidden":!0}),href:g,isPhoneOnly:!0}]]});return(0,b.jsxs)(b.Fragment,{children:[o,(0,b.jsx)(c.AvatarMenuSheet,{...n})]})}a.s(["ShellFrame",0,function({fleetId:a,fleetName:c,screen:d,account:e,switcher:f,children:g}){let h=function(a){let b=(0,o.useRouter)(),[c,d]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let c=new EventSource(`/bridge/changes?fleet=${encodeURIComponent(a)}`);return c.onopen=()=>{d(!0)},c.onerror=()=>{d(!1)},c.onmessage=()=>{b.refresh()},()=>{c.close()}},[a,b]),c}(a);return(0,n.useEffect)(()=>{let b,c=()=>{let c="visible"===document.visibilityState&&document.hasFocus();c&&void 0===b?b=new EventSource(`/bridge/focus?fleet=${encodeURIComponent(a)}`):c||void 0===b||(b.close(),b=void 0)};return c(),window.addEventListener("focus",c),window.addEventListener("blur",c),document.addEventListener("visibilitychange",c),()=>{window.removeEventListener("focus",c),window.removeEventListener("blur",c),document.removeEventListener("visibilitychange",c),b?.close()}},[a]),(0,b.jsx)(y.D,{children:i=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(x,{fleetId:a,fleetName:c,screen:d,isLive:h,opened:i,avatar:void 0===e?null:(0,b.jsx)(z,{fleetId:a,switcher:f,account:e})}),(0,b.jsx)("main",{className:"w-full max-w-5xl flex-1 px-4 py-5 sm:px-6",children:g})]})})},"SidebarPerson",0,function({account:{email:a,accountUrl:d,theme:e},fleetName:f,isAllowedAsArgo:g=!1}){let{account:h,signOutForm:i}=(0,l.f)({email:a,accountUrl:d,theme:e});return(0,b.jsxs)(b.Fragment,{children:[i,(0,b.jsx)(c.AvatarMenu,{...h}),(0,b.jsxs)("span",{className:"flex min-w-0 flex-col leading-4",children:[(0,b.jsx)("span",{"data-testid":"bridge-person",className:"truncate font-medium",children:a}),(0,b.jsx)("span",{className:"truncate text-caption text-muted-foreground",children:g?`${f??""} \xb7 allowed as argo`:f})]})]})}],44337)}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_14k1oldo5chf8._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/lucide-react/src/icons/chevron-left.ts","../../../../../web/features/bridge/paths.ts","../../../../../web/features/bridge/services/shell.ts","../../../../../web/features/bridge/state/opened-item.tsx","../../../../../web/features/bridge/state/kept-read.tsx","../../../../../web/features/bridge/services/last-read.ts","../../../../../web/features/bridge/hooks/use-focus-report.ts","../../../../../web/features/bridge/hooks/use-live-refresh.ts","../../../../../web/features/bridge/state/shell-frame.tsx","../../../../../web/features/bridge/ui/bridge-top-bar.tsx","../../../../../web/features/bridge/ui/phone-app-entries.tsx","../../../../../node_modules/lucide-react/src/icons/app-window.ts","../../../../../node_modules/lucide-react/src/icons/globe.ts","../../../../../node_modules/lucide-react/src/icons/route.ts","../../../../../node_modules/lucide-react/src/icons/sliders-horizontal.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'chevron-left',\n size: 24,\n node: [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon(__iconData);\n\nexport default ChevronLeft;\n","/** Bridge's pages (docs/design/bridge): home, the basket, Stay aware, Done, Your fleet, Bridge's settings and where things show; a module of their own, so a page in the browser names them too. */\nexport const BRIDGE_PATH = '/bridge';\nexport const BRIDGE_BASKET_PATH = '/bridge/basket';\nexport const BRIDGE_STAY_AWARE_PATH = '/bridge/stay-aware';\nexport const BRIDGE_DONE_PATH = '/bridge/done';\nexport const BRIDGE_SETTINGS_PATH = '/bridge/settings';\nexport const BRIDGE_ROUTING_PATH = '/bridge/settings/routing';\n","/**\n * Bridge's shell (docs/design/bridge/mockups): the screen in view named as\n * the sidebar names it, in the breadcrumb on desktop and as the phone's\n * screen title, with a back chevron where it leads back to home, and the\n * phone's tab it is under. Pure view logic, no React and no API client.\n */\nimport type { HomeItem } from './items';\n\n/** Bridge's pages, each a screen of the shell. */\nexport type BridgeScreen = 'home' | 'basket' | 'stay-aware' | 'done' | 'fleet' | 'routing' | 'settings';\n\n/** The phone's four tabs. */\nexport type PhoneTab = 'waiting' | 'aware' | 'done' | 'fleet';\n\nexport interface ScreenNaming {\n readonly name: string;\n /** Whether the phone's title leads back to home with a back chevron. */\n readonly hasBack: boolean;\n /** The phone's tab shown current; none for a page under no tab, such as the settings. */\n readonly tab: PhoneTab | null;\n}\n\nconst SCREENS: Record<BridgeScreen, ScreenNaming> = {\n home: { name: 'Bridge', hasBack: false, tab: 'waiting' },\n basket: { name: 'Basket', hasBack: true, tab: 'waiting' },\n 'stay-aware': { name: 'Stay aware', hasBack: false, tab: 'aware' },\n done: { name: 'Done', hasBack: false, tab: 'done' },\n fleet: { name: 'Your fleet', hasBack: false, tab: 'fleet' },\n routing: { name: 'Where things show', hasBack: true, tab: null },\n settings: { name: 'Settings', hasBack: true, tab: null },\n};\n\nconst OPENED: Record<HomeItem['job'], string> = {\n decide: 'Question',\n do: 'Step',\n 'stay-aware': 'Stay aware',\n 'everything-else': 'Message',\n};\n\nexport function screenOf(screen: BridgeScreen): ScreenNaming {\n return SCREENS[screen];\n}\n\n/** The phone's title while an item is open in place of its list, by its job. */\nexport function openedScreenOf(job: HomeItem['job']): string {\n return OPENED[job];\n}\n\n/** The counts the shell shows: what waits, the unseen to stay aware of, the basket's answers and the ships with an alert; one not known now is left out. */\nexport interface ShellCounts {\n readonly waiting: number | undefined;\n readonly stayAware: number | undefined;\n readonly basket: number;\n readonly fleetAlerts: number | undefined;\n /** What waits at argo, apart from what waits on the person (argo's inbox, AI4); none for an account not allowed as argo. */\n readonly argo?: number;\n}\n\n/** Bridge home as the shell reads it: its counts, none for an account with no person ship, or not readable now. */\nexport type HomeForCounts =\n | { readonly kind: 'read'; readonly value: { readonly waiting: { readonly count: number }; readonly stayAware: readonly { readonly state: string }[] } }\n | { readonly kind: 'none' }\n | { readonly kind: 'unreadable' };\n\n/** What waits as home counts it; of the stay-aware feed only the alerts and notices not seen yet (CC16); what waits at argo in a count of its own. */\nexport function shellCountsOf({ home, basket, fleetAlerts, argo }: { home: HomeForCounts; basket: number; fleetAlerts: number | undefined; argo?: number | undefined }): ShellCounts {\n const others = { basket, fleetAlerts, ...(argo === undefined ? {} : { argo }) };\n switch (home.kind) {\n case 'read':\n return { waiting: home.value.waiting.count, stayAware: home.value.stayAware.filter(({ state }) => state === 'new').length, ...others };\n case 'none':\n return { waiting: 0, stayAware: 0, ...others };\n case 'unreadable':\n return { waiting: undefined, stayAware: undefined, ...others };\n }\n}\n","'use client';\n\nimport { createContext, useContext, useEffect, useRef, useState, type ReactNode } from 'react';\n\nimport type { OpenedItem } from '../ui/bridge-top-bar';\n\nconst OpenedItemContext = createContext<{ opened: OpenedItem | undefined; setOpened: (opened: OpenedItem | undefined) => void } | undefined>(undefined);\n\n/** Holds the item open in place of its list, if any, for the shell's phone title. */\nexport function OpenedItemProvider({ children }: { children: (opened: OpenedItem | undefined) => ReactNode }) {\n const [opened, setOpened] = useState<OpenedItem | undefined>();\n return <OpenedItemContext value={{ opened, setOpened }}>{children(opened)}</OpenedItemContext>;\n}\n\n/**\n * Names the item open in place of its list to the shell, by its title, the\n * back chevron closing it; undefined while none is open. Outside Bridge's\n * shell it does nothing.\n */\nexport function useOpenedItem(title: string | undefined, onBack: () => void): void {\n const setOpened = useContext(OpenedItemContext)?.setOpened;\n const back = useRef(onBack);\n useEffect(() => {\n back.current = onBack;\n });\n useEffect(() => {\n if (setOpened === undefined) {\n return undefined;\n }\n setOpened(title === undefined ? undefined : { title, onBack: () => { back.current(); } });\n return () => {\n setOpened(undefined);\n };\n }, [setOpened, title]);\n}\n","'use client';\n\nimport { createContext, useContext, useState, type ReactNode } from 'react';\n\nimport { nextShownOf, type KeptPart } from '../services/last-read';\n\nconst LastReadContext = createContext<string | undefined>(undefined);\n\n/**\n * A part of a Bridge page the server read, kept in the browser while the\n * page is open (states.html): read now, it shows and is kept; while the\n * record cannot be read, the part last read shows in its place, and what is\n * inside it can tell with useLastReadAt. With nothing read yet, the\n * server's own answer shows, such as nothing at all.\n */\nexport function KeptRead({ readAt, children }: { readAt: string | undefined; children: ReactNode }) {\n const [kept, setKept] = useState<KeptPart<ReactNode> | undefined>();\n const next = nextShownOf(kept, { readAt, part: children });\n // Each read the server answers carries its own time: a new time is a new read to keep.\n if (next.kept?.readAt !== kept?.readAt) {\n setKept(next.kept);\n }\n return <AsLastRead at={next.shown.lastReadAt}>{next.shown.part}</AsLastRead>;\n}\n\n/** Shows what is inside as last read at a time; as read now with none. */\nexport function AsLastRead({ at, children }: { at: string | undefined; children: ReactNode }) {\n return <LastReadContext value={at}>{children}</LastReadContext>;\n}\n\n/** When what shows was last read, while it shows as last read; undefined while it is read now. */\nexport function useLastReadAt(): string | undefined {\n return useContext(LastReadContext);\n}\n","/**\n * A page part as last read (states.html; Bridge, section 9: core does not\n * answer): while the record cannot be read, the page goes on showing what it\n * last read, saying when. The browser keeps what it showed; the gateway keeps\n * no copy of a payload (Bridge, section 6). Pure view logic, no React.\n */\n\n/** What the server answered for a part: read at a time, or, with no time, what to show while it could not be read. */\nexport interface PartAnswer<T> {\n readonly readAt: string | undefined;\n readonly part: T;\n}\n\n/** The last part read, and when. */\nexport interface KeptPart<T> {\n readonly readAt: string;\n readonly part: T;\n}\n\n/** What shows of a part: as read now, or, with a time, as last read then. */\nexport interface ShownPart<T> {\n readonly part: T;\n readonly lastReadAt: string | undefined;\n}\n\nexport function nextShownOf<T>(kept: KeptPart<T> | undefined, answer: PartAnswer<T>): { kept: KeptPart<T> | undefined; shown: ShownPart<T> } {\n if (answer.readAt !== undefined) {\n return { kept: { readAt: answer.readAt, part: answer.part }, shown: { part: answer.part, lastReadAt: undefined } };\n }\n if (kept === undefined) {\n return { kept, shown: { part: answer.part, lastReadAt: undefined } };\n }\n return { kept, shown: { part: kept.part, lastReadAt: kept.readAt } };\n}\n\n/** The time of day a part was last read, in UTC to the minute, as Bridge says its other times. */\nexport function lastReadTimeOf(readAt: string): string {\n return `${new Date(readAt).toISOString().slice(11, 16)} UTC`;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\n/** The stream the page holds while in focus, which the web app's server follows on the gateway's API for the browser. */\nexport const FOCUS_PATH = '/bridge/focus';\n\n/**\n * Tells the gateway while the page is in focus (wake a person, W6): it holds\n * the focus stream open while the window has focus and the page shows, and\n * closes it when either ends. While a page of the person is in focus, what\n * arrives is shown there and no wake goes out; an open page not in focus\n * changes nothing. A lost connection no longer counts as in focus.\n */\nexport function useFocusReport(fleetId: string): void {\n useEffect(() => {\n let focus: EventSource | undefined;\n const report = () => {\n const isInFocus = document.visibilityState === 'visible' && document.hasFocus();\n if (isInFocus && focus === undefined) {\n focus = new EventSource(`${FOCUS_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n } else if (!isInFocus && focus !== undefined) {\n focus.close();\n focus = undefined;\n }\n };\n report();\n window.addEventListener('focus', report);\n window.addEventListener('blur', report);\n document.addEventListener('visibilitychange', report);\n return () => {\n window.removeEventListener('focus', report);\n window.removeEventListener('blur', report);\n document.removeEventListener('visibilitychange', report);\n focus?.close();\n };\n }, [fleetId]);\n}\n","'use client';\n\nimport { useRouter } from 'next/navigation';\nimport { useEffect, useState } from 'react';\n\n/** The page's live updates, which the web app's server follows on the gateway's API for the browser. */\nexport const CHANGES_PATH = '/bridge/changes';\n\n/**\n * Keeps the page in step with its fleet's requests: whenever one changes,\n * the page reads itself again on the server, as its own caller. The browser\n * opens the stream again by itself when it drops. Answers whether the stream\n * is open now, so the page can say it is live.\n */\nexport function useLiveRefresh(fleetId: string): boolean {\n const router = useRouter();\n const [isLive, setIsLive] = useState(false);\n useEffect(() => {\n const changes = new EventSource(`${CHANGES_PATH}?fleet=${encodeURIComponent(fleetId)}`);\n changes.onopen = () => {\n setIsLive(true);\n };\n changes.onerror = () => {\n setIsLive(false);\n };\n changes.onmessage = () => {\n router.refresh();\n };\n return () => {\n changes.close();\n };\n }, [fleetId, router]);\n return isLive;\n}\n","'use client';\n\nimport type { Theme } from '@aeolus-fleet/common';\nimport type { AppSwitcherModel } from '@aeolus-fleet/common/rules';\nimport { AvatarMenu, AvatarMenuSheet } from '@aeolus-fleet/ui';\nimport { Globe, Route, SlidersHorizontal } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { useAccountMenu } from '../../frame/hooks/use-account-menu';\nimport { OUTSIDE_PARTIES_PATH } from '../../outside-parties/paths';\nimport { useFocusReport } from '../hooks/use-focus-report';\nimport { useLiveRefresh } from '../hooks/use-live-refresh';\nimport { BRIDGE_ROUTING_PATH } from '../paths';\nimport type { BridgeScreen } from '../services/shell';\nimport { phoneAppEntries } from '../ui/phone-app-entries';\nimport { BridgeTopBar } from '../ui/bridge-top-bar';\nimport { OpenedItemProvider } from './opened-item';\n\n/** The account signed in, as the shell shows it: its email, the account app's address, the theme it chose. */\nexport interface ShellAccount {\n readonly email: string;\n readonly accountUrl: string | undefined;\n readonly theme: Theme;\n}\n\n/**\n * The person at the sidebar's foot (home.html): the avatar opens the\n * avatar menu, beside the account's email and the fleet in view.\n */\nexport function SidebarPerson({ account: { email, accountUrl, theme }, fleetName, isAllowedAsArgo = false }: { account: ShellAccount; fleetName: string | undefined; isAllowedAsArgo?: boolean }) {\n const { account, signOutForm } = useAccountMenu({ email, accountUrl, theme });\n return (\n <>\n {signOutForm}\n <AvatarMenu {...account} />\n <span className=\"flex min-w-0 flex-col leading-4\">\n <span data-testid=\"bridge-person\" className=\"truncate font-medium\">\n {email}\n </span>\n <span className=\"truncate text-caption text-muted-foreground\">{isAllowedAsArgo ? `${fleetName ?? ''} · allowed as argo` : fleetName}</span>\n </span>\n </>\n );\n}\n\n/** The phone's avatar: its sheet carries the settings the tab bar lacks (header design H6). */\nfunction PhoneAvatar({ fleetId, switcher, account: { email, accountUrl, theme } }: { fleetId: string; switcher?: AppSwitcherModel; account: ShellAccount }) {\n const { account, signOutForm } = useAccountMenu({\n email,\n accountUrl,\n theme,\n entries: [\n ...phoneAppEntries(switcher),\n { key: 'routing', label: 'Where things show', icon: <Route aria-hidden />, href: inFleet(BRIDGE_ROUTING_PATH, fleetId), isPhoneOnly: true },\n { key: 'outside-parties', label: 'Outside parties', icon: <Globe aria-hidden />, href: inFleet(OUTSIDE_PARTIES_PATH, fleetId), isPhoneOnly: true },\n ...(accountUrl === undefined ? [] : [{ key: 'fleets-and-account', label: 'Fleets and account', icon: <SlidersHorizontal aria-hidden />, href: accountUrl, isPhoneOnly: true }]),\n ],\n });\n return (\n <>\n {signOutForm}\n <AvatarMenuSheet {...account} />\n </>\n );\n}\n\n/**\n * The part of Bridge's shell that lives in the browser: the top bar over\n * the page, Live while the page follows its changes, the phone's title\n * naming an item open in place of its list. It keeps the page live, and\n * tells the gateway while it is in focus (wake a person, W6).\n */\nexport function ShellFrame({ fleetId, fleetName, screen, account, switcher, children }: { fleetId: string; fleetName: string | undefined; screen: BridgeScreen; account: ShellAccount | undefined; switcher?: AppSwitcherModel; children: ReactNode }) {\n const isLive = useLiveRefresh(fleetId);\n useFocusReport(fleetId);\n return (\n <OpenedItemProvider>\n {(opened) => (\n <>\n <BridgeTopBar fleetId={fleetId} fleetName={fleetName} screen={screen} isLive={isLive} opened={opened} avatar={account === undefined ? null : <PhoneAvatar fleetId={fleetId} switcher={switcher} account={account} />} />\n <main className=\"w-full max-w-5xl flex-1 px-4 py-5 sm:px-6\">{children}</main>\n </>\n )}\n </OpenedItemProvider>\n );\n}\n","import { ChevronLeft } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { inFleet } from '../../../lib/gateway-api/page-account';\nimport { BRIDGE_PATH } from '../paths';\nimport { screenOf, type BridgeScreen } from '../services/shell';\n\n/** What the breadcrumb names while an item is open from home: the list it was opened from (decide.html, do.html, basket.html). */\nconst OPENED_FROM_HOME = 'Waiting on you';\n\n/** An item open in place of its list: the phone's title names it, and its back chevron closes it. */\nexport interface OpenedItem {\n readonly title: string;\n readonly onBack: () => void;\n}\n\nconst BACK = 'inline-flex size-8 shrink-0 items-center justify-center rounded-md hover:bg-accent sm:hidden';\n\nfunction Back({ fleetId, hasBack, opened }: { fleetId: string; hasBack: boolean; opened: OpenedItem | undefined }) {\n if (opened !== undefined) {\n return (\n <button type=\"button\" data-testid=\"bridge-back\" aria-label=\"Back\" onClick={opened.onBack} className={BACK}>\n <ChevronLeft aria-hidden className=\"size-5\" />\n </button>\n );\n }\n if (!hasBack) {\n return null;\n }\n return (\n <a data-testid=\"bridge-back\" aria-label=\"Back to Bridge\" href={inFleet(BRIDGE_PATH, fleetId)} className={BACK}>\n <ChevronLeft aria-hidden className=\"size-5\" />\n </a>\n );\n}\n\n/**\n * Bridge's top bar (home.html, basket.html, decide.html). On desktop the\n * breadcrumb, the fleet then the page in view (Waiting on you while an item\n * is open from home), and Live. On the phone the\n * screen title, an item open in place of its list named by it, with a back\n * chevron where it leads back, Live and the avatar. Live shows while the\n * page follows its changes.\n */\nexport function BridgeTopBar({ fleetId, fleetName, screen, isLive, opened, avatar }: { fleetId: string; fleetName: string | undefined; screen: BridgeScreen; isLive: boolean; opened: OpenedItem | undefined; avatar: ReactNode }) {\n const { name, hasBack } = screenOf(screen);\n const crumb = opened !== undefined && screen === 'home' ? OPENED_FROM_HOME : name;\n return (\n <header className=\"sticky top-0 z-30 flex h-14 shrink-0 items-center gap-2 border-b border-border bg-background pr-3 pl-4\">\n <Back fleetId={fleetId} hasBack={hasBack} opened={opened} />\n <span data-testid=\"bridge-crumb\" className=\"text-muted-foreground max-sm:hidden\">\n {fleetName === undefined ? null : `${fleetName} / `}\n <b className=\"font-semibold text-foreground\">{crumb}</b>\n </span>\n <span data-testid=\"bridge-title\" className={`min-w-0 flex-1 truncate font-semibold tracking-tight sm:hidden ${hasBack || opened !== undefined ? 'text-lg' : 'text-title-touch'}`}>\n {opened?.title ?? name}\n </span>\n {isLive ? (\n <span data-testid=\"bridge-live\" className=\"inline-flex items-center gap-1.5 text-meta text-muted-foreground\">\n <i aria-hidden className=\"inline-block size-2 rounded-full bg-tone-ok-fg\" />\n Live\n </span>\n ) : null}\n <span className=\"sm:hidden\">{avatar}</span>\n </header>\n );\n}\n","import type { AppSwitcherModel } from '@aeolus-fleet/common/rules';\nimport type { AvatarMenuEntry } from '@aeolus-fleet/ui';\nimport { AppWindow, Check } from 'lucide-react';\n\n/** The shared switcher's permitted apps, offered in the phone avatar sheet without replacing the screen title. */\nexport function phoneAppEntries(switcher: AppSwitcherModel | undefined): AvatarMenuEntry[] {\n return switcher?.apps.map(({ app, label, url, isCurrent }) => ({\n key: `app-${app}`,\n label,\n href: url,\n icon: isCurrent ? <Check aria-hidden /> : <AppWindow aria-hidden />,\n isPhoneOnly: true,\n })) ?? [];\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'app-window',\n size: 24,\n node: [\n ['rect', { x: '2', y: '4', width: '20', height: '16', rx: '2', key: 'izxlao' }],\n ['path', { d: 'M10 4v4', key: 'pp8u80' }],\n ['path', { d: 'M2 8h20', key: 'd11cs7' }],\n ['path', { d: 'M6 4v4', key: '1svtjw' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name AppWindow\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/app-window\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst AppWindow = createLucideIcon(__iconData);\n\nexport default AppWindow;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'globe',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/globe\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Globe = createLucideIcon(__iconData);\n\nexport default Globe;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'route',\n size: 24,\n node: [\n ['circle', { cx: '6', cy: '19', r: '3', key: '1kj8tv' }],\n ['path', { d: 'M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15', key: '1d8sl' }],\n ['circle', { cx: '18', cy: '5', r: '3', key: 'gq8acd' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Route\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/route\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Route = createLucideIcon(__iconData);\n\nexport default Route;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'sliders-horizontal',\n size: 24,\n node: [\n ['path', { d: 'M10 5H3', key: '1qgfaw' }],\n ['path', { d: 'M12 19H3', key: 'yhmn1j' }],\n ['path', { d: 'M14 3v4', key: '1sua03' }],\n ['path', { d: 'M16 17v4', key: '1q0r14' }],\n ['path', { d: 'M21 12h-9', key: '1o4lsq' }],\n ['path', { d: 'M21 19h-5', key: '1rlt1p' }],\n ['path', { d: 'M21 5h-7', key: '1oszz2' }],\n ['path', { d: 'M8 10v4', key: 'tgpxqk' }],\n ['path', { d: 'M8 12H3', key: 'a7s4jb' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name SlidersHorizontal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/sliders-horizontal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SlidersHorizontal = createLucideIcon(__iconData);\n\nexport default SlidersHorizontal;\n"],"names":["BRIDGE_PATH","BRIDGE_BASKET_PATH","BRIDGE_STAY_AWARE_PATH","BRIDGE_DONE_PATH","BRIDGE_SETTINGS_PATH","BRIDGE_ROUTING_PATH","SCREENS","home","name","hasBack","tab","basket","done","fleet","routing","settings","OPENED","decide","do","screenOf","screen","openedScreenOf","job","shellCountsOf","fleetAlerts","argo","others","undefined","kind","waiting","value","count","stayAware","filter","state","length","nextShownOf","kept","answer","readAt","part","shown","lastReadAt","lastReadTimeOf","Date","toISOString","slice","key"],"mappings":"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","ignoreList":[0,11,12,13,14]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[90697,a=>{let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/node_modules/lucide-react/dist/esm/Icon.mjs from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/node_modules/lucide-react/dist/esm/Icon.mjs","default");a.s(["default",0,b])},53808,a=>{var b=a.i(90697);a.n(b)},92277,a=>{var b=a.i(717),c=a.i(53808);a.s(["f",0,function(a,d=[],e=[]){let f,g="string"==typeof a?function(a,b,c=[]){if(null==b)throw Error("[lucide]: iconNode is required when icon name is used");return{name:a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),size:24,node:b,...c.length>0?{aliases:c}:{}}}(a,d,e):a,h=(0,b.forwardRef)(({className:a,...d},e)=>(0,b.createElement)(c.default,{ref:e,icon:g,className:a,...d}));return g.name&&(h.displayName=(f=(a=>{let b="",c=!1;for(let d of a){if("-"===d||"_"===d||d<=" "){c=b.length>0;continue}0===b.length?b+=d.toLowerCase():b+=c?d.toUpperCase():d,c=!1}return b})(g.name)).charAt(0).toUpperCase()+f.slice(1)),h}],92277)},14725,a=>{var b=a.i(5246),c=a.i(59847),d=a.i(66283);async function e(a){let b=await (0,d.z)(void 0);try{return{kind:"client",client:await b.oauth.authorization.query(Object.fromEntries(a))}}catch(b){let a=(0,d.U)(b);if("BAD_REQUEST"===a)return{kind:"failed",reason:"invalidClient"};if("NOT_FOUND"===a)return{kind:"failed",reason:"noSignIn"};throw b}}async function f(a){let e=(await (0,b.cookies)()).get("aeolus_waiting")?.value;return(0,c.f)({url:(0,d.o)(),cookie:(await (0,b.headers)()).get("cookie")??void 0,fleetId:void 0,...void 0===e?{}:{waitingSecret:e}}).oauth.waiting.query({waiting:a})}a.s(["P",0,function(a){return`/authorize/failed?${new URLSearchParams({reason:a}).toString()}`},"W",0,e,"b",0,f])},24571,a=>{let b="Start again from your MCP client.",c={invalidClient:`The gateway does not know this MCP client, or the address it asks to be sent back to. ${b}`,noPick:"Pick on the page whether to sign in as yourself or to ask for access for the client.",unknownSignIn:`This sign-in is unknown, or took over 10 minutes. ${b}`,otherBrowser:`This sign-in was started in another browser, so it is not yours to finish. ${b}`,fleetNotServed:"This gateway does not serve the fleet you signed in to.",outsidePartiesOff:"Your fleet's outside parties are off, so no MCP client can ask for access. Sign in as yourself instead, or ask whoever runs your fleet.",pagasaeRefused:`The sign-in service did not sign you in. ${b}`,unknownWaiting:`This request is unknown, or ended long ago. ${b}`,otherBrowserWaiting:`This request was made in another browser, so it is not yours to follow. ${b}`,noSignIn:"This gateway signs no one in, so no MCP client can connect to it: its operator sets pagasae first."},d=`The connection did not go through. ${b}`;a.s(["e",0,"/authorize/waiting","U",0,function(a){return(void 0===a?void 0:c[a])??d},"Q",0,function(a){return Object.entries(a).flatMap(([a,b])=>"string"==typeof b&&"holder"!==a?[[a,b]]:[])}])}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_15whg3fd67b9x._.js.map
|