starling-devex 0.1.2

Starling: a local dev orchestrator with a central daemon, shared named-URL proxy, and a k9s-style TUI (a Rust port of Tilt + portless)
import React from "react"
import { MemoryRouter } from "react-router"
import Features, { FeaturesTestProvider, Flag } from "./feature"
import OverviewTablePane from "./OverviewTablePane"
import { ResourceGroupsContextProvider } from "./ResourceGroupsContext"
import { ResourceListOptionsProvider } from "./ResourceListOptionsContext"
import { ResourceSelectionProvider } from "./ResourceSelectionContext"
import { StarredResourceMemoryProvider } from "./StarredResourcesContext"
import {
  nResourceView,
  nResourceWithLabelsView,
  tenResourceView,
  twoResourceView,
} from "./testdata"

export default {
  title: "New UI/OverviewTablePane",
  decorators: [
    (Story: any, context: any) => {
      const features = new Features({
        [Flag.Labels]: context?.args?.labelsEnabled ?? true,
      })
      return (
        <MemoryRouter initialEntries={["/"]}>
          <FeaturesTestProvider value={features}>
            <ResourceListOptionsProvider>
              <StarredResourceMemoryProvider>
                <ResourceGroupsContextProvider>
                  <ResourceSelectionProvider>
                    <div style={{ margin: "-1rem", height: "80vh" }}>
                      <Story />
                    </div>
                  </ResourceSelectionProvider>
                </ResourceGroupsContextProvider>
              </StarredResourceMemoryProvider>
            </ResourceListOptionsProvider>
          </FeaturesTestProvider>
        </MemoryRouter>
      )
    },
  ],
  argTypes: {
    labelsEnabled: {
      name: "Group resources by label enabled",
      control: {
        type: "boolean",
      },
      defaultValue: true,
    },
  },
}

export const TwoResources = () => (
  <OverviewTablePane view={twoResourceView()} isSocketConnected={true} />
)

export const TenResources = () => (
  <OverviewTablePane view={tenResourceView()} isSocketConnected={true} />
)

export const TenResourcesWithLabels = () => (
  <OverviewTablePane
    view={nResourceWithLabelsView(10)}
    isSocketConnected={true}
  />
)

export const OneHundredResources = () => (
  <OverviewTablePane view={nResourceView(100)} isSocketConnected={true} />
)

export const OneHundredResourcesOneStar = () => (
  <StarredResourceMemoryProvider initialValueForTesting={["vigoda_2"]}>
    <OverviewTablePane view={nResourceView(100)} isSocketConnected={true} />
  </StarredResourceMemoryProvider>
)

export const OneHundredResourcesTenStars = () => {
  let items = [
    "vigoda_1",
    "vigoda_11",
    "vigoda_21",
    "vigoda_31",
    "vigoda_41",
    "vigoda_51",
    "vigoda_61",
    "vigoda_71",
    "vigoda_81",
    "vigoda_91",
  ]
  return (
    <StarredResourceMemoryProvider initialValueForTesting={items}>
      <OverviewTablePane view={nResourceView(100)} isSocketConnected={true} />
    </StarredResourceMemoryProvider>
  )
}