marigold-ui / marigold Goto Github PK
View Code? Open in Web Editor NEWDesign System based on react-aria and Tailwind CSS
Home Page: https://marigold-ui.io
License: MIT License
Design System based on react-aria and Tailwind CSS
Home Page: https://marigold-ui.io
License: MIT License
I find it sill concerning that we have the yarn binary (.yarn/releases) in our repository. If we all install volta we can pin node and yarn to a specific version without hosting yarn ourselves.
What do you think?
We can base it on the following setup form tsdx
:
Also, install @testing-library
!
closes #8
Should we move theme(s) to their own workspace? E.g.
/packages
/theme
b2b-reservix
unicorn
yarn init
!
Thank's to: #97
https://www.figma.com/file/DFKyTGHAoDxOsUBPszLLxP/%F0%9F%8F%B5%EF%B8%8FMarigold?node-id=428%3A267
We want to have the option to easily switch themes within storybook. This can be done via addon. There is already one called storybook-addon-themes
can we use this? If not do we have to write our own :(
I am not sure wether we should write tests for themes. The base theme already has specifications for writing a theme. Maybe its useless to test an object. Coverage always shows that the themes are not tested. I think we have three options:
Also:
Can we use tsdx test
and tsdx lint
with our configs and drop some depencies?
There are three ways I can think of all follow the principle that components are not providing surrounding white space (a.k.a margin/padding).
<Space>
componentThere is exactly one component that can add white space. There is no abstraction for spacing, just use margin/padding. It has to be inserted everywhere where space is required.
<Box>
<Space mt={["medium", "large"]}/>
<Box></Box>
<Space my={["medium", "large"]}/>
<Box></Box>
<Space my={["medium", "large"]}/>
<Box></Box>
<Space mb={["medium", "large"]}/>
</Box>
Every component of the design system exposes spacing props. They have to be applied on component instance basis.
<Box>
<Box my={["medium", "large"]}></Box>
<Box mb={["medium", "large"]}></Box>
<Box mb={["medium", "large"]}></Box>
</Box>
This is what Braid does. You can find more info about the reasoning in this talk.
The gist is that they have dedicated components for the different layouts (e.g. horizontal, vertical, grid, ...). This results in extra HTML elements, but is less verbose in my opinion.
<Stack space={["medium", "large"]}>
<Box></Box>
<Box></Box>
<Box></Box>
</Stack>
Reach-UI has incredible typings. We could steal + adapt the following typings for us to make creating components easier regarding typings:
/**
* This is a hack for sure. The thing is, getting a component to intelligently
* infer props based on a component or JSX string passed into an `as` prop is
* kind of a huge pain. Getting it to work and satisfy the constraints of
* `forwardRef` seems dang near impossible. To avoid needing to do this awkward
* type song-and-dance every time we want to forward a ref into a component
* that accepts an `as` prop, we abstract all of that mess to this function for
* the time time being.
*
* TODO: Eventually we should probably just try to get the type defs above
* working across the board, but ain't nobody got time for that mess!
*
* @param Comp
*/
export function forwardRefWithAs<Props, ComponentType extends As>(
comp: (
props: PropsFromAs<ComponentType, Props>,
ref: React.RefObject<any>
) => React.ReactElement | null
) {
return (React.forwardRef(comp as any) as unknown) as ComponentWithAs<
ComponentType,
Props
>;
}
Do we want to move the monorepo structure to Github?
(With at least the "components" and "system" package?)
Before a PR can be merged the could should be correctly linted. Therefore, we need a job that checks for lint errors.
We used this as config:
{
"useTabs": false,
"singleQuote": true,
"trailingComma": "es5"
}
Make sure people get promoted to install prettier/eslint plugins.
-> .vscode/extensions.json
{
"recommendations": [
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint"
]
}
Setup storybook to work with:
@storybook/addon-docs
is an option for documentationThe dependencies in our root package.json
grow very fast and it not easy anymore which dependencies are doing what and where they belong to.
To counteract this we could move configurations to a dedicated package (something like this). This would not remove any dot files in the root directory, but it would bundle dependencies with their corresponding tool. (e.g. all the webpack loaders that are required by storybook).
Initial version of a provider should include:
<Box>
can pick it up)Configure eslint based on CRA and with support for jest
and prettier
.
I'm unable to create and edit Milestones or create and attach Labels to Issues with only Member permissions.
text
)@marigold
packages to npm (and Github?).changesets
(if we use the later, maybe we can ditch lerna?)Initial documentation for the <Box>
component. The following things should be included:
as
propertyBasically:
{ "husky": { "hooks": { "pre-commit": "pretty-quick --staged" } } }
Compare theme-ui, seek-oss Boxes.
Collect ideas what the Box should (not) do
Create the standard Button Component outlined in the Figma Button design.
Sizes:
Variants:
By "design principles" I mean on a technological level, not design design.
When we really start to do some documentation, I guess we also need to tell people about the philosophy and our thinking behind the components and their API. For example, why did we chose the "Box-principle" or why do we use layout components (#118)?
This issue should be used to collect these things. I'll update the description based on our discussion below.
Let's plan a structure of the docs first:
INTRODUCTION
X
missing?CONCEPTS
We should deploy storybook (as part of publishing?). But where? Netlify? GH Page?
Add the ability to display icons in the standard Button Component as outlined here.
Sizes:
Colors:
We should establish some minimal guidelines before going into writing actual components.
Here are some ideas:
API
style props
as
propvariant
propMisc
Can we use tsdx
to build prod and dev?
The pipeline failes because of taking more than 10 minutes to deploy_storybook.
"Too long with no output (exceeded 10m0s): context deadline exceeded"
I think we have two options:
Or does Github do this now for us???
Also: https://renovatebot.com/
---> check which is the best tool
In addition to the test + coverage jobs, we should also check if typings are correct before a PR can be merged.
Basically this command should be executed:
tsc --noEmit
Follow up of #100
The theme introduced in #96 should be hosted in its own package.
Meeting to resolve open questions and define documentation rules, workflow, responsibilities.
All documentation in Confluence.
https://confluence.rsvx.it/display/DESIGN/Workflow
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.