## Description 🔖
This PR improves the DropdownButton API to make it more generic.
- It has been renamed Dropdown.
- The children are rendered as the trigger. You can now use other elements than a Button
- an option prop has been added to control all the radix ui element
- a group class name has been added to the trigger so you can style it based on its state, using tailwindcss-radix plugin
- stories of dropdown button as styled in the Hasura design system has been added
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5733
GitOrigin-RevId: 4d292ffcbec93ebae525764431e92b5ed87cb5b5
## Description 🔖
[VIDEO](https://www.loom.com/share/5844476e527f4e1d9ec296bc3a4bb932)
This PR creates a Tabs component that wraps the Radix UI component.
## Solution and Design 🎨
The component accepts all the props of the Radix UI tab root component and a list of items that specify the label and the content of the tabs. The component can be used in a controlled way (e.g., the state of the tab is stored in the URL) or uncontrolled.
For styling radix ui states I've added this library: https://github.com/ecklf/tailwindcss-radix
## Review Setup 💻
Run storybook and look for Tabs component
## Review checklist. 📋
- [ ] stories work
- [ ] doc is clear
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5667
GitOrigin-RevId: 0e73ef1026d6673c3c2dd413b986fa8395abb1f6
This includes TH.Lift instances.
I am motivated to make this change because `unordered-containers` is set to either v0.2.17.0 or v0.2.19.1 in nixpkgs-unstable.
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5620
GitOrigin-RevId: 7fd3024fdbf6a948adbdf5f4187d47d5da9acbda
This PR includes a single missing quote `'` in a SQL statement used to retrieve the schemas of a CockroachDB instance.
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5678
GitOrigin-RevId: 5a56ead2cbf7edbba822b0e565ca5f225c7ac92e
This PR expands the OpenAPI specification generated for metadata to include separate definitions for `SourceMetadata` for each native database type, and for DataConnector.
For the most part the changes add `HasCodec` implementations, and don't modify existing code otherwise.
The generated OpenAPI spec can be used to generate TypeScript definitions that distinguish different source metadata types based on the value of the `kind` properly. There is a problem: because the specified `kind` value for a data connector source is any string, when TypeScript gets a source with a `kind` value of, say, `"postgres"`, it cannot unambiguously determine whether the source is postgres, or a data connector. For example,
```ts
function consumeSourceMetadata(source: SourceMetadata) {
if (source.kind === "postgres" || source.kind === "pg") {
// At this point TypeScript infers that `source` is either an instance
// of `PostgresSourceMetadata`, or `DataconnectorSourceMetadata`. It
// can't narrow further.
source
}
if (source.kind === "something else") {
// TypeScript infers that this `source` must be an instance of
// `DataconnectorSourceMetadata` because `source.kind` does not match
// any of the other options.
source
}
}
```
The simplest way I can think of to fix this would be to add a boolean property to the `SourceMetadata` type along the lines of `isNative` or `isDataConnector`. This could be a field that only exists in serialized data, like the metadata version field. The combination of one of the native database names for `kind`, and a true value for `isNative` would be enough for TypeScript to unambiguously distinguish the source kinds.
But note that in the current state TypeScript is able to reference the short `"pg"` name correctly!
~~Tests are not passing yet due to some discrepancies in DTO serialization vs existing Metadata serialization. I'm working on that.~~
The placeholders that I used for table and function metadata are not compatible with the ordered JSON serialization in use. I think the best solution is to write compatible codecs for those types in another PR. For now I have disabled some DTO tests for this PR.
Here are the generated [OpenAPI spec](https://github.com/hasura/graphql-engine-mono/files/9397333/openapi.tar.gz) based on these changes, and the generated [TypeScript client code](https://github.com/hasura/graphql-engine-mono/files/9397339/client-typescript.tar.gz) based on that spec.
Ticket: [MM-66](https://hasurahq.atlassian.net/browse/MM-66)
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5582
GitOrigin-RevId: e1446191c6c832879db04f129daa397a3be03f62