diff --git a/.github/workflows/publishRelease.yml b/.github/workflows/publishRelease.yml
index f325f34944..5c24f3784a 100644
--- a/.github/workflows/publishRelease.yml
+++ b/.github/workflows/publishRelease.yml
@@ -69,7 +69,7 @@ jobs:
branch: 'merge-release-${{ env.NEW_TAG }}'
labels: release candidate
- name: Send message to Slack
- uses: slackapi/slack-github-action@v1.25.0
+ uses: slackapi/slack-github-action@v1.26.0
with:
payload: |
{
diff --git a/.github/workflows/startRelease.yml b/.github/workflows/startRelease.yml
index 108ed4db94..ffcc55b1cf 100644
--- a/.github/workflows/startRelease.yml
+++ b/.github/workflows/startRelease.yml
@@ -70,7 +70,7 @@ jobs:
labels: ${{ env.ISSUE_LABELS }}
- name: Send GitHub Action trigger data to Slack
if: ${{ github.event.client_payload.channel_id != null }}
- uses: slackapi/slack-github-action@v1.25.0
+ uses: slackapi/slack-github-action@v1.26.0
with:
channel-id: ${{ github.event.client_payload.channel_id }}
payload: ${{ github.event.client_payload.say }}
diff --git a/.node-version b/.node-version
index bc78e9f269..87834047a6 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-20.12.1
+20.12.2
diff --git a/package.json b/package.json
index f1ccbd0636..430bcb4fa5 100644
--- a/package.json
+++ b/package.json
@@ -5,14 +5,14 @@
"author": "SmartHR-UI Team",
"dependencies": {
"@smarthr/wareki": "^1.2.0",
- "css-loader": "^7.1.0",
+ "css-loader": "^7.1.1",
"dayjs": "^1.11.10",
"lodash.merge": "^4.6.2",
"lodash.range": "^3.2.0",
"polished": "^4.3.0",
"postcss-loader": "^8.1.1",
"react-draggable": "^4.4.6",
- "react-icons": "^5.0.1",
+ "react-icons": "^5.1.0",
"react-innertext": "^1.1.5",
"react-transition-group": "^4.4.5",
"style-loader": "^4.0.0",
@@ -44,14 +44,14 @@
"@storybook/addon-styling-webpack": "^1.0.0",
"@storybook/test-runner": "^0.17.0",
"@storybook/theming": "^8.0.8",
- "@swc/core": "^1.4.13",
+ "@swc/core": "^1.4.16",
"@swc/jest": "^0.2.36",
"@testing-library/react": "^15.0.2",
"@types/jest": "^29.5.12",
"@types/lodash.merge": "^4.6.9",
"@types/lodash.range": "^3.2.9",
"@types/node": "^20.12.7",
- "@types/react": "^18.2.78",
+ "@types/react": "^18.2.79",
"@types/react-dom": "^18.2.25",
"@types/react-test-renderer": "^17.0.9",
"@types/react-transition-group": "^4.4.10",
@@ -59,8 +59,8 @@
"autoprefixer": "^10.4.19",
"axe-playwright": "^2.0.1",
"babel-loader": "^9.1.3",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "babel-plugin-polyfill-corejs2": "^0.4.11",
+ "babel-plugin-polyfill-regenerator": "^0.6.2",
"chromatic": "^11.3.0",
"ecma-version-validator-webpack-plugin": "^1.2.1",
"eslint": "^8.57.0",
@@ -81,8 +81,8 @@
"postcss-syntax": "^0.36.2",
"prettier": "^3.2.5",
"prettier-config-smarthr": "^1.0.0",
- "prettier-plugin-tailwindcss": "^0.5.13",
- "puppeteer": "^22.6.4",
+ "prettier-plugin-tailwindcss": "^0.5.14",
+ "puppeteer": "^22.6.5",
"react": "^18.2.0",
"react-docgen-typescript": "^2.2.2",
"react-dom": "^18.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 693042a347..e3c4ba5bad 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -16,8 +16,8 @@ dependencies:
specifier: ^1.2.0
version: 1.2.0
css-loader:
- specifier: ^7.1.0
- version: 7.1.0(webpack@5.91.0)
+ specifier: ^7.1.1
+ version: 7.1.1(webpack@5.91.0)
dayjs:
specifier: ^1.11.10
version: 1.11.10
@@ -37,8 +37,8 @@ dependencies:
specifier: ^4.4.6
version: 4.4.6(react-dom@18.2.0)(react@18.2.0)
react-icons:
- specifier: ^5.0.1
- version: 5.0.1(react@18.2.0)
+ specifier: ^5.1.0
+ version: 5.1.0(react@18.2.0)
react-innertext:
specifier: ^1.1.5
version: 1.1.5(@types/react@18.2.55)(react@18.2.0)
@@ -115,7 +115,7 @@ devDependencies:
version: 8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)
'@storybook/react-webpack5':
specifier: ^8.0.8
- version: 8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)
+ version: 8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)
'@storybook/source-loader':
specifier: ^8.0.8
version: 8.0.8
@@ -129,11 +129,11 @@ devDependencies:
specifier: ^8.0.8
version: 8.0.8(react-dom@18.2.0)(react@18.2.0)
'@swc/core':
- specifier: ^1.4.13
- version: 1.4.13
+ specifier: ^1.4.16
+ version: 1.4.16
'@swc/jest':
specifier: ^0.2.36
- version: 0.2.36(@swc/core@1.4.13)
+ version: 0.2.36(@swc/core@1.4.16)
'@testing-library/react':
specifier: ^15.0.2
version: 15.0.2(react-dom@18.2.0)(react@18.2.0)
@@ -174,11 +174,11 @@ devDependencies:
specifier: ^9.1.3
version: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0)
babel-plugin-polyfill-corejs2:
- specifier: ^0.4.10
- version: 0.4.10(@babel/core@7.24.4)
+ specifier: ^0.4.11
+ version: 0.4.11(@babel/core@7.24.4)
babel-plugin-polyfill-regenerator:
- specifier: ^0.6.1
- version: 0.6.1(@babel/core@7.24.4)
+ specifier: ^0.6.2
+ version: 0.6.2(@babel/core@7.24.4)
chromatic:
specifier: ^11.3.0
version: 11.3.0
@@ -240,11 +240,11 @@ devDependencies:
specifier: ^1.0.0
version: 1.0.0
prettier-plugin-tailwindcss:
- specifier: ^0.5.13
- version: 0.5.13(prettier@3.2.5)
+ specifier: ^0.5.14
+ version: 0.5.14(prettier@3.2.5)
puppeteer:
- specifier: ^22.6.4
- version: 22.6.4(typescript@5.4.5)
+ specifier: ^22.6.5
+ version: 22.6.5(typescript@5.4.5)
react:
specifier: ^18.2.0
version: 18.2.0
@@ -298,7 +298,7 @@ devDependencies:
version: 9.5.1(typescript@5.4.5)(webpack@5.91.0)
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5)
+ version: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5)
ttypescript:
specifier: ^1.5.15
version: 1.5.15(ts-node@10.9.2)(typescript@5.4.5)
@@ -313,7 +313,7 @@ devDependencies:
version: 7.2.0
webpack:
specifier: ^5.91.0
- version: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ version: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
packages:
@@ -476,8 +476,8 @@ packages:
- supports-color
dev: true
- /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.4):
- resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==}
+ /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.4):
+ resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
@@ -1487,7 +1487,7 @@ packages:
'@babel/core': 7.24.4
'@babel/helper-module-imports': 7.24.3
'@babel/helper-plugin-utils': 7.24.0
- babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4)
+ babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4)
babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.24.4)
babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.4)
semver: 6.3.1
@@ -1685,9 +1685,9 @@ packages:
'@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4)
'@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.4)
'@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.4)
- babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4)
+ babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4)
babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4)
- babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.4)
+ babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.4)
core-js-compat: 3.36.1
semver: 6.3.1
transitivePeerDependencies:
@@ -2703,8 +2703,8 @@ packages:
dev: true
optional: true
- /@puppeteer/browsers@2.2.1:
- resolution: {integrity: sha512-QSXujx4d4ogDamQA8ckkkRieFzDgZEuZuGiey9G7CuDcbnX4iINKWxTPC5Br2AEzY9ICAvcndqgAUFMMKnS/Tw==}
+ /@puppeteer/browsers@2.2.2:
+ resolution: {integrity: sha512-hZ/JhxPIceWaGSEzUZp83/8M49CoxlkuThfTR7t4AoCu5+ZvJ3vktLm60Otww2TXeROB5igiZ8D9oPQh6ckBVg==}
engines: {node: '>=18'}
hasBin: true
dependencies:
@@ -3458,7 +3458,7 @@ packages:
webpack: ^5.0.0
dependencies:
'@storybook/node-logger': 8.0.8
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/@storybook/addon-styling@1.3.7(@types/react-dom@18.2.25)(@types/react@18.2.55)(less@4.2.0)(postcss@8.4.38)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)(webpack@5.91.0):
@@ -3505,7 +3505,7 @@ packages:
resolve-url-loader: 5.0.0
sass-loader: 13.3.3(webpack@5.91.0)
style-loader: 3.3.4(webpack@5.91.0)
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
transitivePeerDependencies:
- '@rspack/core'
- '@types/react'
@@ -3615,7 +3615,7 @@ packages:
- supports-color
dev: true
- /@storybook/builder-webpack5@8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(typescript@5.4.5):
+ /@storybook/builder-webpack5@8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(typescript@5.4.5):
resolution: {integrity: sha512-NG7XHNSZ0+1DtHYhE36vDtXlZHVUUjC0TqqYQ3+On6Ormih80MndbmPjL6XhfleES8YzG28MhNePdOY867rehg==}
peerDependencies:
typescript: '*'
@@ -3648,13 +3648,13 @@ packages:
process: 0.11.10
semver: 7.6.0
style-loader: 3.3.4(webpack@5.91.0)
- terser-webpack-plugin: 5.3.10(@swc/core@1.4.13)(esbuild@0.18.16)(webpack@5.91.0)
+ terser-webpack-plugin: 5.3.10(@swc/core@1.4.16)(esbuild@0.18.16)(webpack@5.91.0)
ts-dedent: 2.2.0
typescript: 5.4.5
url: 0.11.1
util: 0.12.5
util-deprecate: 1.0.2
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
webpack-dev-middleware: 6.1.2(webpack@5.91.0)
webpack-hot-middleware: 2.25.1
webpack-virtual-modules: 0.5.0
@@ -4104,7 +4104,7 @@ packages:
resolution: {integrity: sha512-ymps3MMTxtMWq0eDiXk1iO7iv0Eg0PuUvOpPPohEJauGzU9THv81xx01aaHKSprFFJYD2LMQr1aFuUplItO12g==}
dev: true
- /@storybook/preset-react-webpack@8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5):
+ /@storybook/preset-react-webpack@8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5):
resolution: {integrity: sha512-ucdSQWE3VzleDprd5pmVbUbPPfkU9yLYvJ9pOO4XZngPY4fZdL3vWMsjhBL/PPs2tQ+pC3s6rWnrOqkSMmJ+7w==}
engines: {node: '>=18.0.0'}
peerDependencies:
@@ -4132,7 +4132,7 @@ packages:
semver: 7.6.0
tsconfig-paths: 4.2.0
typescript: 5.4.5
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
transitivePeerDependencies:
- '@swc/core'
- encoding
@@ -4198,7 +4198,7 @@ packages:
react-docgen-typescript: 2.2.2(typescript@5.4.5)
tslib: 2.6.2
typescript: 5.4.5
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
transitivePeerDependencies:
- supports-color
dev: true
@@ -4213,7 +4213,7 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@storybook/react-webpack5@8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5):
+ /@storybook/react-webpack5@8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5):
resolution: {integrity: sha512-7K2hsT2H9B746bxrcFzIfbbaRajWkeZfeL7W8coSODpTUjC78Dno2bZO5FE3O0HdnbhJe2jJhDpJKVhFR0MKiQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
@@ -4224,8 +4224,8 @@ packages:
typescript:
optional: true
dependencies:
- '@storybook/builder-webpack5': 8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(typescript@5.4.5)
- '@storybook/preset-react-webpack': 8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)
+ '@storybook/builder-webpack5': 8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(typescript@5.4.5)
+ '@storybook/preset-react-webpack': 8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)
'@storybook/react': 8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)
'@types/node': 18.18.6
react: 18.2.0
@@ -4337,8 +4337,8 @@ packages:
'@storybook/csf': 0.1.2
'@storybook/csf-tools': 8.0.8
'@storybook/preview-api': 8.0.8
- '@swc/core': 1.4.13
- '@swc/jest': 0.2.36(@swc/core@1.4.13)
+ '@swc/core': 1.4.16
+ '@swc/jest': 0.2.36(@swc/core@1.4.16)
expect-playwright: 0.8.0
jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
jest-circus: 29.7.0
@@ -4432,88 +4432,88 @@ packages:
file-system-cache: 2.3.0
dev: true
- /@swc/core-darwin-arm64@1.4.13:
- resolution: {integrity: sha512-36P72FLpm5iq85IvoEjBvi22DiqkkEIanJ1M0E8bkxcFHUbjBrYfPY9T6cpPyK5oQqkaTBvNAc3j1BlVD6IH6w==}
+ /@swc/core-darwin-arm64@1.4.16:
+ resolution: {integrity: sha512-UOCcH1GvjRnnM/LWT6VCGpIk0OhHRq6v1U6QXuPt5wVsgXnXQwnf5k3sG5Cm56hQHDvhRPY6HCsHi/p0oek8oQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
- /@swc/core-darwin-x64@1.4.13:
- resolution: {integrity: sha512-ye7OgKpDdyA8AMIVVdmD1ICDaFXgoEXORnVO8bBHyul0WN71yUBZMX+YxEx2lpWtiftA2vY/1MAuOR80vHkBCw==}
+ /@swc/core-darwin-x64@1.4.16:
+ resolution: {integrity: sha512-t3bgqFoYLWvyVtVL6KkFNCINEoOrIlyggT/kJRgi1y0aXSr0oVgcrQ4ezJpdeahZZ4N+Q6vT3ffM30yIunELNA==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
- /@swc/core-linux-arm-gnueabihf@1.4.13:
- resolution: {integrity: sha512-+x593Jlmu4c3lJtZUKRejWpV2MAij1Js5nmQLLdjo6ChR2D4B2rzj3iMiKn5gITew7fraF9t3fvXALdWh7HmUg==}
+ /@swc/core-linux-arm-gnueabihf@1.4.16:
+ resolution: {integrity: sha512-DvHuwvEF86YvSd0lwnzVcjOTZ0jcxewIbsN0vc/0fqm9qBdMMjr9ox6VCam1n3yYeRtj4VFgrjeNFksqbUejdQ==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-arm64-gnu@1.4.13:
- resolution: {integrity: sha512-0x8OVw4dfyNerrs/9eZX9wNnmvwbwXSMCi+LbE6Xt1pXOIwvoLtFIXcV3NsrlkFboO3sr5UAQIwDxKqbIZA9pQ==}
+ /@swc/core-linux-arm64-gnu@1.4.16:
+ resolution: {integrity: sha512-9Uu5YlPbyCvbidjKtYEsPpyZlu16roOZ5c2tP1vHfnU9bgf5Tz5q5VovSduNxPHx+ed2iC1b1URODHvDzbbDuQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-arm64-musl@1.4.13:
- resolution: {integrity: sha512-Z9c4JiequtZvngPcxbCuAOkmWBxi2vInZbjjhD5I+Q9oiJdXUz1t2USGwsGPS41Xvk1BOA3ecK2Sn1ilY3titg==}
+ /@swc/core-linux-arm64-musl@1.4.16:
+ resolution: {integrity: sha512-/YZq/qB1CHpeoL0eMzyqK5/tYZn/rzKoCYDviFU4uduSUIJsDJQuQA/skdqUzqbheOXKAd4mnJ1hT04RbJ8FPQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-x64-gnu@1.4.13:
- resolution: {integrity: sha512-ChatHtk+vX0Ke5QG+jO+rIapw/KwZsi9MedCBHFXHH6iWF4z8d51cJeN68ykcn+vAXzjNeFNdlNy5Vbkd1zAqg==}
+ /@swc/core-linux-x64-gnu@1.4.16:
+ resolution: {integrity: sha512-UUjaW5VTngZYDcA8yQlrFmqs1tLi1TxbKlnaJwoNhel9zRQ0yG1YEVGrzTvv4YApSuIiDK18t+Ip927bwucuVQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-x64-musl@1.4.13:
- resolution: {integrity: sha512-0Pz39YR530mXpsztwQkmEKdkkZy4fY4Smdh4pkm6Ly8Nndyo0te/l4bcAGqN24Jp7aVwF/QSy14SAtw4HRjU9g==}
+ /@swc/core-linux-x64-musl@1.4.16:
+ resolution: {integrity: sha512-aFhxPifevDTwEDKPi4eRYWzC0p/WYJeiFkkpNU5Uc7a7M5iMWPAbPFUbHesdlb9Jfqs5c07oyz86u+/HySBNPQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-win32-arm64-msvc@1.4.13:
- resolution: {integrity: sha512-LVZfhlD+jHcAbz5NN+gAJ1BEasB0WpcvUzcsJt0nQSRsojgzPzFjJ+fzEBnvT7SMtqKkrnVJ0OmDYeh88bDRpw==}
+ /@swc/core-win32-arm64-msvc@1.4.16:
+ resolution: {integrity: sha512-bTD43MbhIHL2s5QgCwyleaGwl96Gk/scF2TaVKdUe4QlJCDV/YK9h5oIBAp63ckHtE8GHlH4c8dZNBiAXn4Org==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
- /@swc/core-win32-ia32-msvc@1.4.13:
- resolution: {integrity: sha512-78hxHWUvUZtWsnhcf8DKwhBcNFJw+j4y4fN2B9ioXmBWX2tIyw+BqUHOrismOtjPihaZmwe/Ok2e4qmkawE2fw==}
+ /@swc/core-win32-ia32-msvc@1.4.16:
+ resolution: {integrity: sha512-/lmZeAN/qV5XbK2SEvi8e2RkIg8FQNYiSA8y2/Zb4gTUMKVO5JMLH0BSWMiIKMstKDPDSxMWgwJaQHF8UMyPmQ==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
- /@swc/core-win32-x64-msvc@1.4.13:
- resolution: {integrity: sha512-WSfy1u2Xde6jU7UpHIInCUMW98Zw9iZglddKUAvmr1obkZji5U6EX0Oca3asEJdZPFb+2lMLjt0Mh5a1YisROg==}
+ /@swc/core-win32-x64-msvc@1.4.16:
+ resolution: {integrity: sha512-BPAfFfODWXtUu6SwaTTftDHvcbDyWBSI/oanUeRbQR5vVWkXoQ3cxLTsDluc3H74IqXS5z1Uyoe0vNo2hB1opA==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
requiresBuild: true
optional: true
- /@swc/core@1.4.13:
- resolution: {integrity: sha512-rOtusBE+2gaeRkAJn5E4zp5yzZekZOypzSOz5ZG6P1hFbd+Cc26fWEdK6sUSnrkkvTd0Oj33KXLB/4UkbK/UHA==}
+ /@swc/core@1.4.16:
+ resolution: {integrity: sha512-Xaf+UBvW6JNuV131uvSNyMXHn+bh6LyKN4tbv7tOUFQpXyz/t9YWRE04emtlUW9Y0qrm/GKFCbY8n3z6BpZbTA==}
engines: {node: '>=10'}
requiresBuild: true
peerDependencies:
@@ -4525,28 +4525,28 @@ packages:
'@swc/counter': 0.1.3
'@swc/types': 0.1.5
optionalDependencies:
- '@swc/core-darwin-arm64': 1.4.13
- '@swc/core-darwin-x64': 1.4.13
- '@swc/core-linux-arm-gnueabihf': 1.4.13
- '@swc/core-linux-arm64-gnu': 1.4.13
- '@swc/core-linux-arm64-musl': 1.4.13
- '@swc/core-linux-x64-gnu': 1.4.13
- '@swc/core-linux-x64-musl': 1.4.13
- '@swc/core-win32-arm64-msvc': 1.4.13
- '@swc/core-win32-ia32-msvc': 1.4.13
- '@swc/core-win32-x64-msvc': 1.4.13
+ '@swc/core-darwin-arm64': 1.4.16
+ '@swc/core-darwin-x64': 1.4.16
+ '@swc/core-linux-arm-gnueabihf': 1.4.16
+ '@swc/core-linux-arm64-gnu': 1.4.16
+ '@swc/core-linux-arm64-musl': 1.4.16
+ '@swc/core-linux-x64-gnu': 1.4.16
+ '@swc/core-linux-x64-musl': 1.4.16
+ '@swc/core-win32-arm64-msvc': 1.4.16
+ '@swc/core-win32-ia32-msvc': 1.4.16
+ '@swc/core-win32-x64-msvc': 1.4.16
/@swc/counter@0.1.3:
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- /@swc/jest@0.2.36(@swc/core@1.4.13):
+ /@swc/jest@0.2.36(@swc/core@1.4.16):
resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==}
engines: {npm: '>= 7.0.0'}
peerDependencies:
'@swc/core': '*'
dependencies:
'@jest/create-cache-key-function': 29.7.0
- '@swc/core': 1.4.13
+ '@swc/core': 1.4.16
'@swc/counter': 0.1.3
jsonc-parser: 3.2.0
dev: true
@@ -5977,7 +5977,7 @@ packages:
'@babel/core': 7.24.4
find-cache-dir: 4.0.0
schema-utils: 4.0.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/babel-plugin-istanbul@6.1.1:
@@ -6014,14 +6014,14 @@ packages:
resolve: 1.22.8
dev: true
- /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.4):
- resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==}
+ /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.4):
+ resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
'@babel/compat-data': 7.24.4
'@babel/core': 7.24.4
- '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4)
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
@@ -6033,7 +6033,7 @@ packages:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
'@babel/core': 7.24.4
- '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4)
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4)
core-js-compat: 3.36.1
transitivePeerDependencies:
- supports-color
@@ -6062,13 +6062,13 @@ packages:
- supports-color
dev: true
- /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.4):
- resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==}
+ /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.4):
+ resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
'@babel/core': 7.24.4
- '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4)
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4)
transitivePeerDependencies:
- supports-color
dev: true
@@ -7155,11 +7155,11 @@ packages:
postcss-modules-values: 4.0.0(postcss@8.4.38)
postcss-value-parser: 4.2.0
semver: 7.6.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
- /css-loader@7.1.0(webpack@5.91.0):
- resolution: {integrity: sha512-VFNj47MAG84MqYDdh9puJG0h98Xs7gEYaX0aeGkfjYqBLB0seOE325sVbqWwaNu3hMZwEP4bB+F4gvF+A63qMA==}
+ /css-loader@7.1.1(webpack@5.91.0):
+ resolution: {integrity: sha512-OxIR5P2mjO1PSXk44bWuQ8XtMK4dpEqpIyERCx3ewOo3I8EmbcxMPUc5ScLtQfgXtOojoMv57So4V/C02HQLsw==}
engines: {node: '>= 18.12.0'}
peerDependencies:
'@rspack/core': 0.x || 1.x
@@ -7178,7 +7178,7 @@ packages:
postcss-modules-values: 4.0.0(postcss@8.4.38)
postcss-value-parser: 4.2.0
semver: 7.6.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: false
/css-select@4.1.3:
@@ -7785,7 +7785,7 @@ packages:
webpack: ^4.40.0 || ^5.0.0
dependencies:
acorn: 8.11.3
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/ee-first@1.1.1:
@@ -8895,7 +8895,7 @@ packages:
semver: 7.6.0
tapable: 2.2.1
typescript: 5.4.5
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/form-data@3.0.1:
@@ -9561,7 +9561,7 @@ packages:
lodash: 4.17.21
pretty-error: 4.0.0
tapable: 2.2.1
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/htmlparser2@3.10.1:
@@ -10464,7 +10464,7 @@ packages:
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
- ts-node: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5)
+ ts-node: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -11144,7 +11144,7 @@ packages:
webpack: ^5.0.0
dependencies:
less: 4.2.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/less@4.2.0:
@@ -12611,7 +12611,7 @@ packages:
dependencies:
lilconfig: 2.1.0
postcss: 8.4.38
- ts-node: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5)
+ ts-node: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5)
yaml: 2.3.4
dev: false
@@ -12626,7 +12626,7 @@ packages:
jiti: 1.21.0
postcss: 8.4.38
semver: 7.6.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
transitivePeerDependencies:
- typescript
dev: true
@@ -12648,7 +12648,7 @@ packages:
jiti: 1.21.0
postcss: 8.4.38
semver: 7.6.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
transitivePeerDependencies:
- typescript
dev: false
@@ -12774,8 +12774,8 @@ packages:
resolution: {integrity: sha512-4sCh8QhwdDn46O+zEi83PXIVcpLIYHp5FPKCQ19VUJuhvkotDJd0mHlevlNIZ2OW8v+mK7HMZpAeaPiGhvjG4Q==}
dev: true
- /prettier-plugin-tailwindcss@0.5.13(prettier@3.2.5):
- resolution: {integrity: sha512-2tPWHCFNC+WRjAC4SIWQNSOdcL1NNkydXim8w7TDqlZi+/ulZYz2OouAI6qMtkggnPt7lGamboj6LcTMwcCvoQ==}
+ /prettier-plugin-tailwindcss@0.5.14(prettier@3.2.5):
+ resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==}
engines: {node: '>=14.21.3'}
peerDependencies:
'@ianvs/prettier-plugin-sort-imports': '*'
@@ -12979,11 +12979,11 @@ packages:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'}
- /puppeteer-core@22.6.4:
- resolution: {integrity: sha512-QtfJwPmqQec3EHc6LqbEz03vSiuVAr9bYp0TV87dLoreev6ZevsXdLgOfQgoA3GocrsSe/eUf7NRPQ1lQfsc3w==}
+ /puppeteer-core@22.6.5:
+ resolution: {integrity: sha512-s0/5XkAWe0/dWISiljdrybjwDCHhgN31Nu/wznOZPKeikgcJtZtbvPKBz0t802XWqfSQnQDt3L6xiAE5JLlfuw==}
engines: {node: '>=18'}
dependencies:
- '@puppeteer/browsers': 2.2.1
+ '@puppeteer/browsers': 2.2.2
chromium-bidi: 0.5.17(devtools-protocol@0.0.1262051)
debug: 4.3.4(supports-color@5.5.0)
devtools-protocol: 0.0.1262051
@@ -12994,16 +12994,16 @@ packages:
- utf-8-validate
dev: true
- /puppeteer@22.6.4(typescript@5.4.5):
- resolution: {integrity: sha512-J9hXNwZmuqKDmNMj6kednZH8jzbdX9735NQfQJrq5LRD4nHisAMyW9pCD7glKi+iM7RV9JkesI1MYhdsN+0ZSQ==}
+ /puppeteer@22.6.5(typescript@5.4.5):
+ resolution: {integrity: sha512-YuoRKGj3MxHhUwrey7vmNvU4odGdUdNsj1ee8pfcqQlLWIXfMOXZCAXh8xdzpZESHH3tCGWp2xmPZE8E6iUEWg==}
engines: {node: '>=18'}
hasBin: true
requiresBuild: true
dependencies:
- '@puppeteer/browsers': 2.2.1
+ '@puppeteer/browsers': 2.2.2
cosmiconfig: 9.0.0(typescript@5.4.5)
devtools-protocol: 0.0.1262051
- puppeteer-core: 22.6.4
+ puppeteer-core: 22.6.5
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -13160,8 +13160,8 @@ packages:
resolution: {integrity: sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==}
dev: true
- /react-icons@5.0.1(react@18.2.0):
- resolution: {integrity: sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==}
+ /react-icons@5.1.0(react@18.2.0):
+ resolution: {integrity: sha512-D3zug1270S4hbSlIRJ0CUS97QE1yNNKDjzQe3HqY0aefp2CBn9VgzgES27sRR2gOvFK+0CNx/BW0ggOESp6fqQ==}
peerDependencies:
react: ^18.2.0
dependencies:
@@ -13716,7 +13716,7 @@ packages:
optional: true
dependencies:
neo-async: 2.6.2
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/sax@1.3.0:
@@ -14338,7 +14338,7 @@ packages:
peerDependencies:
webpack: ^5.0.0
dependencies:
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/style-loader@4.0.0(webpack@5.91.0):
@@ -14347,7 +14347,7 @@ packages:
peerDependencies:
webpack: ^5.27.0
dependencies:
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: false
/styled-components@5.3.11(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0):
@@ -14665,7 +14665,7 @@ packages:
unique-string: 2.0.0
dev: true
- /terser-webpack-plugin@5.3.10(@swc/core@1.4.13)(esbuild@0.18.16)(webpack@5.91.0):
+ /terser-webpack-plugin@5.3.10(@swc/core@1.4.16)(esbuild@0.18.16)(webpack@5.91.0):
resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -14682,13 +14682,13 @@ packages:
optional: true
dependencies:
'@jridgewell/trace-mapping': 0.3.25
- '@swc/core': 1.4.13
+ '@swc/core': 1.4.16
esbuild: 0.18.16
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.1
terser: 5.27.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
/terser@5.27.0:
resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==}
@@ -14815,6 +14815,7 @@ packages:
/testcafe-safe-storage@1.1.2:
resolution: {integrity: sha512-6km7D26+KCQGeFlSQ9fVEU7tD8qdioSpqzxU8CCZkd2KzBS0jTFkqaJ54rPaLdd5+wdhgO3+as3LMm4F0EDeYA==}
+ deprecated: The testcafe-safe-storage package has reached end-of-life and will not receive further updates.
dev: true
/testcafe-selector-generator@0.1.0:
@@ -15085,10 +15086,10 @@ packages:
semver: 7.6.0
source-map: 0.7.4
typescript: 5.4.5
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
- /ts-node@10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5):
+ /ts-node@10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
@@ -15103,7 +15104,7 @@ packages:
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
- '@swc/core': 1.4.13
+ '@swc/core': 1.4.16
'@tsconfig/node10': 1.0.8
'@tsconfig/node12': 1.0.9
'@tsconfig/node14': 1.0.1
@@ -15163,7 +15164,7 @@ packages:
typescript: '>=3.2.2'
dependencies:
resolve: 1.22.8
- ts-node: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5)
+ ts-node: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5)
typescript: 5.4.5
dev: true
@@ -15674,7 +15675,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.0.0
- webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16)
+ webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16)
dev: true
/webpack-hot-middleware@2.25.1:
@@ -15694,7 +15695,7 @@ packages:
resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
dev: true
- /webpack@5.91.0(@swc/core@1.4.13)(esbuild@0.18.16):
+ /webpack@5.91.0(@swc/core@1.4.16)(esbuild@0.18.16):
resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -15725,7 +15726,7 @@ packages:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(@swc/core@1.4.13)(esbuild@0.18.16)(webpack@5.91.0)
+ terser-webpack-plugin: 5.3.10(@swc/core@1.4.16)(esbuild@0.18.16)(webpack@5.91.0)
watchpack: 2.4.1
webpack-sources: 3.2.3
transitivePeerDependencies:
diff --git a/src/components/AccordionPanel/AccordionPanel.stories.tsx b/src/components/AccordionPanel/AccordionPanel.stories.tsx
index 8b91f7aa35..0ad5b3b490 100644
--- a/src/components/AccordionPanel/AccordionPanel.stories.tsx
+++ b/src/components/AccordionPanel/AccordionPanel.stories.tsx
@@ -5,7 +5,7 @@ import styled, { css } from 'styled-components'
import { Base } from '../Base'
import { Button } from '../Button'
-import { FormGroup } from '../FormGroup'
+import { FormControl } from '../FormControl'
import { Input } from '../Input'
import { AccordionPanel } from './AccordionPanel'
@@ -35,14 +35,14 @@ const content = () => {
{lorem}
-
+
-
+
-
+
-
+
)
diff --git a/src/components/Base/Base.stories.tsx b/src/components/Base/Base.stories.tsx
index 42c389b1b1..92b6d678ff 100644
--- a/src/components/Base/Base.stories.tsx
+++ b/src/components/Base/Base.stories.tsx
@@ -3,6 +3,8 @@ import React from 'react'
import styled from 'styled-components'
import { useTheme } from '../../hooks/useTheme'
+import { Heading } from '../Heading'
+import { Section } from '../SectioningContent'
import { Table, Td, Th } from '../Table'
import { Text } from '../Text'
@@ -92,6 +94,21 @@ export const BaseStory: StoryFn = () => {
))}
+
SectioningContentをasに指定した場合の見出しレベル自動計算
+
+
+
+
+ 親見出し
+
+ {/* FIXME: Baseに対するチェックは eslint-plugin-smarthr@v0.5.9以降で修正されるため下記コメントは削除する */}
+ {/* eslint-disable-next-line smarthr/a11y-heading-in-sectioning-content */}
+ 子見出し
+
+
+
+
+
)
}
diff --git a/src/components/Base/Base.tsx b/src/components/Base/Base.tsx
index 11a63c8860..63d56f778f 100644
--- a/src/components/Base/Base.tsx
+++ b/src/components/Base/Base.tsx
@@ -1,6 +1,8 @@
import React, { ComponentPropsWithRef, PropsWithChildren, forwardRef, useMemo } from 'react'
import { VariantProps, tv } from 'tailwind-variants'
+import { useSectionWrapper } from '../SectioningContent/useSectioningWrapper'
+
import type { Gap } from '../../types'
const base = tv({
@@ -137,6 +139,12 @@ export const Base = forwardRef(
})
}, [className, layer, overflow, padding, radius])
- return
+ const Wrapper = useSectionWrapper(Component)
+
+ return (
+
+
+
+ )
},
)
diff --git a/src/components/Base/BaseColumn/BaseColumn.stories.tsx b/src/components/Base/BaseColumn/BaseColumn.stories.tsx
index 36b8a6ef5d..d9cc2832ed 100644
--- a/src/components/Base/BaseColumn/BaseColumn.stories.tsx
+++ b/src/components/Base/BaseColumn/BaseColumn.stories.tsx
@@ -1,7 +1,9 @@
import { StoryFn } from '@storybook/react'
import React from 'react'
+import { Heading } from '../../Heading'
import { Stack } from '../../Layout'
+import { Section } from '../../SectioningContent'
import { BaseColumn } from './BaseColumn'
@@ -23,5 +25,15 @@ export const All: StoryFn = () => (
padding を1.5文字分に、背景を ACTION_BACKGROUND に変更。
+
+
+ 見出しレベルの自動計算の確認
+
+ {/* FIXME: BaseColumnに対するチェックは eslint-plugin-smarthr@v0.5.9以降で修正されるため下記コメントは削除する */}
+ {/* eslint-disable-next-line smarthr/a11y-heading-in-sectioning-content */}
+ 小見出し
+
+
+
)
diff --git a/src/components/Dialog/Dialog.stories.tsx b/src/components/Dialog/Dialog.stories.tsx
index 62a33805f0..01f53c86b0 100644
--- a/src/components/Dialog/Dialog.stories.tsx
+++ b/src/components/Dialog/Dialog.stories.tsx
@@ -5,11 +5,11 @@ import styled from 'styled-components'
import { Button } from '../Button'
import { DatePicker } from '../DatePicker'
+import { Fieldset } from '../Fieldset'
import { FormControl } from '../FormControl'
import { Heading } from '../Heading'
import { Input } from '../Input'
import { Cluster, Stack } from '../Layout'
-import { Fieldset } from '../NewFieldset'
import { RadioButton } from '../RadioButton'
import { Section } from '../SectioningContent'
import { Table, Td, TdCheckbox, Th, ThCheckbox } from '../Table'
diff --git a/src/components/Dialog/DialogContentInner.tsx b/src/components/Dialog/DialogContentInner.tsx
index 1793b316b8..3d6e02f14c 100644
--- a/src/components/Dialog/DialogContentInner.tsx
+++ b/src/components/Dialog/DialogContentInner.tsx
@@ -12,10 +12,10 @@ import { tv } from 'tailwind-variants'
import { useHandleEscape } from '../../hooks/useHandleEscape'
import { useTheme } from '../../hooks/useTailwindTheme'
-import { BodyScrollSuppressor } from './BodyScrollSuppressor'
import { DialogOverlap } from './DialogOverlap'
import { DialogPositionProvider } from './DialogPositionProvider'
import { FocusTrap } from './FocusTrap'
+import { useBodyScrollLock } from './useBodyScrollLock'
export type DialogContentInnerProps = PropsWithChildren<{
/**
@@ -148,6 +148,8 @@ export const DialogContentInner: FC = ({
onClickOverlay && onClickOverlay()
}, [isOpen, onClickOverlay])
+ useBodyScrollLock(isOpen)
+
return (
@@ -165,8 +167,6 @@ export const DialogContentInner: FC = ({
>
{children}
- {/* Suppresses scrolling of body while modal is displayed */}
-
diff --git a/src/components/Dialog/BodyScrollSuppressor.tsx b/src/components/Dialog/useBodyScrollLock.ts
similarity index 50%
rename from src/components/Dialog/BodyScrollSuppressor.tsx
rename to src/components/Dialog/useBodyScrollLock.ts
index 5811c70d76..e216e06121 100644
--- a/src/components/Dialog/BodyScrollSuppressor.tsx
+++ b/src/components/Dialog/useBodyScrollLock.ts
@@ -1,7 +1,6 @@
-import React, { FC, useEffect, useState } from 'react'
-import { createGlobalStyle, css } from 'styled-components'
+import { useEffect, useState } from 'react'
-export const BodyScrollSuppressor: FC = () => {
+export const useBodyScrollLock = (isOpen: boolean) => {
const [scrollBarWidth, setScrollBarWidth] = useState(null)
const [paddingRight, setPaddingRight] = useState(null)
@@ -17,21 +16,17 @@ export const BodyScrollSuppressor: FC = () => {
setPaddingRight(scrollBarWidth + parseInt(originalPaddingRight, 10))
}, [scrollBarWidth])
- if (scrollBarWidth === null) {
- return null
- }
- return
-}
+ useEffect(() => {
+ if (!isOpen) return
+
+ if (paddingRight !== null) {
+ document.body.style.paddingInlineEnd = `${paddingRight}px`
+ }
+ document.body.style.overflow = 'hidden'
-const ScrollSuppressing = createGlobalStyle<{
- paddingRight: number | null
-}>`
- body {
- overflow: hidden;
- ${({ paddingRight }) =>
- paddingRight &&
- css`
- padding-right: ${paddingRight}px !important;
- `}
- }
-`
+ return () => {
+ document.body.style.paddingInlineEnd = ''
+ document.body.style.overflow = ''
+ }
+ }, [isOpen, paddingRight])
+}
diff --git a/src/components/Dropdown/Dropdown.stories.tsx b/src/components/Dropdown/Dropdown.stories.tsx
index 2b61f3795f..38a8cbd692 100644
--- a/src/components/Dropdown/Dropdown.stories.tsx
+++ b/src/components/Dropdown/Dropdown.stories.tsx
@@ -6,10 +6,10 @@ import styled, { css } from 'styled-components'
import { Button } from '../Button'
import { Dialog } from '../Dialog'
+import { Fieldset } from '../Fieldset'
import { FaCaretDownIcon } from '../Icon'
import { Input } from '../Input'
import { Cluster, Stack } from '../Layout'
-import { Fieldset } from '../NewFieldset'
import { RadioButton } from '../RadioButton'
import { Text } from '../Text'
diff --git a/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx b/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx
index 720446cd54..09adc83da5 100644
--- a/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx
+++ b/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx
@@ -5,10 +5,10 @@ import styled from 'styled-components'
import { Button } from '../../Button'
import { MultiComboBox, SingleComboBox } from '../../ComboBox'
+import { Fieldset } from '../../Fieldset'
import { FormControl } from '../../FormControl'
import { Input } from '../../Input'
import { Cluster, Stack } from '../../Layout'
-import { Fieldset } from '../../NewFieldset'
import { RadioButton } from '../../RadioButton'
import { FilterDropdown } from './FilterDropdown'
diff --git a/src/components/Dropdown/SortDropdown/SortDropdown.tsx b/src/components/Dropdown/SortDropdown/SortDropdown.tsx
index ea499732b8..ae2282ee85 100644
--- a/src/components/Dropdown/SortDropdown/SortDropdown.tsx
+++ b/src/components/Dropdown/SortDropdown/SortDropdown.tsx
@@ -2,9 +2,9 @@ import React, { ComponentProps, ComponentPropsWithRef } from 'react'
import { type FC, type MouseEventHandler } from 'react'
import { Button } from '../../Button'
+import { Fieldset } from '../../Fieldset'
import { FormControl } from '../../FormControl'
import { Cluster, Stack } from '../../Layout'
-import { Fieldset } from '../../NewFieldset'
import { RadioButton } from '../../RadioButton'
import { Select } from '../../Select'
import { Dropdown } from '../Dropdown'
diff --git a/src/components/FieldSet/FieldSet.stories.tsx b/src/components/FieldSet/FieldSet.stories.tsx
deleted file mode 100644
index 0c31312880..0000000000
--- a/src/components/FieldSet/FieldSet.stories.tsx
+++ /dev/null
@@ -1,133 +0,0 @@
-import { action } from '@storybook/addon-actions'
-import { StoryFn } from '@storybook/react'
-import * as React from 'react'
-import styled, { css } from 'styled-components'
-
-import { useTheme } from '../../hooks/useTheme'
-import { FaExclamationCircleIcon } from '../Icon'
-
-import { FieldSet } from './FieldSet'
-
-export default {
- title: 'Forms(フォーム)/FieldSet(非推奨)',
- component: FieldSet,
- parameters: {
- withTheming: true,
- },
-}
-
-export const All: StoryFn = () => {
- const themes = useTheme()
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
-All.storyName = 'all'
-
-const List = styled.ul`
- padding: 0 24px;
- list-style: none;
-
- & > li:not(:first-child) {
- margin-top: 16px;
- }
-`
-const Suffix = styled.div`
- display: flex;
- align-items: center;
-
- > *:first-child {
- margin-right: 4px;
- }
-`
-const SuffixText = styled.p`
- margin: 0;
- font-size: ${({ theme }) => theme.fontSize.S};
-`
-const CustomTag = styled.div(
- ({ theme }) => css`
- padding: 10px;
- border: 1px solid ${theme.color.BORDER};
- border-radius: 5px;
- `,
-)
diff --git a/src/components/FieldSet/FieldSet.tsx b/src/components/FieldSet/FieldSet.tsx
deleted file mode 100644
index e9546e3e85..0000000000
--- a/src/components/FieldSet/FieldSet.tsx
+++ /dev/null
@@ -1,134 +0,0 @@
-import React, { FC, HTMLAttributes, ReactNode } from 'react'
-import styled, { css } from 'styled-components'
-
-import { useId } from '../../hooks/useId'
-import { Theme, useTheme } from '../../hooks/useTheme'
-import { HeadingTypes } from '../Heading'
-import { FaExclamationCircleIcon } from '../Icon'
-import { Input } from '../Input'
-import { Stack } from '../Layout/Stack'
-import { StatusLabel } from '../StatusLabel'
-import { Text } from '../Text'
-
-import { useClassNames } from './useClassNames'
-
-type Props = Omit, 'error'> & {
- /** ラベル名 */
- label: ReactNode
- /** ラベルのタイプ */
- labelType?: HeadingTypes
- /** input 要素の下に表示するエラーメッセージ */
- errorMessage?: ReactNode | ReactNode[]
- /** input 要素の下に表示するヘルプメッセージ */
- helpMessage?: ReactNode
- /** ラベル部分の末尾に表示する内容 */
- labelSuffix?: ReactNode
- /** コンポーネントに適用するクラス名 */
- className?: string
-}
-type ElementProps = Omit, keyof Props>
-
-/**
- * @deprecated `Fieldset` コンポーネントは非推奨です。代わりに `FormControl` を使ってください。
- */
-export const FieldSet: FC = ({
- label,
- labelType = 'subBlockTitle',
- errorMessage,
- helpMessage,
- className = '',
- labelSuffix,
- children,
- ...props
-}) => {
- const theme = useTheme()
- const managedHtmlFor = useId()
- const helpId = useId()
- const classNames = useClassNames()
-
- return (
-
-
-
- {label}
-
-
- {props.required && (
-
- 必須
-
- )}
-
- {labelSuffix && labelSuffix}
-
-
- {helpMessage && (
-
- {helpMessage}
-
- )}
- {errorMessage && (
-
- {(Array.isArray(errorMessage) ? errorMessage : [errorMessage]).map((message, index) => (
-
-
-
- ))}
-
- )}
-
- {children ? (
- children
- ) : (
- // eslint-disable-next-line smarthr/a11y-input-has-name-attribute, smarthr/a11y-input-in-form-control
-
- )}
-
- )
-}
-
-const Wrapper = styled.div<{ $width: string | number }>`
- ${({ $width }) => css`
- display: inline-block;
- width: ${typeof $width === 'number' ? `${$width}px` : $width};
- `}
-`
-const Title = styled.div<{ themes: Theme }>`
- ${({ themes: { spacingByChar } }) => css`
- display: flex;
- align-items: center;
- margin: 0 0 ${spacingByChar(0.5)};
-
- > *:not(:first-child) {
- margin-left: ${spacingByChar(0.5)};
- }
- `}
-`
-const LabelText = styled(Text)`
- display: inline-block;
-`
-
-const HelpMessage = styled.p<{ themes: Theme }>`
- ${({ themes: { spacingByChar } }) => css`
- margin-bottom: ${spacingByChar(0.5)};
- `}
-`
-const StyledStack = styled(Stack)<{ $themes: Theme }>`
- ${({ $themes: { spacingByChar } }) => css`
- &&& {
- margin-bottom: ${spacingByChar(0.5)};
- }
- `}
-`
-
-const ErrorMessage = styled.p<{ themes: Theme }>`
- ${({ themes: { color } }) => css`
- .smarthr-ui-FieldSet-errorText {
- color: ${color.DANGER};
- }
- `}
-`
diff --git a/src/components/FieldSet/index.ts b/src/components/FieldSet/index.ts
deleted file mode 100644
index 59b4f03573..0000000000
--- a/src/components/FieldSet/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './FieldSet'
diff --git a/src/components/FieldSet/useClassNames.ts b/src/components/FieldSet/useClassNames.ts
deleted file mode 100644
index 72ce4b1a70..0000000000
--- a/src/components/FieldSet/useClassNames.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { useMemo } from 'react'
-
-import { useClassNameGenerator } from '../../hooks/useClassNameGenerator'
-
-import { FieldSet } from './FieldSet'
-
-export function useClassNames() {
- const generate = useClassNameGenerator(FieldSet.displayName || 'FieldSet')
- return useMemo(
- () => ({
- wrapper: generate(),
- title: generate('title'),
- titleText: generate('titleText'),
- label: generate('label'),
- input: generate('input'),
- error: generate('error'),
- errorIcon: generate('errorIcon'),
- errorText: generate('errorText'),
- help: generate('help'),
- }),
- [generate],
- )
-}
diff --git a/src/components/NewFieldset/Fieldset.stories.tsx b/src/components/Fieldset/Fieldset.stories.tsx
similarity index 100%
rename from src/components/NewFieldset/Fieldset.stories.tsx
rename to src/components/Fieldset/Fieldset.stories.tsx
diff --git a/src/components/Fieldset/Fieldset.tsx b/src/components/Fieldset/Fieldset.tsx
new file mode 100644
index 0000000000..fae6482036
--- /dev/null
+++ b/src/components/Fieldset/Fieldset.tsx
@@ -0,0 +1,7 @@
+import React, { ComponentProps } from 'react'
+
+import { ActualFormControl } from '../FormControl/FormControl'
+
+export const Fieldset: React.FC> = (props) => (
+
+)
diff --git a/src/components/NewFieldset/index.ts b/src/components/Fieldset/index.ts
similarity index 100%
rename from src/components/NewFieldset/index.ts
rename to src/components/Fieldset/index.ts
diff --git a/src/components/FormControl/FormControl.stories.tsx b/src/components/FormControl/FormControl.stories.tsx
index 555abebc06..a47b4df48e 100644
--- a/src/components/FormControl/FormControl.stories.tsx
+++ b/src/components/FormControl/FormControl.stories.tsx
@@ -55,6 +55,16 @@ export const All: StoryFn = () => (
+
+
+ 項目名非表示
+
+
+
+
+
+
+
各種コントロールが紐づくこと
diff --git a/src/components/FormControl/FormControl.tsx b/src/components/FormControl/FormControl.tsx
index f6a9a12967..5e8ae2e8c6 100644
--- a/src/components/FormControl/FormControl.tsx
+++ b/src/components/FormControl/FormControl.tsx
@@ -1,9 +1,307 @@
-import React, { ComponentProps } from 'react'
+import React, {
+ ComponentProps,
+ ComponentPropsWithoutRef,
+ PropsWithChildren,
+ ReactElement,
+ ReactNode,
+ useMemo,
+} from 'react'
+import { isStyledComponent } from 'styled-components'
+import { tv } from 'tailwind-variants'
-import { FormGroup } from '../FormGroup'
+import { useId } from '../../hooks/useId'
+import { MultiComboBox, SingleComboBox } from '../ComboBox'
+import { DatePicker } from '../DatePicker'
+import { DropZone } from '../DropZone'
+import { HeadingTypes } from '../Heading'
+import { FaCircleExclamationIcon } from '../Icon'
+import { CurrencyInput, Input } from '../Input'
+import { InputFile } from '../InputFile'
+import { Cluster, Stack } from '../Layout'
+import { Select } from '../Select'
+import { StatusLabel } from '../StatusLabel'
+import { Text } from '../Text'
+import { Textarea } from '../Textarea'
+import { visuallyHiddenText } from '../VisuallyHiddenText/VisuallyHiddenText'
-type Props = Omit, 'as' | 'dangerouslyTitleHidden'>
+import type { Gap } from '../../types'
+type StatusLabelProps = ComponentProps
-export const FormControl: React.FC = FormGroup
-// 一部スタイリングが内部的に FormGroup という名前に依存しているため置き換え
-FormControl.displayName = 'FormGroup'
+type Props = PropsWithChildren<{
+ /** グループのタイトル名 */
+ title: ReactNode
+ /** タイトルの見出しのタイプ */
+ titleType?: HeadingTypes
+ /** タイトルの見出しを視覚的に隠すかどうか */
+ dangerouslyTitleHidden?: boolean
+ /** label 要素に適用する `htmlFor` 値 */
+ htmlFor?: string
+ /** label 要素に適用する `id` 値 */
+ labelId?: string
+ /** タイトル群と子要素の間の間隔調整用(基本的には不要) */
+ innerMargin?: Gap
+ /** タイトルの隣に表示する `StatusLabel` の Props の配列 */
+ statusLabelProps?: StatusLabelProps | StatusLabelProps[]
+ /** タイトルの下に表示するヘルプメッセージ */
+ helpMessage?: ReactNode
+ /** タイトルの下に表示する入力例 */
+ exampleMessage?: ReactNode
+ /** タイトルの下に表示するエラーメッセージ */
+ errorMessages?: ReactNode | ReactNode[]
+ /** フォームコントロールの下に表示する補足メッセージ */
+ supplementaryMessage?: ReactNode
+ /** `true` のとき、文字色を `TEXT_DISABLED` にする */
+ disabled?: boolean
+ as?: string | React.ComponentType
+}>
+type ElementProps = Omit, keyof Props | 'aria-labelledby'>
+
+const formGroup = tv({
+ slots: {
+ wrapper: [
+ 'smarthr-ui-FormControl',
+ 'shr-mx-[unset] shr-border-none shr-p-[unset]',
+ 'disabled:shr-text-disabled',
+ '[&:disabled_.smarthr-ui-FormControl-label_>_span]:shr-text-disabled',
+ '[&:disabled_.smarthr-ui-FormControl-errorMessage]:shr-text-inherit',
+ '[&:disabled_.smarthr-ui-FormControl-supplementaryMessage]:shr-text-inherit',
+ '[&:disabled_.smarthr-ui-Input]:shr-border-default/50 [&:disabled_.smarthr-ui-Input]:shr-bg-white-darken',
+ ],
+ label: [
+ 'smarthr-ui-FormControl-label',
+ // flex-item が stretch してクリッカブル領域が広がりすぎないようにする
+ 'shr-self-start',
+ 'shr-px-[unset]',
+ ],
+ errorIcon: ['smarthr-ui-FormControl-errorMessage', 'shr-text-danger'],
+ },
+})
+
+const childrenWrapper = tv({
+ variants: {
+ innerMargin: {
+ 0: '[&&&]:shr-mt-0',
+ 0.25: '[&&&]:shr-mt-0.25',
+ 0.5: '[&&&]:shr-mt-0.5',
+ 0.75: '[&&&]:shr-mt-0.75',
+ 1: '[&&&]:shr-mt-1',
+ 1.25: '[&&&]:shr-mt-1.25',
+ 1.5: '[&&&]:shr-mt-1.5',
+ 2: '[&&&]:shr-mt-2',
+ 2.5: '[&&&]:shr-mt-2.5',
+ 3: '[&&&]:shr-mt-3',
+ 3.5: '[&&&]:shr-mt-3.5',
+ 4: '[&&&]:shr-mt-4',
+ 8: '[&&&]:shr-mt-8',
+ X3S: '[&&&]:shr-mt-0.25',
+ XXS: '[&&&]:shr-mt-0.5',
+ XS: '[&&&]:shr-mt-1',
+ S: '[&&&]:shr-mt-1.5',
+ M: '[&&&]:shr-mt-2',
+ L: '[&&&]:shr-mt-2.5',
+ XL: '[&&&]:shr-mt-3',
+ XXL: '[&&&]:shr-mt-3.5',
+ X3L: '[&&&]:shr-mt-4',
+ } as { [key in Gap]: string },
+ isRoleGroup: {
+ true: '',
+ false: '',
+ },
+ },
+ compoundVariants: [
+ {
+ innerMargin: undefined,
+ isRoleGroup: true,
+ className: '[:not([hidden])_~_&&&]:shr-mt-1',
+ },
+ {
+ innerMargin: undefined,
+ isRoleGroup: false,
+ className: '[:not([hidden])_~_&&&]:shr-mt-0.5',
+ },
+ ],
+})
+
+export const ActualFormControl: React.FC = ({
+ title,
+ titleType = 'blockTitle',
+ dangerouslyTitleHidden = false,
+ htmlFor,
+ labelId,
+ innerMargin,
+ statusLabelProps = [],
+ helpMessage,
+ exampleMessage,
+ errorMessages,
+ supplementaryMessage,
+ as = 'div',
+ className,
+ children,
+ ...props
+}) => {
+ const managedHtmlFor = useId(htmlFor)
+ const managedLabelId = useId(labelId)
+ const isRoleGroup = as === 'fieldset'
+ const statusLabelList = Array.isArray(statusLabelProps) ? statusLabelProps : [statusLabelProps]
+
+ const describedbyIds = useMemo(
+ () =>
+ Object.entries({ helpMessage, exampleMessage, supplementaryMessage, errorMessages })
+ .filter(({ 1: value }) => value)
+ .map(([key]) => `${managedHtmlFor}_${key}`)
+ .join(' '),
+ [helpMessage, exampleMessage, supplementaryMessage, errorMessages, managedHtmlFor],
+ )
+ const actualErrorMessages = useMemo(() => {
+ if (!errorMessages) {
+ return []
+ }
+
+ return Array.isArray(errorMessages) ? errorMessages : [errorMessages]
+ }, [errorMessages])
+
+ const { wrapperStyle, labelStyle, errorIconStyle, childrenWrapperStyle } = useMemo(() => {
+ const { wrapper, label, errorIcon } = formGroup()
+ return {
+ wrapperStyle: wrapper({ className }),
+ labelStyle: label({ className: dangerouslyTitleHidden ? visuallyHiddenText() : '' }),
+ errorIconStyle: errorIcon(),
+ childrenWrapperStyle: childrenWrapper({ innerMargin, isRoleGroup }),
+ }
+ }, [className, dangerouslyTitleHidden, innerMargin, isRoleGroup])
+
+ return (
+
+
+
+ {title}
+
+ {statusLabelList.length > 0 && (
+
+ {statusLabelList.map((statusLabelProp, index) => (
+
+ ))}
+
+ )}
+
+
+ {helpMessage && (
+
+ {helpMessage}
+
+ )}
+ {exampleMessage && (
+
+ {exampleMessage}
+
+ )}
+
+ {actualErrorMessages.length > 0 && (
+
+ {actualErrorMessages.map((message, index) => (
+
+
+
+ ))}
+
+ )}
+
+
+ {addIdToFirstInput(children, managedHtmlFor, describedbyIds)}
+
+
+ {supplementaryMessage && (
+
+ {supplementaryMessage}
+
+ )}
+
+ )
+}
+
+const addIdToFirstInput = (children: ReactNode, managedHtmlFor: string, describedbyIds: string) => {
+ let foundFirstInput = false
+
+ const addId = (targets: ReactNode): ReactNode[] | ReactNode =>
+ React.Children.map(targets, (child) => {
+ if (foundFirstInput || !React.isValidElement(child)) {
+ return child
+ }
+
+ const { type } = child
+
+ if (isInputElement(type)) {
+ foundFirstInput = true
+
+ const inputAttributes = {
+ id: managedHtmlFor,
+ ...(describedbyIds ? { 'aria-describedby': describedbyIds } : {}),
+ }
+
+ return React.cloneElement(child as ReactElement, {
+ ...(isComboBoxElement(type) ? { inputAttributes } : inputAttributes),
+ })
+ }
+
+ return React.cloneElement(child, {}, addId(child.props.children))
+ })
+
+ return addId(children)
+}
+
+/**
+ * - CheckBox / RadioButton は内部に label を含むため対象外
+ * - SearchInput は label を含むため対象外
+ * - InputWithTooltip は領域が狭く FormControl を置けない場所での私用を想定しているため対象外
+ *
+ * @param type
+ * @returns
+ */
+const isInputElement = (type: string | React.JSXElementConstructor) => {
+ const _type = isStyledComponent(type) ? type.target : type
+ return (
+ _type === Input ||
+ _type === CurrencyInput ||
+ _type === Textarea ||
+ _type === DatePicker ||
+ _type === Select ||
+ _type === SingleComboBox ||
+ _type === MultiComboBox ||
+ _type === InputFile ||
+ _type === DropZone
+ )
+}
+
+const isComboBoxElement = (type: string | React.JSXElementConstructor) => {
+ const _type = isStyledComponent(type) ? type.target : type
+ return _type === SingleComboBox || _type === MultiComboBox
+}
+
+export const FormControl: React.FC> = ActualFormControl
diff --git a/src/components/FormGroup/FormGroup.stories.tsx b/src/components/FormGroup/FormGroup.stories.tsx
deleted file mode 100644
index 588ca0c9f3..0000000000
--- a/src/components/FormGroup/FormGroup.stories.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { StoryFn } from '@storybook/react'
-import React from 'react'
-
-import { CompactInformationPanel } from '../CompactInformationPanel'
-import { TextLink } from '../TextLink'
-
-import { FormGroup } from './FormGroup'
-
-export default {
- title: 'Forms(フォーム)/FormGroup(非推奨)',
- component: FormGroup,
-}
-
-export const All: StoryFn = () => (
-
- FormGroupコンポーネントは非推奨です。
- FormControlか
- Fieldset
- コンポーネントを使用してください。
-
-)
-All.storyName = 'all'
diff --git a/src/components/FormGroup/FormGroup.tsx b/src/components/FormGroup/FormGroup.tsx
deleted file mode 100644
index 60d84e1581..0000000000
--- a/src/components/FormGroup/FormGroup.tsx
+++ /dev/null
@@ -1,308 +0,0 @@
-import React, {
- ComponentProps,
- ComponentPropsWithoutRef,
- PropsWithChildren,
- ReactElement,
- ReactNode,
- useMemo,
-} from 'react'
-import { isStyledComponent } from 'styled-components'
-import { tv } from 'tailwind-variants'
-
-import { useId } from '../../hooks/useId'
-import { MultiComboBox, SingleComboBox } from '../ComboBox'
-import { DatePicker } from '../DatePicker'
-import { DropZone } from '../DropZone'
-import { HeadingTypes } from '../Heading'
-import { FaCircleExclamationIcon } from '../Icon'
-import { CurrencyInput, Input } from '../Input'
-import { InputFile } from '../InputFile'
-import { Cluster, Stack } from '../Layout'
-import { Select } from '../Select'
-import { StatusLabel } from '../StatusLabel'
-import { Text } from '../Text'
-import { Textarea } from '../Textarea'
-import { visuallyHiddenText } from '../VisuallyHiddenText/VisuallyHiddenText'
-
-import type { Gap } from '../../types'
-type StatusLabelProps = ComponentProps
-
-type Props = PropsWithChildren<{
- /** グループのタイトル名 */
- title: ReactNode
- /** タイトルの見出しのタイプ */
- titleType?: HeadingTypes
- /** タイトルの見出しを視覚的に隠すかどうか */
- dangerouslyTitleHidden?: boolean
- /** label 要素に適用する `htmlFor` 値 */
- htmlFor?: string
- /** label 要素に適用する `id` 値 */
- labelId?: string
- /** タイトル群と子要素の間の間隔調整用(基本的には不要) */
- innerMargin?: Gap
- /** タイトルの隣に表示する `StatusLabel` の Props の配列 */
- statusLabelProps?: StatusLabelProps | StatusLabelProps[]
- /** タイトルの下に表示するヘルプメッセージ */
- helpMessage?: ReactNode
- /** タイトルの下に表示する入力例 */
- exampleMessage?: ReactNode
- /** タイトルの下に表示するエラーメッセージ */
- errorMessages?: ReactNode | ReactNode[]
- /** フォームコントロールの下に表示する補足メッセージ */
- supplementaryMessage?: ReactNode
- /** `true` のとき、文字色を `TEXT_DISABLED` にする */
- disabled?: boolean
- as?: string | React.ComponentType
-}>
-type ElementProps = Omit, keyof Props | 'aria-labelledby'>
-
-const formGroup = tv({
- slots: {
- wrapper: [
- 'smarthr-ui-FormGroup',
- 'shr-mx-[unset] shr-border-none shr-p-[unset]',
- 'disabled:shr-text-disabled',
- '[&:disabled_.smarthr-ui-FormGroup-label_>_span]:shr-text-disabled',
- '[&:disabled_.smarthr-ui-FormGroup-errorMessage]:shr-text-inherit',
- '[&:disabled_.smarthr-ui-FormGroup-supplementaryMessage]:shr-text-inherit',
- '[&:disabled_.smarthr-ui-Input]:shr-border-default/50 [&:disabled_.smarthr-ui-Input]:shr-bg-white-darken',
- ],
- label: [
- 'smarthr-ui-FormGroup-label',
- // flex-item が stretch してクリッカブル領域が広がりすぎないようにする
- 'shr-self-start',
- 'shr-px-[unset]',
- ],
- errorIcon: ['smarthr-ui-FormGroup-errorMessage', 'shr-text-danger'],
- },
-})
-
-const childrenWrapper = tv({
- variants: {
- innerMargin: {
- 0: '[&&&]:shr-mt-0',
- 0.25: '[&&&]:shr-mt-0.25',
- 0.5: '[&&&]:shr-mt-0.5',
- 0.75: '[&&&]:shr-mt-0.75',
- 1: '[&&&]:shr-mt-1',
- 1.25: '[&&&]:shr-mt-1.25',
- 1.5: '[&&&]:shr-mt-1.5',
- 2: '[&&&]:shr-mt-2',
- 2.5: '[&&&]:shr-mt-2.5',
- 3: '[&&&]:shr-mt-3',
- 3.5: '[&&&]:shr-mt-3.5',
- 4: '[&&&]:shr-mt-4',
- 8: '[&&&]:shr-mt-8',
- X3S: '[&&&]:shr-mt-0.25',
- XXS: '[&&&]:shr-mt-0.5',
- XS: '[&&&]:shr-mt-1',
- S: '[&&&]:shr-mt-1.5',
- M: '[&&&]:shr-mt-2',
- L: '[&&&]:shr-mt-2.5',
- XL: '[&&&]:shr-mt-3',
- XXL: '[&&&]:shr-mt-3.5',
- X3L: '[&&&]:shr-mt-4',
- } as { [key in Gap]: string },
- isRoleGroup: {
- true: '',
- false: '',
- },
- },
- compoundVariants: [
- {
- innerMargin: undefined,
- isRoleGroup: true,
- className: '[&&&]:shr-mt-1',
- },
- {
- innerMargin: undefined,
- isRoleGroup: false,
- className: '[&&&]:shr-mt-0.5',
- },
- ],
-})
-
-/**
- * @deprecated `FormGroup` コンポーネントは非推奨です。代わりに `FormControl` や `Fieldset` を使ってください。
- */
-export const FormGroup: React.FC = ({
- title,
- titleType = 'blockTitle',
- dangerouslyTitleHidden = false,
- htmlFor,
- labelId,
- innerMargin,
- statusLabelProps = [],
- helpMessage,
- exampleMessage,
- errorMessages,
- supplementaryMessage,
- as = 'div',
- className,
- children,
- ...props
-}) => {
- const managedHtmlFor = useId(htmlFor)
- const managedLabelId = useId(labelId)
- const isRoleGroup = as === 'fieldset'
- const statusLabelList = Array.isArray(statusLabelProps) ? statusLabelProps : [statusLabelProps]
-
- const describedbyIds = useMemo(
- () =>
- Object.entries({ helpMessage, exampleMessage, supplementaryMessage, errorMessages })
- .filter(({ 1: value }) => value)
- .map(([key]) => `${managedHtmlFor}_${key}`)
- .join(' '),
- [helpMessage, exampleMessage, supplementaryMessage, errorMessages, managedHtmlFor],
- )
- const actualErrorMessages = useMemo(() => {
- if (!errorMessages) {
- return []
- }
-
- return Array.isArray(errorMessages) ? errorMessages : [errorMessages]
- }, [errorMessages])
-
- const { wrapperStyle, labelStyle, errorIconStyle, childrenWrapperStyle } = useMemo(() => {
- const { wrapper, label, errorIcon } = formGroup()
- return {
- wrapperStyle: wrapper({ className }),
- labelStyle: label({ className: dangerouslyTitleHidden ? visuallyHiddenText() : '' }),
- errorIconStyle: errorIcon(),
- childrenWrapperStyle: childrenWrapper({ innerMargin, isRoleGroup }),
- }
- }, [className, dangerouslyTitleHidden, innerMargin, isRoleGroup])
-
- return (
-
-
-
- {title}
-
- {statusLabelList.length > 0 && (
-
- {statusLabelList.map((statusLabelProp, index) => (
-
- ))}
-
- )}
-
-
- {helpMessage && (
-
- {helpMessage}
-
- )}
- {exampleMessage && (
-
- {exampleMessage}
-
- )}
-
- {actualErrorMessages.length > 0 && (
-
- {actualErrorMessages.map((message, index) => (
-
-
-
- ))}
-
- )}
-
-
- {addIdToFirstInput(children, managedHtmlFor, describedbyIds)}
-
-
- {supplementaryMessage && (
-
- {supplementaryMessage}
-
- )}
-
- )
-}
-
-const addIdToFirstInput = (children: ReactNode, managedHtmlFor: string, describedbyIds: string) => {
- let foundFirstInput = false
-
- const addId = (targets: ReactNode): ReactNode[] | ReactNode =>
- React.Children.map(targets, (child) => {
- if (foundFirstInput || !React.isValidElement(child)) {
- return child
- }
-
- const { type } = child
-
- if (isInputElement(type)) {
- foundFirstInput = true
-
- const inputAttributes = {
- id: managedHtmlFor,
- ...(describedbyIds ? { 'aria-describedby': describedbyIds } : {}),
- }
-
- return React.cloneElement(child as ReactElement, {
- ...(isComboBoxElement(type) ? { inputAttributes } : inputAttributes),
- })
- }
-
- return React.cloneElement(child, {}, addId(child.props.children))
- })
-
- return addId(children)
-}
-
-/**
- * - CheckBox / RadioButton は内部に label を含むため対象外
- * - SearchInput は label を含むため対象外
- * - InputWithTooltip は領域が狭く FormControl を置けない場所での私用を想定しているため対象外
- *
- * @param type
- * @returns
- */
-const isInputElement = (type: string | React.JSXElementConstructor) => {
- const _type = isStyledComponent(type) ? type.target : type
- return (
- _type === Input ||
- _type === CurrencyInput ||
- _type === Textarea ||
- _type === DatePicker ||
- _type === Select ||
- _type === SingleComboBox ||
- _type === MultiComboBox ||
- _type === InputFile ||
- _type === DropZone
- )
-}
-
-const isComboBoxElement = (type: string | React.JSXElementConstructor) => {
- const _type = isStyledComponent(type) ? type.target : type
- return _type === SingleComboBox || _type === MultiComboBox
-}
diff --git a/src/components/FormGroup/index.ts b/src/components/FormGroup/index.ts
deleted file mode 100644
index 75ff71227d..0000000000
--- a/src/components/FormGroup/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { FormGroup } from './FormGroup'
diff --git a/src/components/Icon/Icon.tsx b/src/components/Icon/Icon.tsx
index 93cd7c084e..96c301aa26 100644
--- a/src/components/Icon/Icon.tsx
+++ b/src/components/Icon/Icon.tsx
@@ -1,4 +1,5 @@
import {
+ FaAddressBook,
FaAddressCard,
FaAngleDown,
FaAngleLeft,
@@ -16,11 +17,13 @@ import {
FaArrowUp19,
FaArrowUpWideShort,
FaArrowsRotate,
+ FaAsterisk,
FaBabyCarriage,
FaBan,
FaBars,
FaBarsStaggered,
FaBell,
+ FaBellSlash,
FaBolt,
FaBook,
FaBookOpen,
@@ -33,6 +36,7 @@ import {
FaCalendarDays,
FaCalendarXmark,
FaCaretDown,
+ FaCaretLeft,
FaCaretRight,
FaCaretUp,
FaChartArea,
@@ -55,6 +59,7 @@ import {
FaCircleUser,
FaCircleXmark,
FaClipboard,
+ FaClipboardCheck,
FaClipboardList,
FaClock,
FaClockRotateLeft,
@@ -66,6 +71,8 @@ import {
FaComments,
FaCompress,
FaCopy,
+ FaCube,
+ FaCubes,
FaDatabase,
FaDoorOpen,
FaDownLeftAndUpRightToCenter,
@@ -87,6 +94,7 @@ import {
FaFont,
FaGauge,
FaGear,
+ FaGears,
FaGlobe,
FaGraduationCap,
FaGrip,
@@ -95,8 +103,11 @@ import {
FaGripVertical,
FaHourglassHalf,
FaHouse,
+ FaIdBadge,
+ FaIdCard,
FaImage,
FaInbox,
+ FaIntercom,
FaKey,
FaLeftLong,
FaLeftRight,
@@ -104,17 +115,22 @@ import {
FaLink,
FaList,
FaListOl,
+ FaListUl,
FaLock,
+ FaLockOpen,
FaMagnifyingGlass,
FaMagnifyingGlassMinus,
FaMagnifyingGlassPlus,
+ FaMessage,
FaMinus,
+ FaMoneyCheckDollar,
FaPaintbrush,
FaPaperPlane,
FaPaperclip,
FaPen,
FaPenToSquare,
FaPencil,
+ FaPiggyBank,
FaPlus,
FaPowerOff,
FaPrint,
@@ -129,9 +145,13 @@ import {
FaRotate,
FaRotateLeft,
FaShareNodes,
+ FaShieldHalved,
+ FaSliders,
FaSort,
FaSortDown,
FaSortUp,
+ FaSquareCheck,
+ FaSquareMinus,
FaSquarePlus,
FaSquarePollVertical,
FaStar,
@@ -139,6 +159,7 @@ import {
FaTable,
FaTableList,
FaTag,
+ FaTags,
FaToolbox,
FaTrash,
FaTrashCan,
@@ -152,14 +173,19 @@ import {
FaUserCheck,
FaUserClock,
FaUserLarge,
+ FaUserPen,
FaUserPlus,
FaUsers,
+ FaWindowMaximize,
+ FaWindowMinimize,
+ FaWindowRestore,
FaXmark,
FaYenSign,
} from 'react-icons/fa6'
import { createIcon } from './generateIcon'
+export const FaAddressBookIcon = /*#__PURE__*/ createIcon(FaAddressBook)
export const FaAddressCardIcon = /*#__PURE__*/ createIcon(FaAddressCard)
export const FaAngleDownIcon = /*#__PURE__*/ createIcon(FaAngleDown)
export const FaAngleLeftIcon = /*#__PURE__*/ createIcon(FaAngleLeft)
@@ -168,20 +194,22 @@ export const FaAngleUpIcon = /*#__PURE__*/ createIcon(FaAngleUp)
export const FaAnglesLeftIcon = /*#__PURE__*/ createIcon(FaAnglesLeft)
export const FaAnglesRightIcon = /*#__PURE__*/ createIcon(FaAnglesRight)
export const FaArrowDownIcon = /*#__PURE__*/ createIcon(FaArrowDown)
+export const FaArrowDownWideShortIcon = /*#__PURE__*/ createIcon(FaArrowDownWideShort)
export const FaArrowLeftIcon = /*#__PURE__*/ createIcon(FaArrowLeft)
export const FaArrowRightIcon = /*#__PURE__*/ createIcon(FaArrowRight)
export const FaArrowRotateLeftIcon = /*#__PURE__*/ createIcon(FaArrowRotateLeft)
export const FaArrowRotateRightIcon = /*#__PURE__*/ createIcon(FaArrowRotateRight)
export const FaArrowUp19Icon = /*#__PURE__*/ createIcon(FaArrowUp19)
-export const FaArrowUpWideShortIcon = /*#__PURE__*/ createIcon(FaArrowUpWideShort)
-export const FaArrowDownWideShortIcon = /*#__PURE__*/ createIcon(FaArrowDownWideShort)
export const FaArrowUpIcon = /*#__PURE__*/ createIcon(FaArrowUp)
+export const FaArrowUpWideShortIcon = /*#__PURE__*/ createIcon(FaArrowUpWideShort)
export const FaArrowsRotateIcon = /*#__PURE__*/ createIcon(FaArrowsRotate)
+export const FaAsteriskIcon = /*#__PURE__*/ createIcon(FaAsterisk)
export const FaBabyCarriageIcon = /*#__PURE__*/ createIcon(FaBabyCarriage)
export const FaBanIcon = /*#__PURE__*/ createIcon(FaBan)
export const FaBarsIcon = /*#__PURE__*/ createIcon(FaBars)
export const FaBarsStaggeredIcon = /*#__PURE__*/ createIcon(FaBarsStaggered)
export const FaBellIcon = /*#__PURE__*/ createIcon(FaBell)
+export const FaBellSlashIcon = /*#__PURE__*/ createIcon(FaBellSlash)
export const FaBoltIcon = /*#__PURE__*/ createIcon(FaBolt)
export const FaBookIcon = /*#__PURE__*/ createIcon(FaBook)
export const FaBookOpenIcon = /*#__PURE__*/ createIcon(FaBookOpen)
@@ -194,6 +222,7 @@ export const FaCalendarCheckIcon = /*#__PURE__*/ createIcon(FaCalendarCheck)
export const FaCalendarDaysIcon = /*#__PURE__*/ createIcon(FaCalendarDays)
export const FaCalendarXmarkIcon = /*#__PURE__*/ createIcon(FaCalendarXmark)
export const FaCaretDownIcon = /*#__PURE__*/ createIcon(FaCaretDown)
+export const FaCaretLeftIcon = /*#__PURE__*/ createIcon(FaCaretLeft)
export const FaCaretRightIcon = /*#__PURE__*/ createIcon(FaCaretRight)
export const FaCaretUpIcon = /*#__PURE__*/ createIcon(FaCaretUp)
export const FaChartAreaIcon = /*#__PURE__*/ createIcon(FaChartArea)
@@ -215,6 +244,7 @@ export const FaCirclePlusIcon = /*#__PURE__*/ createIcon(FaCirclePlus)
export const FaCircleQuestionIcon = /*#__PURE__*/ createIcon(FaCircleQuestion)
export const FaCircleUserIcon = /*#__PURE__*/ createIcon(FaCircleUser)
export const FaCircleXmarkIcon = /*#__PURE__*/ createIcon(FaCircleXmark)
+export const FaClipboardCheckIcon = /*#__PURE__*/ createIcon(FaClipboardCheck)
export const FaClipboardIcon = /*#__PURE__*/ createIcon(FaClipboard)
export const FaClipboardListIcon = /*#__PURE__*/ createIcon(FaClipboardList)
export const FaClockIcon = /*#__PURE__*/ createIcon(FaClock)
@@ -227,6 +257,8 @@ export const FaCommentIcon = /*#__PURE__*/ createIcon(FaComment)
export const FaCommentsIcon = /*#__PURE__*/ createIcon(FaComments)
export const FaCompressIcon = /*#__PURE__*/ createIcon(FaCompress)
export const FaCopyIcon = /*#__PURE__*/ createIcon(FaCopy)
+export const FaCubeIcon = /*#__PURE__*/ createIcon(FaCube)
+export const FaCubesIcon = /*#__PURE__*/ createIcon(FaCubes)
export const FaDatabaseIcon = /*#__PURE__*/ createIcon(FaDatabase)
export const FaDoorOpenIcon = /*#__PURE__*/ createIcon(FaDoorOpen)
export const FaDownLeftAndUpRightToCenterIcon = /*#__PURE__*/ createIcon(
@@ -250,6 +282,7 @@ export const FaFolderPlusIcon = /*#__PURE__*/ createIcon(FaFolderPlus)
export const FaFontIcon = /*#__PURE__*/ createIcon(FaFont)
export const FaGaugeIcon = /*#__PURE__*/ createIcon(FaGauge)
export const FaGearIcon = /*#__PURE__*/ createIcon(FaGear)
+export const FaGearsIcon = /*#__PURE__*/ createIcon(FaGears)
export const FaGlobeIcon = /*#__PURE__*/ createIcon(FaGlobe)
export const FaGraduationCapIcon = /*#__PURE__*/ createIcon(FaGraduationCap)
export const FaGripIcon = /*#__PURE__*/ createIcon(FaGrip)
@@ -258,8 +291,11 @@ export const FaGripLinesVerticalIcon = /*#__PURE__*/ createIcon(FaGripLinesVerti
export const FaGripVerticalIcon = /*#__PURE__*/ createIcon(FaGripVertical)
export const FaHourglassHalfIcon = /*#__PURE__*/ createIcon(FaHourglassHalf)
export const FaHouseIcon = /*#__PURE__*/ createIcon(FaHouse)
+export const FaIdBadgeIcon = /*#__PURE__*/ createIcon(FaIdBadge)
+export const FaIdCardIcon = /*#__PURE__*/ createIcon(FaIdCard)
export const FaImageIcon = /*#__PURE__*/ createIcon(FaImage)
export const FaInboxIcon = /*#__PURE__*/ createIcon(FaInbox)
+export const FaIntercomIcon = /*#__PURE__*/ createIcon(FaIntercom)
export const FaKeyIcon = /*#__PURE__*/ createIcon(FaKey)
export const FaLeftLongIcon = /*#__PURE__*/ createIcon(FaLeftLong)
export const FaLeftRightIcon = /*#__PURE__*/ createIcon(FaLeftRight)
@@ -267,17 +303,22 @@ export const FaLightbulbIcon = /*#__PURE__*/ createIcon(FaLightbulb)
export const FaLinkIcon = /*#__PURE__*/ createIcon(FaLink)
export const FaListIcon = /*#__PURE__*/ createIcon(FaList)
export const FaListOlIcon = /*#__PURE__*/ createIcon(FaListOl)
+export const FaListUlIcon = /*#__PURE__*/ createIcon(FaListUl)
export const FaLockIcon = /*#__PURE__*/ createIcon(FaLock)
+export const FaLockOpenIcon = /*#__PURE__*/ createIcon(FaLockOpen)
export const FaMagnifyingGlassIcon = /*#__PURE__*/ createIcon(FaMagnifyingGlass)
export const FaMagnifyingGlassMinusIcon = /*#__PURE__*/ createIcon(FaMagnifyingGlassMinus)
export const FaMagnifyingGlassPlusIcon = /*#__PURE__*/ createIcon(FaMagnifyingGlassPlus)
+export const FaMessageIcon = /*#__PURE__*/ createIcon(FaMessage)
export const FaMinusIcon = /*#__PURE__*/ createIcon(FaMinus)
+export const FaMoneyCheckDollarIcon = /*#__PURE__*/ createIcon(FaMoneyCheckDollar)
export const FaPaintbrushIcon = /*#__PURE__*/ createIcon(FaPaintbrush)
export const FaPaperPlaneIcon = /*#__PURE__*/ createIcon(FaPaperPlane)
export const FaPaperclipIcon = /*#__PURE__*/ createIcon(FaPaperclip)
export const FaPenIcon = /*#__PURE__*/ createIcon(FaPen)
export const FaPenToSquareIcon = /*#__PURE__*/ createIcon(FaPenToSquare)
export const FaPencilIcon = /*#__PURE__*/ createIcon(FaPencil)
+export const FaPiggyBankIcon = /*#__PURE__*/ createIcon(FaPiggyBank)
export const FaPlusIcon = /*#__PURE__*/ createIcon(FaPlus)
export const FaPowerOffIcon = /*#__PURE__*/ createIcon(FaPowerOff)
export const FaPrintIcon = /*#__PURE__*/ createIcon(FaPrint)
@@ -292,9 +333,13 @@ export const FaRocketIcon = /*#__PURE__*/ createIcon(FaRocket)
export const FaRotateIcon = /*#__PURE__*/ createIcon(FaRotate)
export const FaRotateLeftIcon = /*#__PURE__*/ createIcon(FaRotateLeft)
export const FaShareNodesIcon = /*#__PURE__*/ createIcon(FaShareNodes)
+export const FaShieldHalvedIcon = /*#__PURE__*/ createIcon(FaShieldHalved)
+export const FaSlidersIcon = /*#__PURE__*/ createIcon(FaSliders)
export const FaSortDownIcon = /*#__PURE__*/ createIcon(FaSortDown)
export const FaSortIcon = /*#__PURE__*/ createIcon(FaSort)
export const FaSortUpIcon = /*#__PURE__*/ createIcon(FaSortUp)
+export const FaSquareCheckIcon = /*#__PURE__*/ createIcon(FaSquareCheck)
+export const FaSquareMinusIcon = /*#__PURE__*/ createIcon(FaSquareMinus)
export const FaSquarePlusIcon = /*#__PURE__*/ createIcon(FaSquarePlus)
export const FaSquarePollVerticalIcon = /*#__PURE__*/ createIcon(FaSquarePollVertical)
export const FaStarIcon = /*#__PURE__*/ createIcon(FaStar)
@@ -302,6 +347,7 @@ export const FaSuitcaseMedicalIcon = /*#__PURE__*/ createIcon(FaSuitcaseMedical)
export const FaTableIcon = /*#__PURE__*/ createIcon(FaTable)
export const FaTableListIcon = /*#__PURE__*/ createIcon(FaTableList)
export const FaTagIcon = /*#__PURE__*/ createIcon(FaTag)
+export const FaTagsIcon = /*#__PURE__*/ createIcon(FaTags)
export const FaToolboxIcon = /*#__PURE__*/ createIcon(FaToolbox)
export const FaTrashCanIcon = /*#__PURE__*/ createIcon(FaTrashCan)
export const FaTrashIcon = /*#__PURE__*/ createIcon(FaTrash)
@@ -317,8 +363,12 @@ export const FaUserCheckIcon = /*#__PURE__*/ createIcon(FaUserCheck)
export const FaUserClockIcon = /*#__PURE__*/ createIcon(FaUserClock)
export const FaUserIcon = /*#__PURE__*/ createIcon(FaUser)
export const FaUserLargeIcon = /*#__PURE__*/ createIcon(FaUserLarge)
+export const FaUserPenIcon = /*#__PURE__*/ createIcon(FaUserPen)
export const FaUserPlusIcon = /*#__PURE__*/ createIcon(FaUserPlus)
export const FaUsersIcon = /*#__PURE__*/ createIcon(FaUsers)
+export const FaWindowMaximizeIcon = /*#__PURE__*/ createIcon(FaWindowMaximize)
+export const FaWindowMinimizeIcon = /*#__PURE__*/ createIcon(FaWindowMinimize)
+export const FaWindowRestoreIcon = /*#__PURE__*/ createIcon(FaWindowRestore)
export const FaXmarkIcon = /*#__PURE__*/ createIcon(FaXmark)
export const FaYenSignIcon = /*#__PURE__*/ createIcon(FaYenSign)
diff --git a/src/components/Layout/Cluster/Cluster.stories.tsx b/src/components/Layout/Cluster/Cluster.stories.tsx
index 3c15aafe90..29a1c21bc9 100644
--- a/src/components/Layout/Cluster/Cluster.stories.tsx
+++ b/src/components/Layout/Cluster/Cluster.stories.tsx
@@ -3,8 +3,8 @@ import React from 'react'
import styled, { css } from 'styled-components'
import { Base } from '../../Base'
+import { Fieldset } from '../../Fieldset'
import { Heading } from '../../Heading'
-import { Fieldset } from '../../NewFieldset'
import { RadioButton } from '../../RadioButton'
import { StatusLabel } from '../../StatusLabel'
import { Stack } from '../Stack'
diff --git a/src/components/NewFieldset/Fieldset.tsx b/src/components/NewFieldset/Fieldset.tsx
deleted file mode 100644
index 84f8665d5b..0000000000
--- a/src/components/NewFieldset/Fieldset.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import React, { ComponentProps } from 'react'
-
-import { FormGroup } from '../FormGroup'
-
-export const Fieldset: React.FC> = (props) => (
-
-)
diff --git a/src/components/NotificationBar/NotificationBar.stories.tsx b/src/components/NotificationBar/NotificationBar.stories.tsx
index aab12516f7..85233d397c 100644
--- a/src/components/NotificationBar/NotificationBar.stories.tsx
+++ b/src/components/NotificationBar/NotificationBar.stories.tsx
@@ -4,8 +4,8 @@ import styled, { css } from 'styled-components'
import { Button } from '../Button'
import { CheckBox } from '../CheckBox'
+import { Fieldset } from '../Fieldset'
import { Cluster, Stack } from '../Layout'
-import { Fieldset } from '../NewFieldset'
import { RadioButton } from '../RadioButton'
import { Text } from '../Text'
import { TextLink as shrTextLink } from '../TextLink'
diff --git a/src/components/RadioButton/RadioButton.stories.tsx b/src/components/RadioButton/RadioButton.stories.tsx
index 1b63d2ae5e..12bd381500 100644
--- a/src/components/RadioButton/RadioButton.stories.tsx
+++ b/src/components/RadioButton/RadioButton.stories.tsx
@@ -2,7 +2,7 @@ import { StoryFn } from '@storybook/react'
import React, { ChangeEvent, useState } from 'react'
import styled from 'styled-components'
-import { Fieldset } from '../NewFieldset'
+import { Fieldset } from '../Fieldset'
import { RadioButton } from './RadioButton'
diff --git a/src/components/RadioButton/VRTRadioButton.stories.tsx b/src/components/RadioButton/VRTRadioButton.stories.tsx
index 6b58ac65bb..53a435096c 100644
--- a/src/components/RadioButton/VRTRadioButton.stories.tsx
+++ b/src/components/RadioButton/VRTRadioButton.stories.tsx
@@ -2,8 +2,8 @@ import { StoryFn } from '@storybook/react'
import React, { ChangeEvent, useState } from 'react'
import styled from 'styled-components'
+import { Fieldset } from '../Fieldset'
import { InformationPanel } from '../InformationPanel'
-import { Fieldset } from '../NewFieldset'
import { All } from './RadioButton.stories'
diff --git a/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx b/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx
index 676c862c93..3ca1fc0f18 100644
--- a/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx
+++ b/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx
@@ -1,8 +1,8 @@
import { StoryFn } from '@storybook/react'
import React, { ChangeEvent, useState } from 'react'
+import { Fieldset } from '../Fieldset'
import { Cluster, Stack } from '../Layout'
-import { Fieldset } from '../NewFieldset'
import { StatusLabel } from '../StatusLabel'
import { Text } from '../Text'
diff --git a/src/components/SectioningContent/SectioningContent.tsx b/src/components/SectioningContent/SectioningContent.tsx
index 5de00f1234..fc0d7b0cfc 100644
--- a/src/components/SectioningContent/SectioningContent.tsx
+++ b/src/components/SectioningContent/SectioningContent.tsx
@@ -25,6 +25,8 @@ export const Article: FC = (props) =>
export const Nav: FC = (props) =>
+/* HINT: smarthr-ui内では引き続き使うが、exportは削除する */
+/** @deprecated SectioningFragment は削除予定です */
export const SectioningFragment: FC> = ({
children,
baseLevel,
diff --git a/src/components/Table/BulkActionRow.tsx b/src/components/Table/BulkActionRow.tsx
index 0d1133af37..9e2c162d26 100644
--- a/src/components/Table/BulkActionRow.tsx
+++ b/src/components/Table/BulkActionRow.tsx
@@ -6,7 +6,10 @@ import { useTableHeadCellCount } from './useTableHeadCellCount'
const bulkActionRow = tv({
slots: {
wrapper: 'smarthr-ui-BulkActionRow',
- cell: 'shr-border-t-shorthand shr-bg-action-background shr-p-1 shr-text-base',
+ cell: [
+ 'shr-bg-action-background shr-p-1 shr-text-base',
+ 'forced-colors:shr-border-t-shorthand',
+ ],
},
})
diff --git a/src/index.ts b/src/index.ts
index 208bf30d86..27a0189971 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -12,7 +12,6 @@ export {
DropdownMenuButton,
SortDropdown,
} from './components/Dropdown'
-export { FieldSet } from './components/FieldSet'
export {
FlashMessage,
FlashMessageListProvider,
@@ -86,9 +85,8 @@ export { ErrorScreen, MessageScreen } from './components/ErrorScreen'
export { Calendar } from './components/Calendar'
export { DatePicker } from './components/DatePicker'
export { SegmentedControl, SegmentedControlOption } from './components/SegmentedControl'
-export { FormGroup } from './components/FormGroup'
export { FormControl } from './components/FormControl'
-export { Fieldset } from './components/NewFieldset'
+export { Fieldset } from './components/Fieldset'
export { MultiComboBox, SingleComboBox } from './components/ComboBox'
export { SideNav } from './components/SideNav'
export { CompactInformationPanel } from './components/CompactInformationPanel'