@sakura-ui/sakura-ui 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -32
- package/package.json +8 -8
- package/packages/config/package.json +9 -9
- package/packages/config/src/index.ts +1 -1
- package/packages/config/tsconfig.json +1 -1
- package/packages/config/vite.config.ts +1 -1
- package/packages/core/package.json +13 -13
- package/packages/core/src/components/Button.tsx +27 -24
- package/packages/core/src/components/Card.tsx +2 -2
- package/packages/core/src/components/Code.tsx +2 -2
- package/packages/core/src/components/Heading.tsx +7 -12
- package/packages/core/src/components/Icon.tsx +8 -3
- package/packages/core/src/components/IconButton.tsx +41 -29
- package/packages/core/src/components/InfoCard.tsx +5 -2
- package/packages/core/src/components/Link.tsx +27 -24
- package/packages/core/src/components/List.tsx +4 -4
- package/packages/core/src/components/Pre.tsx +2 -2
- package/packages/core/src/components/Table.tsx +17 -14
- package/packages/core/tsconfig.node.json +1 -1
- package/packages/core/vite.config.ts +1 -1
- package/packages/forms/dist/components/Checkbox.d.ts +2 -2
- package/packages/forms/dist/components/Checkbox.d.ts.map +1 -1
- package/packages/forms/dist/components/Checkbox.js +43 -0
- package/packages/forms/dist/components/Checkbox.js.map +1 -0
- package/packages/forms/dist/components/FieldsetControl.d.ts +2 -2
- package/packages/forms/dist/components/FieldsetControl.d.ts.map +1 -1
- package/packages/forms/dist/components/FieldsetControl.js +20 -0
- package/packages/forms/dist/components/FieldsetControl.js.map +1 -0
- package/packages/forms/dist/components/Input.d.ts +2 -2
- package/packages/forms/dist/components/Input.d.ts.map +1 -1
- package/packages/forms/dist/components/Input.js +27 -0
- package/packages/forms/dist/components/Input.js.map +1 -0
- package/packages/forms/dist/components/LabelControl.d.ts +2 -2
- package/packages/forms/dist/components/LabelControl.d.ts.map +1 -1
- package/packages/forms/dist/components/LabelControl.js +18 -0
- package/packages/forms/dist/components/LabelControl.js.map +1 -0
- package/packages/forms/dist/components/Radio.d.ts +2 -2
- package/packages/forms/dist/components/Radio.d.ts.map +1 -1
- package/packages/forms/dist/components/Radio.js +43 -0
- package/packages/forms/dist/components/Radio.js.map +1 -0
- package/packages/forms/dist/components/Select.d.ts +2 -2
- package/packages/forms/dist/components/Select.d.ts.map +1 -1
- package/packages/forms/dist/components/Select.js +39 -0
- package/packages/forms/dist/components/Select.js.map +1 -0
- package/packages/forms/dist/components/Textarea.d.ts +2 -2
- package/packages/forms/dist/components/Textarea.d.ts.map +1 -1
- package/packages/forms/dist/components/Textarea.js +34 -0
- package/packages/forms/dist/components/Textarea.js.map +1 -0
- package/packages/forms/dist/components/context.js +8 -0
- package/packages/forms/dist/components/context.js.map +1 -0
- package/packages/forms/dist/components/controlled/CheckboxGroup.d.ts +2 -2
- package/packages/forms/dist/components/controlled/CheckboxGroup.d.ts.map +1 -1
- package/packages/forms/dist/components/controlled/CheckboxGroup.js +12 -0
- package/packages/forms/dist/components/controlled/CheckboxGroup.js.map +1 -0
- package/packages/forms/dist/components/controlled/InputItem.js +2 -0
- package/packages/forms/dist/components/controlled/InputItem.js.map +1 -0
- package/packages/forms/dist/components/controlled/RadioGroup.d.ts +2 -2
- package/packages/forms/dist/components/controlled/RadioGroup.d.ts.map +1 -1
- package/packages/forms/dist/components/controlled/RadioGroup.js +12 -0
- package/packages/forms/dist/components/controlled/RadioGroup.js.map +1 -0
- package/packages/forms/dist/components/controlled/SelectControl.d.ts +2 -2
- package/packages/forms/dist/components/controlled/SelectControl.d.ts.map +1 -1
- package/packages/forms/dist/components/controlled/SelectControl.js +10 -0
- package/packages/forms/dist/components/controlled/SelectControl.js.map +1 -0
- package/packages/forms/dist/components/controlled/TextareaControl.d.ts +2 -2
- package/packages/forms/dist/components/controlled/TextareaControl.d.ts.map +1 -1
- package/packages/forms/dist/components/controlled/TextareaControl.js +10 -0
- package/packages/forms/dist/components/controlled/TextareaControl.js.map +1 -0
- package/packages/forms/dist/components/controlled/index.d.ts +0 -1
- package/packages/forms/dist/components/controlled/index.d.ts.map +1 -1
- package/packages/forms/dist/components/controlled/index.js +5 -0
- package/packages/forms/dist/components/controlled/index.js.map +1 -0
- package/packages/forms/dist/components/index.js +8 -0
- package/packages/forms/dist/components/index.js.map +1 -0
- package/packages/forms/dist/index.cjs.js +79 -79
- package/packages/forms/dist/index.cjs.js.map +1 -1
- package/packages/forms/dist/index.d.ts +1 -1
- package/packages/forms/dist/index.d.ts.map +1 -1
- package/packages/forms/dist/index.es.js +500 -493
- package/packages/forms/dist/index.es.js.map +1 -1
- package/packages/forms/dist/index.js +3 -0
- package/packages/forms/dist/index.js.map +1 -0
- package/packages/forms/dist/utils/class.js +2 -0
- package/packages/forms/dist/utils/class.js.map +1 -0
- package/packages/forms/node_modules/.bin/autoprefixer +4 -4
- package/packages/forms/node_modules/.bin/jest +4 -4
- package/packages/forms/node_modules/.bin/npm-run-all +2 -2
- package/packages/forms/node_modules/.bin/run-p +2 -2
- package/packages/forms/node_modules/.bin/run-s +2 -2
- package/packages/forms/node_modules/.bin/tailwind +2 -2
- package/packages/forms/node_modules/.bin/tailwindcss +2 -2
- package/packages/forms/node_modules/.bin/ts-jest +4 -4
- package/packages/forms/node_modules/.bin/ts-node +4 -4
- package/packages/forms/node_modules/.bin/ts-node-cwd +4 -4
- package/packages/forms/node_modules/.bin/ts-node-esm +4 -4
- package/packages/forms/node_modules/.bin/ts-node-script +4 -4
- package/packages/forms/node_modules/.bin/ts-node-transpile-only +4 -4
- package/packages/forms/node_modules/.bin/ts-script +4 -4
- package/packages/forms/node_modules/.bin/tsc +4 -4
- package/packages/forms/node_modules/.bin/tsc-alias +4 -4
- package/packages/forms/node_modules/.bin/tsserver +4 -4
- package/packages/forms/node_modules/.bin/vite +4 -4
- package/packages/forms/package.json +16 -16
- package/packages/forms/src/components/Checkbox.tsx +62 -59
- package/packages/forms/src/components/FieldsetControl.tsx +62 -55
- package/packages/forms/src/components/Input.tsx +38 -35
- package/packages/forms/src/components/LabelControl.tsx +56 -52
- package/packages/forms/src/components/Radio.tsx +8 -3
- package/packages/forms/src/components/Select.tsx +57 -56
- package/packages/forms/src/components/Textarea.tsx +55 -30
- package/packages/forms/src/components/controlled/CheckboxGroup.tsx +37 -37
- package/packages/forms/src/components/controlled/RadioGroup.tsx +5 -3
- package/packages/forms/src/components/controlled/SelectControl.tsx +28 -27
- package/packages/forms/src/components/controlled/TextareaControl.tsx +28 -27
- package/packages/forms/src/components/controlled/index.ts +0 -1
- package/packages/forms/src/index.ts +0 -1
- package/packages/forms/tsconfig.node.json +1 -1
- package/packages/forms/vite.config.ts +1 -1
- package/packages/forms/dist/components/controlled/InputControl.d.ts +0 -10
- package/packages/forms/dist/components/controlled/InputControl.d.ts.map +0 -1
- package/packages/forms/node_modules/.bin/browserslist +0 -17
- package/packages/forms/src/components/controlled/InputControl.tsx +0 -39
package/README.md
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# Sakura UI
|
|
2
2
|
Sakura UI - UI components built with Tailwind CSS for React. Sakura UI is an unofficial implementation of the Digital Agency Design System. The specifications for each UI component have been implemented with reference to the Digital Agency Design System.
|
|
3
3
|
|
|
4
|
-
- [Design System 1.2.
|
|
4
|
+
- [Design System 1.2.2](https://www.figma.com/community/file/1172530831489802410)
|
|
5
|
+
|
|
6
|
+
## Sample page
|
|
7
|
+
|
|
8
|
+
- [UI Catalog](https://glassonion1.github.io/sakura-ui/)
|
|
5
9
|
|
|
6
10
|
## Install
|
|
7
11
|
```
|
|
@@ -41,7 +45,7 @@ Add fonts from CDN.
|
|
|
41
45
|
rel="stylesheet"
|
|
42
46
|
/>
|
|
43
47
|
<link
|
|
44
|
-
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined"
|
|
48
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght@100;200;300;400;500;600;700&display=swap"
|
|
45
49
|
rel="stylesheet"
|
|
46
50
|
/>
|
|
47
51
|
...head
|
|
@@ -105,42 +109,14 @@ export default App
|
|
|
105
109
|
- Code
|
|
106
110
|
- Pre
|
|
107
111
|
- Button
|
|
112
|
+
- Icon
|
|
108
113
|
- IconButton
|
|
109
114
|
|
|
110
115
|
## Form components
|
|
111
116
|
- Radio
|
|
112
117
|
- Checkbox
|
|
113
118
|
- Select
|
|
114
|
-
-
|
|
119
|
+
- Input
|
|
115
120
|
- Textarea
|
|
116
121
|
- LabelControl
|
|
117
122
|
- FieldsetControl
|
|
118
|
-
|
|
119
|
-
## UI Samples
|
|
120
|
-
|
|
121
|
-
### Heading
|
|
122
|
-

|
|
123
|
-
|
|
124
|
-
### List
|
|
125
|
-

|
|
126
|
-
|
|
127
|
-
### Button
|
|
128
|
-

|
|
129
|
-
|
|
130
|
-
### Icon button
|
|
131
|
-

|
|
132
|
-
|
|
133
|
-
### Select
|
|
134
|
-

|
|
135
|
-
|
|
136
|
-
### Radio button
|
|
137
|
-

|
|
138
|
-
|
|
139
|
-
### Checkbox
|
|
140
|
-

|
|
141
|
-
|
|
142
|
-
### Textbox
|
|
143
|
-

|
|
144
|
-
|
|
145
|
-
### Textarea
|
|
146
|
-

|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sakura-ui/sakura-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": "glassonion1",
|
|
6
6
|
"homepage": "https://github.com/glassonion1/sakura-ui",
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
"files": [
|
|
13
13
|
"packages"
|
|
14
14
|
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "pnpm --parallel --filter \"./**\" build"
|
|
17
|
+
},
|
|
15
18
|
"dependencies": {
|
|
16
|
-
"@sakura-ui/config": "
|
|
17
|
-
"@sakura-ui/core": "
|
|
18
|
-
"@sakura-ui/forms": "
|
|
19
|
+
"@sakura-ui/config": "workspace:*",
|
|
20
|
+
"@sakura-ui/core": "workspace:*",
|
|
21
|
+
"@sakura-ui/forms": "workspace:*"
|
|
19
22
|
},
|
|
20
23
|
"peerDependencies": {
|
|
21
24
|
"react": "^18.2.0",
|
|
22
25
|
"react-dom": "^18.2.0",
|
|
23
26
|
"tailwindcss": "^3.2.7"
|
|
24
|
-
},
|
|
25
|
-
"scripts": {
|
|
26
|
-
"build": "pnpm --parallel --filter \"./**\" build"
|
|
27
27
|
}
|
|
28
|
-
}
|
|
28
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sakura-ui/config",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "run-p build:*",
|
|
21
21
|
"build:scripts": "vite build",
|
|
22
|
-
"build:types": "tsc
|
|
22
|
+
"build:types": "tsc",
|
|
23
23
|
"test": "jest"
|
|
24
24
|
},
|
|
25
25
|
"keywords": [],
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
"tailwindcss": "^3.2.7"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/jest": "^29.5.
|
|
39
|
-
"@types/node": "^18.16.
|
|
38
|
+
"@types/jest": "^29.5.2",
|
|
39
|
+
"@types/node": "^18.16.19",
|
|
40
40
|
"autoprefixer": "^10.4.14",
|
|
41
|
-
"jest": "^29.
|
|
41
|
+
"jest": "^29.6.1",
|
|
42
42
|
"npm-run-all": "^4.1.5",
|
|
43
|
-
"postcss": "^8.4.
|
|
43
|
+
"postcss": "^8.4.25",
|
|
44
44
|
"tailwindcss": "^3.3.2",
|
|
45
|
-
"ts-jest": "^29.1.
|
|
45
|
+
"ts-jest": "^29.1.1",
|
|
46
46
|
"ts-node": "^10.9.1",
|
|
47
|
-
"typescript": "^5.
|
|
48
|
-
"vite": "^4.
|
|
47
|
+
"typescript": "^5.1.6",
|
|
48
|
+
"vite": "^4.4.2"
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -13,7 +13,7 @@ export default defineConfig({
|
|
|
13
13
|
lib: {
|
|
14
14
|
entry: resolve(__dirname, 'src', 'index.ts'),
|
|
15
15
|
formats: ['es', 'cjs'],
|
|
16
|
-
fileName: (ext) => `index.${ext}.js`
|
|
16
|
+
fileName: (ext: string) => `index.${ext}.js`
|
|
17
17
|
},
|
|
18
18
|
rollupOptions: {
|
|
19
19
|
external: [...Object.keys(peerDependencies)]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sakura-ui/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"dev": "vite",
|
|
22
22
|
"build": "run-p build:*",
|
|
23
23
|
"build:scripts": "vite build",
|
|
24
|
-
"build:types": "tsc
|
|
24
|
+
"build:types": "tsc && tsc-alias",
|
|
25
25
|
"test": "jest"
|
|
26
26
|
},
|
|
27
27
|
"keywords": [],
|
|
@@ -39,22 +39,22 @@
|
|
|
39
39
|
"tailwindcss": "^3.2.7"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@types/jest": "^29.5.
|
|
43
|
-
"@types/node": "^18.16.
|
|
44
|
-
"@types/react": "^18.2.
|
|
45
|
-
"@types/react-dom": "^18.2.
|
|
46
|
-
"@vitejs/plugin-react-swc": "^3.3.
|
|
42
|
+
"@types/jest": "^29.5.2",
|
|
43
|
+
"@types/node": "^18.16.19",
|
|
44
|
+
"@types/react": "^18.2.14",
|
|
45
|
+
"@types/react-dom": "^18.2.6",
|
|
46
|
+
"@vitejs/plugin-react-swc": "^3.3.2",
|
|
47
47
|
"autoprefixer": "^10.4.14",
|
|
48
|
-
"jest": "^29.
|
|
48
|
+
"jest": "^29.6.1",
|
|
49
49
|
"npm-run-all": "^4.1.5",
|
|
50
|
-
"postcss": "^8.4.
|
|
50
|
+
"postcss": "^8.4.25",
|
|
51
51
|
"react": "^18.2.0",
|
|
52
52
|
"react-dom": "^18.2.0",
|
|
53
53
|
"tailwindcss": "^3.3.2",
|
|
54
|
-
"ts-jest": "^29.1.
|
|
54
|
+
"ts-jest": "^29.1.1",
|
|
55
55
|
"ts-node": "^10.9.1",
|
|
56
|
-
"tsc-alias": "^1.8.
|
|
57
|
-
"typescript": "^5.
|
|
58
|
-
"vite": "^4.
|
|
56
|
+
"tsc-alias": "^1.8.7",
|
|
57
|
+
"typescript": "^5.1.6",
|
|
58
|
+
"vite": "^4.4.2"
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface ButtonProps extends React.
|
|
4
|
+
export interface ButtonProps extends React.ComponentPropsWithRef<'button'> {
|
|
5
5
|
variant?: 'primary' | 'secondary'
|
|
6
6
|
textAlign?: 'left' | 'right' | 'center'
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export const Button = React.forwardRef<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
export const Button: React.ElementType<ButtonProps> = React.forwardRef<
|
|
10
|
+
HTMLButtonElement,
|
|
11
|
+
ButtonProps
|
|
12
|
+
>((props, ref) => {
|
|
13
|
+
// Make sure that there is no problem even if className is specified on the side that uses the component
|
|
14
|
+
const { className, children, textAlign, variant, ...restProps } = props
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
const align = textAlign ?? 'center'
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
const style = `
|
|
17
19
|
inline-block
|
|
18
20
|
p-4
|
|
19
21
|
text-button
|
|
@@ -31,7 +33,7 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
31
33
|
disabled:cursor-not-allowed
|
|
32
34
|
`
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
const primary = `
|
|
35
37
|
text-white-1000
|
|
36
38
|
bg-sea-600
|
|
37
39
|
hover:enabled:bg-sea-700
|
|
@@ -39,7 +41,7 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
39
41
|
disabled:bg-sumi-500
|
|
40
42
|
disabled:text-white-1000
|
|
41
43
|
`
|
|
42
|
-
|
|
44
|
+
const secondary = `
|
|
43
45
|
text-sea-600
|
|
44
46
|
bg-transparent
|
|
45
47
|
hover:enabled:bg-sea-100
|
|
@@ -47,19 +49,20 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
47
49
|
disabled:text-sumi-500
|
|
48
50
|
`
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<button
|
|
57
|
-
className={cx(style, styles[variant ?? 'primary'], className)}
|
|
58
|
-
{...restProps}
|
|
59
|
-
ref={ref}
|
|
60
|
-
>
|
|
61
|
-
{children}
|
|
62
|
-
</button>
|
|
63
|
-
)
|
|
52
|
+
const styles = {
|
|
53
|
+
primary: primary,
|
|
54
|
+
secondary: secondary
|
|
64
55
|
}
|
|
65
|
-
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<button
|
|
59
|
+
className={cx(style, styles[variant ?? 'primary'], className)}
|
|
60
|
+
{...restProps}
|
|
61
|
+
ref={ref}
|
|
62
|
+
>
|
|
63
|
+
{children}
|
|
64
|
+
</button>
|
|
65
|
+
)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
Button.displayName = 'Button'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface CardProps extends React.
|
|
4
|
+
export interface CardProps extends React.ComponentPropsWithoutRef<'section'> {}
|
|
5
5
|
|
|
6
|
-
export const Card = (props: CardProps) => {
|
|
6
|
+
export const Card: React.ElementType<CardProps> = (props: CardProps) => {
|
|
7
7
|
const { className, children, ...restProps } = props
|
|
8
8
|
|
|
9
9
|
const style = `
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface CodeProps extends React.
|
|
4
|
+
export interface CodeProps extends React.ComponentPropsWithoutRef<'code'> {}
|
|
5
5
|
|
|
6
|
-
export const Code = (props: CodeProps) => {
|
|
6
|
+
export const Code: React.ElementType<CodeProps> = (props: CodeProps) => {
|
|
7
7
|
const { className, children, ...restProps } = props
|
|
8
8
|
|
|
9
9
|
const style = `
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface HeadingProps extends React.
|
|
4
|
+
export interface HeadingProps extends React.ComponentPropsWithoutRef<'h1'> {}
|
|
5
5
|
|
|
6
|
-
export const H1 = (props: HeadingProps) => {
|
|
6
|
+
export const H1: React.ElementType<HeadingProps> = (props: HeadingProps) => {
|
|
7
7
|
const { className, children, ...restProps } = props
|
|
8
8
|
|
|
9
9
|
const style = `
|
|
@@ -20,8 +20,7 @@ export const H1 = (props: HeadingProps) => {
|
|
|
20
20
|
)
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export const H2 = (props: HeadingProps) => {
|
|
24
|
-
// コンポーネントを使う側でclassNameを指定しても問題ないようにする
|
|
23
|
+
export const H2: React.ElementType<HeadingProps> = (props: HeadingProps) => {
|
|
25
24
|
const { className, children, ...restProps } = props
|
|
26
25
|
|
|
27
26
|
const style = `
|
|
@@ -38,8 +37,7 @@ export const H2 = (props: HeadingProps) => {
|
|
|
38
37
|
)
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
export const H3 = (props: HeadingProps) => {
|
|
42
|
-
// コンポーネントを使う側でclassNameを指定しても問題ないようにする
|
|
40
|
+
export const H3: React.ElementType<HeadingProps> = (props: HeadingProps) => {
|
|
43
41
|
const { className, children, ...restProps } = props
|
|
44
42
|
|
|
45
43
|
const style = `
|
|
@@ -56,8 +54,7 @@ export const H3 = (props: HeadingProps) => {
|
|
|
56
54
|
)
|
|
57
55
|
}
|
|
58
56
|
|
|
59
|
-
export const H4 = (props: HeadingProps) => {
|
|
60
|
-
// コンポーネントを使う側でclassNameを指定しても問題ないようにする
|
|
57
|
+
export const H4: React.ElementType<HeadingProps> = (props: HeadingProps) => {
|
|
61
58
|
const { className, children, ...restProps } = props
|
|
62
59
|
|
|
63
60
|
const style = `
|
|
@@ -74,8 +71,7 @@ export const H4 = (props: HeadingProps) => {
|
|
|
74
71
|
)
|
|
75
72
|
}
|
|
76
73
|
|
|
77
|
-
export const H5 = (props: HeadingProps) => {
|
|
78
|
-
// コンポーネントを使う側でclassNameを指定しても問題ないようにする
|
|
74
|
+
export const H5: React.ElementType<HeadingProps> = (props: HeadingProps) => {
|
|
79
75
|
const { className, children, ...restProps } = props
|
|
80
76
|
|
|
81
77
|
const style = `
|
|
@@ -92,8 +88,7 @@ export const H5 = (props: HeadingProps) => {
|
|
|
92
88
|
)
|
|
93
89
|
}
|
|
94
90
|
|
|
95
|
-
export const H6 = (props: HeadingProps) => {
|
|
96
|
-
// コンポーネントを使う側でclassNameを指定しても問題ないようにする
|
|
91
|
+
export const H6: React.ElementType<HeadingProps> = (props: HeadingProps) => {
|
|
97
92
|
const { className, children, ...restProps } = props
|
|
98
93
|
|
|
99
94
|
const style = `
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface IconProps extends React.
|
|
4
|
+
export interface IconProps extends React.ComponentPropsWithRef<'span'> {
|
|
5
5
|
icon: string
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export const Icon
|
|
8
|
+
export const Icon: React.ElementType<IconProps> = React.forwardRef<
|
|
9
|
+
HTMLElement,
|
|
10
|
+
IconProps
|
|
11
|
+
>((props, ref) => {
|
|
9
12
|
const { className, icon, ...restProps } = props
|
|
10
13
|
|
|
11
14
|
const style = `
|
|
@@ -24,4 +27,6 @@ export const Icon = React.forwardRef<HTMLElement, IconProps>((props, ref) => {
|
|
|
24
27
|
{icon}
|
|
25
28
|
</span>
|
|
26
29
|
)
|
|
27
|
-
})
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
Icon.displayName = 'Icon'
|
|
@@ -1,27 +1,38 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface IconButtonProps extends React.
|
|
4
|
+
export interface IconButtonProps extends React.ComponentPropsWithRef<'button'> {
|
|
5
5
|
variant?: 'primary' | 'secondary'
|
|
6
6
|
iconLayout?: 'left' | 'right'
|
|
7
|
+
rounded?: string
|
|
7
8
|
icon: string
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
export const IconButton = React.forwardRef<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
export const IconButton: React.ElementType<IconButtonProps> = React.forwardRef<
|
|
12
|
+
HTMLButtonElement,
|
|
13
|
+
IconButtonProps
|
|
14
|
+
>((props, ref) => {
|
|
15
|
+
const {
|
|
16
|
+
className,
|
|
17
|
+
children,
|
|
18
|
+
variant,
|
|
19
|
+
icon,
|
|
20
|
+
iconLayout,
|
|
21
|
+
rounded,
|
|
22
|
+
...restProps
|
|
23
|
+
} = props
|
|
14
24
|
|
|
15
|
-
|
|
25
|
+
const layout = iconLayout ?? 'left'
|
|
16
26
|
|
|
17
|
-
|
|
27
|
+
const align = 'center'
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
const style = `
|
|
30
|
+
${rounded === 'full' ? 'aspect-square' : ''}
|
|
20
31
|
inline-block
|
|
21
32
|
p-4
|
|
22
33
|
text-button
|
|
23
34
|
text-${align}
|
|
24
|
-
rounded
|
|
35
|
+
rounded-${rounded ? rounded : 'lg'}
|
|
25
36
|
cursor-pointer
|
|
26
37
|
whitespace-nowrap
|
|
27
38
|
border
|
|
@@ -34,7 +45,7 @@ export const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(
|
|
|
34
45
|
disabled:cursor-not-allowed
|
|
35
46
|
`
|
|
36
47
|
|
|
37
|
-
|
|
48
|
+
const primary = `
|
|
38
49
|
text-white-1000
|
|
39
50
|
bg-sea-600
|
|
40
51
|
hover:enabled:bg-sea-700
|
|
@@ -42,19 +53,19 @@ export const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(
|
|
|
42
53
|
disabled:bg-sumi-500
|
|
43
54
|
disabled:text-white-1000
|
|
44
55
|
`
|
|
45
|
-
|
|
56
|
+
const secondary = `
|
|
46
57
|
text-sea-600
|
|
47
58
|
hover:enabled:bg-sea-100
|
|
48
59
|
active:enabled:bg-sea-200
|
|
49
60
|
disabled:text-sumi-500
|
|
50
61
|
`
|
|
51
62
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
const styles = {
|
|
64
|
+
primary: primary,
|
|
65
|
+
secondary: secondary
|
|
66
|
+
}
|
|
56
67
|
|
|
57
|
-
|
|
68
|
+
const iconStyle = `
|
|
58
69
|
inline-block
|
|
59
70
|
align-middle
|
|
60
71
|
font-icon
|
|
@@ -65,16 +76,17 @@ export const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(
|
|
|
65
76
|
mb-1
|
|
66
77
|
`
|
|
67
78
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
return (
|
|
80
|
+
<button
|
|
81
|
+
className={cx(style, styles[variant ?? 'primary'], className)}
|
|
82
|
+
{...restProps}
|
|
83
|
+
ref={ref}
|
|
84
|
+
>
|
|
85
|
+
{layout == 'left' && <span className={cx(iconStyle)}>{icon}</span>}
|
|
86
|
+
{children && <span className="mx-1 inline-block">{children}</span>}
|
|
87
|
+
{layout == 'right' && <span className={cx(iconStyle)}>{icon}</span>}
|
|
88
|
+
</button>
|
|
89
|
+
)
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
IconButton.displayName = 'IconButton'
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface InfoCardProps
|
|
4
|
+
export interface InfoCardProps
|
|
5
|
+
extends React.ComponentPropsWithoutRef<'section'> {
|
|
5
6
|
title?: string
|
|
6
7
|
}
|
|
7
8
|
|
|
8
|
-
export const InfoCard
|
|
9
|
+
export const InfoCard: React.ElementType<InfoCardProps> = (
|
|
10
|
+
props: InfoCardProps
|
|
11
|
+
) => {
|
|
9
12
|
const { className, children, title, ...restProps } = props
|
|
10
13
|
|
|
11
14
|
const style = `
|
|
@@ -28,15 +28,17 @@ const getFileType = (url: string) => {
|
|
|
28
28
|
return null
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export interface LinkProps extends React.
|
|
31
|
+
export interface LinkProps extends React.ComponentPropsWithRef<'a'> {}
|
|
32
32
|
|
|
33
|
-
export const Link = React.forwardRef<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
export const Link: React.ElementType<LinkProps> = React.forwardRef<
|
|
34
|
+
HTMLAnchorElement,
|
|
35
|
+
LinkProps
|
|
36
|
+
>((props, ref) => {
|
|
37
|
+
const { className, children, ...restProps } = props
|
|
38
|
+
const href = props.href ?? ''
|
|
39
|
+
const fileType = getFileType(href)
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
const style = `
|
|
40
42
|
rounded-sm
|
|
41
43
|
cursor-pointer
|
|
42
44
|
text-sea-600
|
|
@@ -51,26 +53,27 @@ export const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
|
|
|
51
53
|
disabled:border-sumi-500
|
|
52
54
|
`
|
|
53
55
|
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<a
|
|
57
|
-
className={cx(style, className)}
|
|
58
|
-
href={href}
|
|
59
|
-
target="_blank"
|
|
60
|
-
rel="noopener noreferrer"
|
|
61
|
-
{...restProps}
|
|
62
|
-
ref={ref}
|
|
63
|
-
>
|
|
64
|
-
{children}
|
|
65
|
-
{fileType ? `(${fileType})` : null}
|
|
66
|
-
</a>
|
|
67
|
-
)
|
|
68
|
-
}
|
|
56
|
+
if (href.startsWith('http')) {
|
|
69
57
|
return (
|
|
70
|
-
<a
|
|
58
|
+
<a
|
|
59
|
+
className={cx(style, className)}
|
|
60
|
+
href={href}
|
|
61
|
+
target="_blank"
|
|
62
|
+
rel="noopener noreferrer"
|
|
63
|
+
{...restProps}
|
|
64
|
+
ref={ref}
|
|
65
|
+
>
|
|
71
66
|
{children}
|
|
72
67
|
{fileType ? `(${fileType})` : null}
|
|
73
68
|
</a>
|
|
74
69
|
)
|
|
75
70
|
}
|
|
76
|
-
|
|
71
|
+
return (
|
|
72
|
+
<a className={cx(style, className)} href={href} {...restProps} ref={ref}>
|
|
73
|
+
{children}
|
|
74
|
+
{fileType ? `(${fileType})` : null}
|
|
75
|
+
</a>
|
|
76
|
+
)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
Link.displayName = 'Link'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface UlProps extends React.
|
|
4
|
+
export interface UlProps extends React.ComponentPropsWithoutRef<'ul'> {}
|
|
5
5
|
|
|
6
|
-
export const Ul = (props: UlProps) => {
|
|
6
|
+
export const Ul: React.ElementType<UlProps> = (props: UlProps) => {
|
|
7
7
|
const { className, children, ...restProps } = props
|
|
8
8
|
|
|
9
9
|
const style = `
|
|
@@ -20,9 +20,9 @@ export const Ul = (props: UlProps) => {
|
|
|
20
20
|
)
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export interface OlProps extends React.
|
|
23
|
+
export interface OlProps extends React.ComponentPropsWithoutRef<'ol'> {}
|
|
24
24
|
|
|
25
|
-
export const Ol = (props: OlProps) => {
|
|
25
|
+
export const Ol: React.ElementType<OlProps> = (props: OlProps) => {
|
|
26
26
|
const { className, children, ...restProps } = props
|
|
27
27
|
|
|
28
28
|
const style = `
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { cx } from '../utils/class'
|
|
3
3
|
|
|
4
|
-
export interface PreProps extends React.
|
|
4
|
+
export interface PreProps extends React.ComponentPropsWithoutRef<'pre'> {}
|
|
5
5
|
|
|
6
|
-
export const Pre = (props: PreProps) => {
|
|
6
|
+
export const Pre: React.ElementType<PreProps> = (props: PreProps) => {
|
|
7
7
|
const { className, children, ...restProps } = props
|
|
8
8
|
|
|
9
9
|
const style = `
|