pixiv / charcoal Goto Github PK
View Code? Open in Web Editor NEWDesign system library by pixiv
Home Page: https://charcoal-web.pixiv.design/
License: Apache License 2.0
Design system library by pixiv
Home Page: https://charcoal-web.pixiv.design/
License: Apache License 2.0
高さがbodyを超えるModalをスクロールできるようにする
内部でスクロールせず、コンテンツが多いモーダルを作成したい
No response
Tabの実装をお願いします 🙇♀️
デザインは Figma の
[Latest]Web Components
をご確認ください
コンテンツ種別によって表示を切り替えるUIが必要なため
Tabをクリックすると、下のコンテンツが入れ替わる
コンテンツはpaddingなど、中身の見え方などは一切持たない
横に何個表示するのか、スクロールをこちらが持つのか(→月曜日に決めます)
&:focus-within {
の中でo.outline.default
を使っているとtransition
がフォーカス外すときに反映されない?
@charcoal-ui/[email protected]
No response
No response
No response
現状では:root
に対してcss variablesが展開されてしまうため、局所的に別のテーマにしたい場合などで困る。またcreatePortalなどを利用した場合に、htmlのコンテキストは異なったreactのコンテキストを加味したテーマスコープを定義できるようにする必要がある。
<html data-theme=...>
以外の任意の要素に対してdata-theme=...
をセットできるようにする(画像左、画像**上は既に実装していただいてるものです)
選択肢が多い場合、グルーピングする必要があるため
HTMLで言う optgroup
に相当するやつです。
現状TextFieldは Single-line
, Multi-line
の2種類の実装となっていますが、
Single-line
→ TextField
Multi-line
→ TextArea
に名称を変更してください。
(Figmaもそれに合わせて変更対応予定です)
などなどを解決する前の整備として
No response
import React from 'react'
の自動削除スクリプトの実行react/jsx-uses-react
react/react-in-jsx-scope
jsx: react
→ jsx: react-jsx
Reactのimportが不要なった_jsx
形式に対応する為に変更。
React v17からJSXを使用する為にReactをインポートする必要が無くなったため。
_jsx
形式(Reactのimportが不要)のプロダクトで、Charcoalのコンポーネントを使った時に発生していたReactの未使用エラーを回避出来る。が、代わりにReact16.x系との後方互換が無くなる破壊的変更でもある。
tailwind-config そのものの使い方と、生成されるtailwindのクラス名のガイドを用意する
使い方を示すため
No response
forkしたリポジトリからのPullRequestだと「Deploy to Preview Channel」でエラーになります
pixiv/charcoal以外からのPullRequest全部
https://github.com/pixiv/charcoal/actions/runs/4497669665/jobs/7913487137?pr=275
charcoal/.github/workflows/docs-hosting-pr.yml
Lines 47 to 52 in 7732691
Error: google-github-actions/auth failed with: retry function failed after 1 attempt: gitHub Actions did not inject $ACTIONS_ID_TOKEN_REQUEST_TOKEN or $ACTIONS_ID_TOKEN_REQUEST_URL into this job. This most likely means the GitHub Actions workflow permissions are incorrect, or this job is being run from a fork. For more information, please see https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token
エラーにならない
TextFieldのprefixがinputの背景色の影響を受ける。surface3を上書きした際などに影響が顕著に出る。
下の画像は分かりやすくするためにinputの背景を赤い半透明にしたもの。
@charcoal-ui/[email protected]
No response
No response
No response
FocusScope.tsx:516 Uncaught TypeError: Cannot set properties of undefined (setting 'nodeToRestore')
related issue: adobe/react-spectrum#3704
This will be fixed with the new @react-aria/focus
.
adobe/react-spectrum#3954 (comment)
React 18 StrictMode
No response
No response
No response
No response
「この Pull Request をマージすると、次のリリースは major/minor/patch/prerelease のどれになるか」が分かるようにしたい
現状バージョニングポリシーとして概ね以下の内容を定めている
- major
- 破壊的変更
- minor
- 機能追加
- コンポーネントの追加など
- patch
- バグ修正
- 依存関係の更新( dependabot など )
- prerelease
- beta
- メジャーバージョンの前に雑にあげるときに使う
以前はこういうポリシーがなかったので、PR が approve されたら即座にマージしていた。
が、今後は「この PR は major まで待つ」とかをちゃんとわかるようにしたい( 人間が気をつけるだけでは難しい )。
related: #287
また、以前は conventional commit + commitlint を使ってバージョニングの自動計算をしていたが、
運用した感想としては「コミット単位で破壊的変更かを意識するのは難しいし、別にうれしくない(レビューする人間は PR 単位でそれを判断したい)」という結論になった。したがって conventional commit は長期的に廃止したい。
たとえば、特定のラベルが付いていない PR はマージを禁止するなど。
https://github.com/yogevbd/enforce-label-action (ちょっとメンテ状況が怪しい)
これは major
minor
patch
などのラベルの「どれか1つ以上」みたいな条件しか指定できない(間違って2つつけたケースを検知するのは難しい?)。が、少なくともつけ忘れた PR を誤ってマージすることは防げるだろう。
これをやるためには「2つのタグの間にあるマージコミット、およびその PR 番号の一覧」がとれる必要がある。
これは人間がマージコミットのメッセージをデフォルトのままから変更しない( Merge pull request #
のままである )必要がある。
(不明点は Slack で murokaco 宛にお尋ねください 🙇♀️)
常に表示する必要はないが、補足テキストがないと情報が不十分な場合があるため
CharcoalProviderでTokenInjectorのbackgroundを指定できない.
@charcoal-ui/[email protected]
No response
No response
TokenInjectorのbackgroundをCharcoalProviderから指定できる様にする.
@charcoal-ui/[email protected]
No response
No response
No response
Checkbox
を拡張したコンポーネントを実装しようとしたところ、 CheckboxProps
が export されていないため extends した Props が定義できなかった。
一旦、CheckboxProps
の定義をコピーして利用しているが、保守性に欠けるので可能であれば 型情報も export して欲しい。
これ以外にも対象となる コンポーネントがあるかもしれないので、確認をお願いします。
@charcoal-ui/icons, @charcoal-ui/react, @charcoal-ui/theme, @charcoal-ui/tailwind-config
全て 2.6.0
No response
No response
No response
https://github.com/pixiv/charcoal/blob/main/docs/pages/index.md にて、
図・フローチャートの画像が表示されていない。
(略)
(略)
No response
ダークテーマのときborderの色が一瞬おかしい。
borderの色はvar(--
ではなくrgba(
で直接指定されているのが原因だと思われる。
@charcoal-ui/[email protected]
No response
No response
No response
@charcoal-ui/[email protected]
No response
No response
No response
as title. please check reproduction repository.
@charcoal-ui/[email protected]
[email protected]
https://github.com/toshusai/nextjs-charcoal-v2.0.0
get server error
no error
text4ではコントラスト比が低く、視認性が悪いため、text3に変更したい
該当箇所
storybook👀
https://pixiv.github.io/charcoal/?path=/story/textfield--prefix-icon
No response
No response
こちらをご参照ください 🙇♀️
https://www.notion.so/pixiv/charcoal-Checkbox-white_check_mark-e03e8baa0b79482c917f8a20f130c00c
わかりません🙏
No response
No response
No response
<select>
と <option>
の実装をお願いします 🙇♀️
デザインは Figma の
[Latest]Web Components
をご確認ください(コンポーネント整理中ですが)
<select>
と <option>
は よく使われるタグなので。
こちらも[Latest]Web Components にデザインがあるのでご確認お願いします!
非モバイルサイズ(width 984px以上)におけるModal内のpadding調整をお願いします。
左右のpaddingを24px→16pxに変更してください。
モバイルサイズ(width 984px未満)におけるModal内の左右paddingとの共通化のため。
No response
TextField(multiline)でerrorよりfocusのoutlineが優先されてしまう
https://pixiv.github.io/charcoal/?path=/story/textfield--default&args=invalid:true;multiline:false
charcoal-ui/[email protected]
No response
focusよりinvalidのアウトラインを優先する
No response
Next.js で charcoal-ui/react の <Button>
コンポーネントを利用しているページで奇妙な挙動が起きる。
別のページから SPA 遷移してきたときには Button が正しい見た目で表示されるが、ページをリロードするとスタイルが当たらなくなってしまう。
インスペクタで見ると Button
の color や background-color が clickableCss
に上書きされて inherit になってしまっていることがわかる。スタイルの優先順位が不定になっていそう?
これに関連していそう。
styled-componentsの仕組みについての覚え書き | Wantedly Engineer Blog
styled-components
5.3.0+ の環境で @charcoal-ui/react
を使うと起きる
( 5.3.0 に下げると直る )
No response
Button
の color や background-color が不定になる
Button
の color や background-color が優先されて表示される
sample next.js is not working.
I got error
TypeError: styled_components__WEBPACK_IMPORTED_MODULE_2__.button is not a function
I think cause is install 'styled-components' in top node_modules instead of packages/sample/node_modules.
current main branch 7b2b87b
git clone [email protected]:pixiv/charcoal.git
cd charcoal
yarn
yarn build
add Button from '@charcoal-ui/react'
import { createTheme, useTheme } from '@charcoal-ui/styled'
+import { Button } from '@charcoal-ui/react'
const theme = createTheme(styled)
const Home: NextPage = () => {
const [theme, setTheme, system] = useTheme()
return (
<div>
+ <Button>hoge</Button>
yarn dev
open http://localhost:3000/
get error.
Server Error
TypeError: styled_components__WEBPACK_IMPORTED_MODULE_2__.button is not a function
This error happened while generating the page. Any console logs will be displayed in the terminal window.
no error
v3.0.0のDropdownSelectorでSectionに対応する
当該の機能がv3.0.0-betaで実装されていないため
No response
@charcoal-ui/[email protected]
No response
No response
No response
@charcoal-ui/styled
のメンテナビリティを何とかしたい。具体的には以下
@charcoal-ui/styled
はコンポーネントの基盤となるユーティリティだが、以下の問題を抱えている
No response
tagの実装をお願いします 🙇♀️
デザインは Figma の
[Latest]Web Components
をご確認ください
タグをクリックすると
background-color について
文字が長くなる場合はellipsisする
テキスト部分は max-width: 152px; としているようです
<form>
タグ内でDropdownSelectorを使用すると、DropdownButtonのtypeが初期値のsubmitであるために、formがsubmitされてしまう。
<form>
タグ内でDropdownSelectorを使用する。
"@charcoal-ui/react": "3.0.0"
No response
DropdownButtonを押すとsubmitされる
DropdownButtonを押してもsubmitされずに選択肢を選択することができる
tailwind-config と styled で CSS Variables の命名を揃えたい
tailwind-config と styled はほぼ同じ CSS Variables を提供しているのに、命名が違う。
したがって、@charcoal-ui/tailwind-config
と @charcoal-ui/react
を両方使っているリポジトリでは、無駄に多くの CSS Variables が定義されてしまう。
@charcoal-ui/utils
に変数名を組み立てる良い感じの関数があって、両方が同じものを使うようになる。
一応 tailwind-config 視点では破壊的変更になるだろう
https://charcoal-web.pixiv.design/ に https://github.com/pixiv/charcoal/tree/main/packages/tailwind-diff についてのドキュメントを書く
tailwind-config のアプデ時にチェックできるツールとしてみんなに認識して欲しい
No response
詳細こちらご参照ください 🙇♀️
https://www.notion.so/pixiv/DropdownSelector-width-2779221f1cc44a6394e88efa201a2388
わからない…
No response
No response
No response
各パッケージの依存のインストール忘れを検知できるようにするツールを使いたい。
選択肢としては以下の通り
現状だとモノレポ内のすべてのパッケージが同じ node_modules を共有しており、各パッケージの package.json に必要な依存が書かれていなかったとしてもなんとなく動いてしまう問題がある。
( たとえば、 @types/react
をインストールし忘れてるパッケージがいくつかあるが、特に型エラーにならないので放置されたり気づかないままになってたりする )
これにより、本来 dependencies として追加されてほしいものが誤って devDependencies から読まれてしまう、意図しないものがバンドルされてしまうなどの問題が起こっている
雑に星取表を書くと以下のようになるはず。詳しくは各ツールの PR を参照
Yarn PnP | pnpm | eslint-plugin-import | |
---|---|---|---|
依存追加忘れ | インストール時エラー | インストール時エラー | lintエラー |
peer dependencies | つど package.json に追加 | auto install あり | 何もしない |
エディタサポート | プラグインが必要(VSCodeのみサポート) | 制限なし | 制限なし |
下記のようなリセットがあるとLoadingSpinnerの表示がおかしくなる
* {
box-sizing: border-box;
}
@charcoal-ui/[email protected]
No response
No response
No response
HTMLのTextFieldにあるautofocusを実装する
プロダクトでrefを使ってすでに実装が行われており、特別な機能でもないのでcharcoalで実装すべきであると考えるため
いずれかの手法がある
className?: string
を受け取ったり受け取らなかったりがあるforwardRef
をしてたりしてなかったりがあるHTMLProps<HTMLInputElement>
に準拠してなかったりするこの点について方針が決まってないので、決めたい。
詳しい経緯はこちらをご確認ください
バッジの視認性が低いという問題を解消するため
No response
デザインと一致していないのでDropdownSelectorのトリガーからborderを削除する
@charcoal-ui/[email protected]
No response
No response
No response
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.