On this page

The MIOSA platform owns a Foundation UI primitive set exposed to the Svelte app through the $foundation alias.

Use this surface for platform screens before adding route-local buttons, inputs, cards, modals, tabs, tables, or page chrome.

Owned primitive surface

Primitive groupComponents
ActionsButton, PillButton
FormsInput, RoundedInput, Textarea, Select, Checkbox, Toggle, RadioGroup, Slider
LayoutGlassCard, AppCard, Separator, ScrollArea, Breadcrumb
FeedbackAlert, Toast, Loading, Skeleton, Progress
OverlaysModal, Popover, Tooltip, Menu
Data displayTable, Tabs, Accordion, Avatar

Import path

<script lang="ts">
  import { GlassCard, PillButton, Alert, Table } from "$foundation";
</script>

The alias is configured in the platform Svelte config and resolves to:

src/lib/foundations-components/src/lib/ui

Compute workspace audit

The Compute workspace was using this surface inconsistently. Shared Compute components often use $foundation, but several top-level Compute routes still hand-roll controls, tables, cards, and page shells with route-local CSS.

RouteCurrent state
ProjectsMostly shared Compute components; low direct Foundation usage in the page.
DeployHigh custom UI; raw filters, buttons, selects, table, and route CSS remain.
LogsPartial Foundation usage through PillButton; raw inputs and table remain.
AnalyticsVisible cards and actions converted to GlassCard and PillButton.
Environment VariablesPartial Foundation usage through PillButton; raw modal, form, and table remain.
DomainsPartial Foundation usage through PillButton; raw modal and table remain.
StorageHigh custom UI; raw tabs, search, buttons, card grid, and route CSS remain.
DatabasesPartial Foundation usage through PillButton; raw cards and modal remain.
SandboxesPartial Foundation usage through PillButton; raw table and filter controls remain.
ComputersPartial Foundation usage through PillButton; raw table and filter controls remain.

Cleanup order

  1. Convert route-level actions and empty/error states to PillButton, Alert, Skeleton, and shared empty-state components.
  2. Replace raw form controls with RoundedInput, Input, Select, Checkbox, and Toggle.
  3. Replace hand-rolled tabs and chips with Tabs or a shared Compute filter-chip component.
  4. Replace raw tables and cards with Foundation table primitives or shared Compute table/card components.
  5. Collapse repeated shell CSS into shared Compute layout primitives instead of copying page, console, and main CSS per route.

Verification guardrail

Every migrated route should keep passing:

pnpm check
pnpm test:e2e tests/platform-shell-regression.spec.ts --project=chromium
pnpm build

See also

Was this helpful?