@sakura-ui/sakura-ui 0.1.11 → 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.
Files changed (145) hide show
  1. package/package.json +8 -8
  2. package/packages/config/package.json +1 -1
  3. package/packages/config/tsconfig.json +1 -1
  4. package/packages/config/vite.config.ts +1 -1
  5. package/packages/core/package.json +2 -2
  6. package/packages/core/src/components/Button.tsx +27 -24
  7. package/packages/core/src/components/Card.tsx +2 -2
  8. package/packages/core/src/components/Code.tsx +2 -2
  9. package/packages/core/src/components/Heading.tsx +7 -12
  10. package/packages/core/src/components/Icon.tsx +8 -3
  11. package/packages/core/src/components/IconButton.tsx +38 -35
  12. package/packages/core/src/components/InfoCard.tsx +5 -2
  13. package/packages/core/src/components/Link.tsx +27 -24
  14. package/packages/core/src/components/List.tsx +4 -4
  15. package/packages/core/src/components/Pre.tsx +2 -2
  16. package/packages/core/src/components/Table.tsx +17 -14
  17. package/packages/core/tsconfig.node.json +1 -1
  18. package/packages/core/vite.config.ts +1 -1
  19. package/packages/forms/coverage/clover.xml +60 -60
  20. package/packages/forms/coverage/coverage-final.json +17 -17
  21. package/packages/forms/coverage/lcov-report/index.html +23 -23
  22. package/packages/forms/coverage/lcov-report/src/components/Checkbox.tsx.html +8 -8
  23. package/packages/forms/coverage/lcov-report/src/components/FieldsetControl.tsx.html +4 -4
  24. package/packages/forms/coverage/lcov-report/src/components/LabelControl.tsx.html +60 -60
  25. package/packages/forms/coverage/lcov-report/src/components/Radio.tsx.html +3 -3
  26. package/packages/forms/coverage/lcov-report/src/components/Select.tsx.html +37 -31
  27. package/packages/forms/coverage/lcov-report/src/components/Text.tsx.html +16 -13
  28. package/packages/forms/coverage/lcov-report/src/components/Textarea.tsx.html +30 -27
  29. package/packages/forms/coverage/lcov-report/src/components/context.ts.html +5 -2
  30. package/packages/forms/coverage/lcov-report/src/components/controlled/CheckboxGroup.tsx.html +3 -3
  31. package/packages/forms/coverage/lcov-report/src/components/controlled/RadioGroup.tsx.html +3 -3
  32. package/packages/forms/coverage/lcov-report/src/components/controlled/SelectControl.tsx.html +3 -3
  33. package/packages/forms/coverage/lcov-report/src/components/controlled/TextControl.tsx.html +3 -3
  34. package/packages/forms/coverage/lcov-report/src/components/controlled/TextareaControl.tsx.html +3 -3
  35. package/packages/forms/coverage/lcov-report/src/components/controlled/index.html +1 -1
  36. package/packages/forms/coverage/lcov-report/src/components/controlled/index.ts.html +1 -1
  37. package/packages/forms/coverage/lcov-report/src/components/index.html +37 -37
  38. package/packages/forms/coverage/lcov-report/src/components/index.ts.html +9 -9
  39. package/packages/forms/coverage/lcov-report/src/index.html +5 -5
  40. package/packages/forms/coverage/lcov-report/src/index.ts.html +9 -9
  41. package/packages/forms/coverage/lcov-report/src/utils/index.html +1 -1
  42. package/packages/forms/coverage/lcov-report/src/utils/index.ts.html +2 -2
  43. package/packages/forms/coverage/lcov.info +91 -83
  44. package/packages/forms/dist/components/Checkbox.d.ts +2 -2
  45. package/packages/forms/dist/components/Checkbox.d.ts.map +1 -1
  46. package/packages/forms/dist/components/Checkbox.js +43 -0
  47. package/packages/forms/dist/components/Checkbox.js.map +1 -0
  48. package/packages/forms/dist/components/FieldsetControl.d.ts +2 -2
  49. package/packages/forms/dist/components/FieldsetControl.d.ts.map +1 -1
  50. package/packages/forms/dist/components/FieldsetControl.js +20 -0
  51. package/packages/forms/dist/components/FieldsetControl.js.map +1 -0
  52. package/packages/forms/dist/components/Input.d.ts +2 -2
  53. package/packages/forms/dist/components/Input.d.ts.map +1 -1
  54. package/packages/forms/dist/components/Input.js +27 -0
  55. package/packages/forms/dist/components/Input.js.map +1 -0
  56. package/packages/forms/dist/components/LabelControl.d.ts +2 -2
  57. package/packages/forms/dist/components/LabelControl.d.ts.map +1 -1
  58. package/packages/forms/dist/components/LabelControl.js +18 -0
  59. package/packages/forms/dist/components/LabelControl.js.map +1 -0
  60. package/packages/forms/dist/components/Radio.d.ts +2 -2
  61. package/packages/forms/dist/components/Radio.d.ts.map +1 -1
  62. package/packages/forms/dist/components/Radio.js +43 -0
  63. package/packages/forms/dist/components/Radio.js.map +1 -0
  64. package/packages/forms/dist/components/Select.d.ts +2 -2
  65. package/packages/forms/dist/components/Select.d.ts.map +1 -1
  66. package/packages/forms/dist/components/Select.js +39 -0
  67. package/packages/forms/dist/components/Select.js.map +1 -0
  68. package/packages/forms/dist/components/Textarea.d.ts +2 -2
  69. package/packages/forms/dist/components/Textarea.d.ts.map +1 -1
  70. package/packages/forms/dist/components/Textarea.js +34 -0
  71. package/packages/forms/dist/components/Textarea.js.map +1 -0
  72. package/packages/forms/dist/components/context.js +8 -0
  73. package/packages/forms/dist/components/context.js.map +1 -0
  74. package/packages/forms/dist/components/controlled/CheckboxGroup.d.ts +2 -2
  75. package/packages/forms/dist/components/controlled/CheckboxGroup.d.ts.map +1 -1
  76. package/packages/forms/dist/components/controlled/CheckboxGroup.js +12 -0
  77. package/packages/forms/dist/components/controlled/CheckboxGroup.js.map +1 -0
  78. package/packages/forms/dist/components/controlled/InputItem.js +2 -0
  79. package/packages/forms/dist/components/controlled/InputItem.js.map +1 -0
  80. package/packages/forms/dist/components/controlled/RadioGroup.d.ts +2 -2
  81. package/packages/forms/dist/components/controlled/RadioGroup.d.ts.map +1 -1
  82. package/packages/forms/dist/components/controlled/RadioGroup.js +12 -0
  83. package/packages/forms/dist/components/controlled/RadioGroup.js.map +1 -0
  84. package/packages/forms/dist/components/controlled/SelectControl.d.ts +2 -2
  85. package/packages/forms/dist/components/controlled/SelectControl.d.ts.map +1 -1
  86. package/packages/forms/dist/components/controlled/SelectControl.js +10 -0
  87. package/packages/forms/dist/components/controlled/SelectControl.js.map +1 -0
  88. package/packages/forms/dist/components/controlled/TextareaControl.d.ts +2 -2
  89. package/packages/forms/dist/components/controlled/TextareaControl.d.ts.map +1 -1
  90. package/packages/forms/dist/components/controlled/TextareaControl.js +10 -0
  91. package/packages/forms/dist/components/controlled/TextareaControl.js.map +1 -0
  92. package/packages/forms/dist/components/controlled/index.d.ts +0 -1
  93. package/packages/forms/dist/components/controlled/index.d.ts.map +1 -1
  94. package/packages/forms/dist/components/controlled/index.js +5 -0
  95. package/packages/forms/dist/components/controlled/index.js.map +1 -0
  96. package/packages/forms/dist/components/index.js +8 -0
  97. package/packages/forms/dist/components/index.js.map +1 -0
  98. package/packages/forms/dist/index.cjs.js +80 -80
  99. package/packages/forms/dist/index.cjs.js.map +1 -1
  100. package/packages/forms/dist/index.d.ts +1 -1
  101. package/packages/forms/dist/index.d.ts.map +1 -1
  102. package/packages/forms/dist/index.es.js +501 -504
  103. package/packages/forms/dist/index.es.js.map +1 -1
  104. package/packages/forms/dist/index.js +3 -0
  105. package/packages/forms/dist/index.js.map +1 -0
  106. package/packages/forms/dist/utils/class.js +2 -0
  107. package/packages/forms/dist/utils/class.js.map +1 -0
  108. package/packages/forms/node_modules/.bin/autoprefixer +4 -4
  109. package/packages/forms/node_modules/.bin/jest +4 -4
  110. package/packages/forms/node_modules/.bin/npm-run-all +4 -4
  111. package/packages/forms/node_modules/.bin/run-p +4 -4
  112. package/packages/forms/node_modules/.bin/run-s +4 -4
  113. package/packages/forms/node_modules/.bin/tailwind +4 -4
  114. package/packages/forms/node_modules/.bin/tailwindcss +4 -4
  115. package/packages/forms/node_modules/.bin/ts-jest +4 -4
  116. package/packages/forms/node_modules/.bin/ts-node +4 -4
  117. package/packages/forms/node_modules/.bin/ts-node-cwd +4 -4
  118. package/packages/forms/node_modules/.bin/ts-node-esm +4 -4
  119. package/packages/forms/node_modules/.bin/ts-node-script +4 -4
  120. package/packages/forms/node_modules/.bin/ts-node-transpile-only +4 -4
  121. package/packages/forms/node_modules/.bin/ts-script +4 -4
  122. package/packages/forms/node_modules/.bin/tsc +4 -4
  123. package/packages/forms/node_modules/.bin/tsc-alias +4 -4
  124. package/packages/forms/node_modules/.bin/tsserver +4 -4
  125. package/packages/forms/node_modules/.bin/vite +4 -4
  126. package/packages/forms/package.json +2 -2
  127. package/packages/forms/src/components/Checkbox.tsx +62 -59
  128. package/packages/forms/src/components/FieldsetControl.tsx +62 -55
  129. package/packages/forms/src/components/Input.tsx +38 -35
  130. package/packages/forms/src/components/LabelControl.tsx +56 -52
  131. package/packages/forms/src/components/Radio.tsx +8 -3
  132. package/packages/forms/src/components/Select.tsx +57 -56
  133. package/packages/forms/src/components/Textarea.tsx +58 -54
  134. package/packages/forms/src/components/controlled/CheckboxGroup.tsx +37 -37
  135. package/packages/forms/src/components/controlled/RadioGroup.tsx +5 -3
  136. package/packages/forms/src/components/controlled/SelectControl.tsx +28 -27
  137. package/packages/forms/src/components/controlled/TextareaControl.tsx +28 -27
  138. package/packages/forms/src/components/controlled/index.ts +0 -1
  139. package/packages/forms/src/index.ts +0 -1
  140. package/packages/forms/tsconfig.node.json +1 -1
  141. package/packages/forms/vite.config.ts +1 -1
  142. package/packages/forms/dist/components/controlled/InputControl.d.ts +0 -10
  143. package/packages/forms/dist/components/controlled/InputControl.d.ts.map +0 -1
  144. package/packages/forms/node_modules/.bin/browserslist +0 -17
  145. package/packages/forms/src/components/controlled/InputControl.tsx +0 -39
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sakura-ui/sakura-ui",
3
- "version": "0.1.11",
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/forms": "0.1.2",
17
- "@sakura-ui/config": "0.1.2",
18
- "@sakura-ui/core": "0.1.5"
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
+ }
@@ -19,7 +19,7 @@
19
19
  "scripts": {
20
20
  "build": "run-p build:*",
21
21
  "build:scripts": "vite build",
22
- "build:types": "tsc --emitDeclarationOnly",
22
+ "build:types": "tsc",
23
23
  "test": "jest"
24
24
  },
25
25
  "keywords": [],
@@ -3,7 +3,7 @@
3
3
  "target": "ESNext",
4
4
  "module": "ESNext",
5
5
  "lib": ["ESNext", "DOM"],
6
- "moduleResolution": "Bundler",
6
+ "moduleResolution": "node",
7
7
  "useDefineForClassFields": true,
8
8
  "strict": true,
9
9
  "resolveJsonModule": true,
@@ -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.5",
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 --emitDeclarationOnly && tsc-alias",
24
+ "build:types": "tsc && tsc-alias",
25
25
  "test": "jest"
26
26
  },
27
27
  "keywords": [],
@@ -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.ComponentPropsWithoutRef<'button'> {
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<HTMLButtonElement, ButtonProps>(
10
- (props, ref) => {
11
- // Make sure that there is no problem even if className is specified on the side that uses the component
12
- const { className, children, textAlign, variant, ...restProps } = props
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
- const align = textAlign ?? 'center'
16
+ const align = textAlign ?? 'center'
15
17
 
16
- const style = `
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
- const primary = `
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
- const secondary = `
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
- const styles = {
51
- primary: primary,
52
- secondary: secondary
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
- ) as React.ElementType
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.ComponentProps<'section'> {}
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.ComponentProps<'code'> {}
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.ComponentProps<'h1'> {}
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.ComponentProps<'span'> {
4
+ export interface IconProps extends React.ComponentPropsWithRef<'span'> {
5
5
  icon: string
6
6
  }
7
7
 
8
- export const Icon = React.forwardRef<HTMLElement, IconProps>((props, ref) => {
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
- }) as React.ElementType
30
+ })
31
+
32
+ Icon.displayName = 'Icon'
@@ -1,30 +1,32 @@
1
1
  import React from 'react'
2
2
  import { cx } from '../utils/class'
3
3
 
4
- export interface IconButtonProps extends React.ComponentProps<'button'> {
4
+ export interface IconButtonProps extends React.ComponentPropsWithRef<'button'> {
5
5
  variant?: 'primary' | 'secondary'
6
6
  iconLayout?: 'left' | 'right'
7
7
  rounded?: string
8
8
  icon: string
9
9
  }
10
10
 
11
- export const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(
12
- (props, ref) => {
13
- const {
14
- className,
15
- children,
16
- variant,
17
- icon,
18
- iconLayout,
19
- rounded,
20
- ...restProps
21
- } = props
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
22
24
 
23
- const layout = iconLayout ?? 'left'
25
+ const layout = iconLayout ?? 'left'
24
26
 
25
- const align = 'center'
27
+ const align = 'center'
26
28
 
27
- const style = `
29
+ const style = `
28
30
  ${rounded === 'full' ? 'aspect-square' : ''}
29
31
  inline-block
30
32
  p-4
@@ -43,7 +45,7 @@ export const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(
43
45
  disabled:cursor-not-allowed
44
46
  `
45
47
 
46
- const primary = `
48
+ const primary = `
47
49
  text-white-1000
48
50
  bg-sea-600
49
51
  hover:enabled:bg-sea-700
@@ -51,19 +53,19 @@ export const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(
51
53
  disabled:bg-sumi-500
52
54
  disabled:text-white-1000
53
55
  `
54
- const secondary = `
56
+ const secondary = `
55
57
  text-sea-600
56
58
  hover:enabled:bg-sea-100
57
59
  active:enabled:bg-sea-200
58
60
  disabled:text-sumi-500
59
61
  `
60
62
 
61
- const styles = {
62
- primary: primary,
63
- secondary: secondary
64
- }
63
+ const styles = {
64
+ primary: primary,
65
+ secondary: secondary
66
+ }
65
67
 
66
- const iconStyle = `
68
+ const iconStyle = `
67
69
  inline-block
68
70
  align-middle
69
71
  font-icon
@@ -74,16 +76,17 @@ export const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(
74
76
  mb-1
75
77
  `
76
78
 
77
- return (
78
- <button
79
- className={cx(style, styles[variant ?? 'primary'], className)}
80
- {...restProps}
81
- ref={ref}
82
- >
83
- {layout == 'left' && <span className={cx(iconStyle)}>{icon}</span>}
84
- {children && <span className="mx-1 inline-block">{children}</span>}
85
- {layout == 'right' && <span className={cx(iconStyle)}>{icon}</span>}
86
- </button>
87
- )
88
- }
89
- ) as React.ElementType
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 extends React.ComponentProps<'section'> {
4
+ export interface InfoCardProps
5
+ extends React.ComponentPropsWithoutRef<'section'> {
5
6
  title?: string
6
7
  }
7
8
 
8
- export const InfoCard = (props: InfoCardProps) => {
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.ComponentProps<'a'> {}
31
+ export interface LinkProps extends React.ComponentPropsWithRef<'a'> {}
32
32
 
33
- export const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
34
- (props, ref) => {
35
- const { className, children, ...restProps } = props
36
- const href = props.href ?? ''
37
- const fileType = getFileType(href)
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
- const style = `
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
- if (href.startsWith('http')) {
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 className={cx(style, className)} href={href} {...restProps} ref={ref}>
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
- ) as React.ElementType
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.ComponentProps<'ul'> {}
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.ComponentProps<'ol'> {}
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.ComponentProps<'pre'> {}
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 = `
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import { cx } from '../utils/class'
3
3
 
4
- export interface TableProps extends React.ComponentProps<'table'> {}
4
+ export interface TableProps extends React.ComponentPropsWithoutRef<'table'> {}
5
5
 
6
6
  const styleBorder = `
7
7
  border
@@ -9,7 +9,7 @@ const styleBorder = `
9
9
  border-sumi-900
10
10
  `
11
11
 
12
- export const Table = (props: TableProps) => {
12
+ export const Table: React.ElementType<TableProps> = (props: TableProps) => {
13
13
  const { className, children, ...restProps } = props
14
14
 
15
15
  // If there is no break-all setting, the table will protrude when using a smartphone
@@ -26,9 +26,12 @@ export const Table = (props: TableProps) => {
26
26
  )
27
27
  }
28
28
 
29
- export interface CaptionProps extends React.ComponentProps<'caption'> {}
29
+ export interface CaptionProps
30
+ extends React.ComponentPropsWithoutRef<'caption'> {}
30
31
 
31
- export const Caption = (props: CaptionProps) => {
32
+ export const Caption: React.ElementType<CaptionProps> = (
33
+ props: CaptionProps
34
+ ) => {
32
35
  const { className, children, ...restProps } = props
33
36
 
34
37
  const style = `text-left`
@@ -39,9 +42,9 @@ export const Caption = (props: CaptionProps) => {
39
42
  )
40
43
  }
41
44
 
42
- export interface TheadProps extends React.ComponentProps<'thead'> {}
45
+ export interface TheadProps extends React.ComponentPropsWithoutRef<'thead'> {}
43
46
 
44
- export const Thead = (props: TheadProps) => {
47
+ export const Thead: React.ElementType<TheadProps> = (props: TheadProps) => {
45
48
  const { className, children, ...restProps } = props
46
49
 
47
50
  return (
@@ -51,9 +54,9 @@ export const Thead = (props: TheadProps) => {
51
54
  )
52
55
  }
53
56
 
54
- export interface TbodyProps extends React.ComponentProps<'tbody'> {}
57
+ export interface TbodyProps extends React.ComponentPropsWithoutRef<'tbody'> {}
55
58
 
56
- export const Tbody = (props: TbodyProps) => {
59
+ export const Tbody: React.ElementType<TbodyProps> = (props: TbodyProps) => {
57
60
  const { className, children, ...restProps } = props
58
61
 
59
62
  return (
@@ -63,9 +66,9 @@ export const Tbody = (props: TbodyProps) => {
63
66
  )
64
67
  }
65
68
 
66
- export interface ThProps extends React.ComponentProps<'th'> {}
69
+ export interface ThProps extends React.ComponentPropsWithoutRef<'th'> {}
67
70
 
68
- export const Th = (props: ThProps) => {
71
+ export const Th: React.ElementType<ThProps> = (props: ThProps) => {
69
72
  const { className, children, ...restProps } = props
70
73
 
71
74
  const style = `
@@ -80,9 +83,9 @@ export const Th = (props: ThProps) => {
80
83
  )
81
84
  }
82
85
 
83
- export interface TrProps extends React.ComponentProps<'tr'> {}
86
+ export interface TrProps extends React.ComponentPropsWithoutRef<'tr'> {}
84
87
 
85
- export const Tr = (props: TrProps) => {
88
+ export const Tr: React.ElementType<TrProps> = (props: TrProps) => {
86
89
  const { className, children, ...restProps } = props
87
90
 
88
91
  const style = ``
@@ -94,9 +97,9 @@ export const Tr = (props: TrProps) => {
94
97
  )
95
98
  }
96
99
 
97
- export interface TdProps extends React.ComponentProps<'td'> {}
100
+ export interface TdProps extends React.ComponentPropsWithoutRef<'td'> {}
98
101
 
99
- export const Td = (props: TdProps) => {
102
+ export const Td: React.ElementType<TdProps> = (props: TdProps) => {
100
103
  const { className, children, ...restProps } = props
101
104
 
102
105
  const style = `
@@ -2,7 +2,7 @@
2
2
  "compilerOptions": {
3
3
  "composite": true,
4
4
  "module": "ESNext",
5
- "moduleResolution": "Bundler",
5
+ "moduleResolution": "node",
6
6
  "allowSyntheticDefaultImports": true
7
7
  },
8
8
  "include": ["vite.config.ts"]
@@ -15,7 +15,7 @@ export default defineConfig({
15
15
  lib: {
16
16
  entry: resolve(__dirname, 'src', 'index.ts'),
17
17
  formats: ['es', 'cjs'],
18
- fileName: (ext) => `index.${ext}.js`
18
+ fileName: (ext: string) => `index.${ext}.js`
19
19
  },
20
20
  rollupOptions: {
21
21
  external: [...Object.keys(peerDependencies)]