custom-elements-manifest
blockprotocol
custom-elements-manifest | blockprotocol | |
---|---|---|
4 | 3 | |
335 | 1,331 | |
2.1% | 0.6% | |
1.5 | 8.2 | |
11 days ago | 4 days ago | |
TypeScript | TypeScript | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
custom-elements-manifest
-
The Block Protocol
The Web Components Community Group is developing such a format to describe the types of components here: https://github.com/webcomponents/custom-elements-manifest
People have already built tools that generate wrappers based on it.
-
Reactifying Custom Elements using a Custom Elements Manifest
TL;DR: A Custom Elements Manifest is a JSON file that contains all metadata about the custom elements in your project. You can read all about it here.
-
Introducing: Custom Elements Manifest
Custom Elements Manifest is a file format that describes the custom elements in your project. This format will allow tooling and IDEs to give rich information about the custom elements in a given project. A custom-elements.json contains metadata about the custom elements in your project; their properties, methods, attributes, inheritance, slots, CSS Shadow Parts, CSS custom properties, and a modules exports. If you're interested in following the specification of the schema, or contributing to it, you can find the repository here: webcomponents/custom-elements-manifest.
blockprotocol
-
Learning HTML was too hard so I made a compiler instead
Relevant to this conversation, I saw Joel Spolsky giving a talk about his new big project/stab at addressing this problem The Block Protocol.
-
The Block Protocol
1) The spec says that a block package includes its source code, and the block hub seems to be a browser of block packages, but it doesn't give me the full view into said block packages. Is there a reason for this? Is it on the to-do list?
It's on the to-list indeed - we are going to add links to the source of blocks. The package for distribution will typically be minified and less illuminating, although we can look to expose that too (as well as making it available for request via the API).
2) What's going on with the type signatures here?
The type signatures on functions in the spec definitely need cleaning up to be consistent and more helpful. They are pseudo-code. There are TypeScript types for them (https://github.com/blockprotocol/blockprotocol/blob/main/pac...) which won't be much use to you, but I am including in case they are of someone else.
The schema you mention in the Hub is autogenerated from the TypeScript interface for the block, which can lead to weird artefacts of the sort you identify. We need to add custom codegen to better handle this. It should valid JSON Schema.
What are some alternatives?
catalyst - Catalyst is a set of patterns and techniques for developing components within a complex application.
solid - Solid - Re-decentralizing the web (project directory)
open-wc - Open Web Components: guides, tools and libraries for developing web components.
PyLD - JSON-LD processor written in Python
api-viewer-element - API documentation and live playground for Web Components. Based on Custom Elements Manifest format
icestudio - :snowflake: Visual editor for open FPGA boards
storybook - Storybook is a frontend workshop for building UI components and pages in isolation. Made for UI development, testing, and documentation.
awesome-jsonschema - A curated list of awesome JSON Schema resources, tutorials, tools, and more.
eleventy 🕚⚡️ - A simpler site generator. Transforms a directory of templates (of varying types) into HTML.
libasciidoc - A Golang library for processing Asciidoc files.
custom-elements-manifest
OctoBase - 🐙 OctoBase is the open-source database behind AFFiNE, local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.