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 { ButtonSet } from "./ApiButton"
import { FilterLevel, FilterSource, useFilterSet } from "./logfilters"
import OverviewActionBar from "./OverviewActionBar"
import { TiltSnackbarProvider } from "./Snackbar"
import { StarredResourceMemoryProvider } from "./StarredResourcesContext"
import { disableButton, oneResource, oneUIButton } from "./testdata"

export default {
  title: "New UI/Log View/OverviewActionBar",
  decorators: [
    (Story: any, context: any) => {
      let level = context?.args?.level || ""
      let source = context?.args?.source || ""
      let initialEntries = [`/?level=${level}&source=${source}`]
      return (
        <MemoryRouter initialEntries={initialEntries}>
          <TiltSnackbarProvider>
            <StarredResourceMemoryProvider>
              <div style={{ margin: "-1rem", height: "80vh" }}>
                <Story {...context.args} />
              </div>
            </StarredResourceMemoryProvider>
          </TiltSnackbarProvider>
        </MemoryRouter>
      )
    },
  ],
  argTypes: {
    source: {
      name: "Source",
      control: {
        type: "select",
        options: [FilterSource.all, FilterSource.build, FilterSource.runtime],
      },
    },
    level: {
      name: "Level",
      control: {
        type: "select",
        options: [FilterLevel.all, FilterLevel.warn, FilterLevel.error],
      },
    },
  },
}

export const OverflowTextBar = () => {
  let filterSet = useFilterSet()
  let res = oneResource({
    isBuilding: true,
    name: "my-grafana-long-service-name-deadbeef",
    endpoints: 2,
  })
  return <OverviewActionBar resource={res} filterSet={filterSet} />
}

export const FullBar = () => {
  let filterSet = useFilterSet()
  let res = oneResource({ isBuilding: true, name: "my-deadbeef", endpoints: 2 })
  let buttons: ButtonSet = {
    default: [oneUIButton({ buttonName: "button2", componentID: "vigoda" })],
    toggleDisable: disableButton("vigoda", true),
  }
  return (
    <OverviewActionBar resource={res} filterSet={filterSet} buttons={buttons} />
  )
}

export const EmptyBar = () => {
  let filterSet = useFilterSet()
  let res = oneResource({ isBuilding: true, endpoints: 0 })
  res.status = res.status || {}
  res.status.k8sResourceInfo = {}
  return <OverviewActionBar resource={res} filterSet={filterSet} />
}