@sakura-ui/sakura-ui 0.1.21 → 0.3.0

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 (264) hide show
  1. package/README.md +16 -6
  2. package/package.json +26 -20
  3. package/packages/core/package.json +30 -18
  4. package/packages/core/src/components/Button.tsx +33 -32
  5. package/packages/core/src/components/Card.tsx +38 -20
  6. package/packages/core/src/components/Code.tsx +6 -4
  7. package/packages/core/src/components/Faq.tsx +13 -7
  8. package/packages/core/src/components/Heading.tsx +42 -32
  9. package/packages/core/src/components/Icon.tsx +43 -13
  10. package/packages/core/src/components/IconButton.tsx +56 -45
  11. package/packages/core/src/components/LangSelector.tsx +135 -0
  12. package/packages/core/src/components/Link.tsx +38 -65
  13. package/packages/core/src/components/LinkCard.tsx +91 -0
  14. package/packages/core/src/components/List.tsx +14 -12
  15. package/packages/core/src/components/MenuButton.tsx +112 -0
  16. package/packages/core/src/components/NavigationItem.tsx +41 -0
  17. package/packages/core/src/components/OverflowContainer.tsx +24 -0
  18. package/packages/core/src/components/PopoverMenu.tsx +81 -0
  19. package/packages/core/src/components/Pre.tsx +6 -4
  20. package/packages/core/src/components/Table.tsx +35 -28
  21. package/packages/core/src/components/buttonStyle.ts +55 -38
  22. package/packages/core/src/components/index.ts +13 -28
  23. package/packages/core/src/icons/Close.tsx +21 -0
  24. package/packages/core/src/icons/CloseMobile.tsx +43 -0
  25. package/packages/core/src/icons/KeyboardArrowDown.tsx +24 -0
  26. package/packages/core/src/icons/Language.tsx +25 -0
  27. package/packages/core/src/icons/LanguageMobile.tsx +40 -0
  28. package/packages/core/src/icons/Menu.tsx +24 -0
  29. package/packages/core/src/icons/MenuMobile.tsx +40 -0
  30. package/packages/core/src/icons/index.ts +8 -0
  31. package/packages/core/src/icons/props.ts +5 -0
  32. package/packages/core/src/index.ts +9 -29
  33. package/packages/core/src/type.d.ts +1 -0
  34. package/packages/core/tests/Button.test.tsx +40 -0
  35. package/packages/core/tests/Card.test.tsx +36 -8
  36. package/packages/core/tests/IconButton.test.tsx +57 -0
  37. package/packages/core/tests/Link.test.tsx +60 -0
  38. package/packages/core/tests/vitest.setup.ts +2 -0
  39. package/packages/core/tsconfig.node.json +3 -2
  40. package/packages/core/vite.config.ts +3 -2
  41. package/packages/forms/.turbo/turbo-build.log +22 -0
  42. package/packages/forms/dist/index.cjs.js +242 -152
  43. package/packages/forms/dist/index.es.js +947 -1010
  44. package/packages/forms/dist/types/components/Checkbox.d.ts +10 -3
  45. package/packages/forms/dist/types/components/Checkbox.d.ts.map +1 -1
  46. package/packages/forms/dist/types/components/FieldsetControl.d.ts +14 -9
  47. package/packages/forms/dist/types/components/FieldsetControl.d.ts.map +1 -1
  48. package/packages/forms/dist/types/components/FileInput.d.ts +10 -3
  49. package/packages/forms/dist/types/components/FileInput.d.ts.map +1 -1
  50. package/packages/forms/dist/types/components/Input.d.ts +10 -3
  51. package/packages/forms/dist/types/components/Input.d.ts.map +1 -1
  52. package/packages/forms/dist/types/components/LabelControl.d.ts +13 -8
  53. package/packages/forms/dist/types/components/LabelControl.d.ts.map +1 -1
  54. package/packages/forms/dist/types/components/Radio.d.ts +10 -3
  55. package/packages/forms/dist/types/components/Radio.d.ts.map +1 -1
  56. package/packages/forms/dist/types/components/Select.d.ts +10 -3
  57. package/packages/forms/dist/types/components/Select.d.ts.map +1 -1
  58. package/packages/forms/dist/types/components/Textarea.d.ts +8 -3
  59. package/packages/forms/dist/types/components/Textarea.d.ts.map +1 -1
  60. package/packages/forms/dist/types/components/controlled/CheckboxGroup.d.ts +18 -11
  61. package/packages/forms/dist/types/components/controlled/CheckboxGroup.d.ts.map +1 -1
  62. package/packages/forms/dist/types/components/controlled/RadioGroup.d.ts +19 -12
  63. package/packages/forms/dist/types/components/controlled/RadioGroup.d.ts.map +1 -1
  64. package/packages/forms/dist/types/components/controlled/index.d.ts +0 -2
  65. package/packages/forms/dist/types/components/controlled/index.d.ts.map +1 -1
  66. package/packages/forms/dist/types/components/index.d.ts +8 -8
  67. package/packages/forms/dist/types/components/index.d.ts.map +1 -1
  68. package/packages/forms/dist/types/components/inputStyle.d.ts +13 -0
  69. package/packages/forms/dist/types/components/inputStyle.d.ts.map +1 -0
  70. package/packages/forms/dist/types/index.d.ts +1 -2
  71. package/packages/forms/dist/types/index.d.ts.map +1 -1
  72. package/packages/forms/node_modules/.bin/autoprefixer +2 -2
  73. package/packages/forms/node_modules/.bin/tailwind +2 -2
  74. package/packages/forms/node_modules/.bin/tailwindcss +2 -2
  75. package/packages/forms/node_modules/.bin/ts-node +4 -4
  76. package/packages/forms/node_modules/.bin/ts-node-cwd +4 -4
  77. package/packages/forms/node_modules/.bin/ts-node-esm +4 -4
  78. package/packages/forms/node_modules/.bin/ts-node-script +4 -4
  79. package/packages/forms/node_modules/.bin/ts-node-transpile-only +4 -4
  80. package/packages/forms/node_modules/.bin/ts-script +4 -4
  81. package/packages/forms/node_modules/.bin/tsc +17 -0
  82. package/packages/forms/node_modules/.bin/tsserver +17 -0
  83. package/packages/forms/node_modules/.vite/vitest/results.json +1 -0
  84. package/packages/forms/package.json +21 -17
  85. package/packages/forms/src/components/Checkbox.tsx +82 -64
  86. package/packages/forms/src/components/FieldsetControl.tsx +21 -28
  87. package/packages/forms/src/components/FileInput.tsx +88 -62
  88. package/packages/forms/src/components/Input.tsx +35 -41
  89. package/packages/forms/src/components/LabelControl.tsx +19 -25
  90. package/packages/forms/src/components/Radio.tsx +73 -61
  91. package/packages/forms/src/components/Select.tsx +71 -61
  92. package/packages/forms/src/components/Textarea.tsx +50 -54
  93. package/packages/forms/src/components/controlled/CheckboxGroup.tsx +25 -19
  94. package/packages/forms/src/components/controlled/RadioGroup.tsx +22 -20
  95. package/packages/forms/src/components/controlled/index.ts +0 -2
  96. package/packages/forms/src/components/index.ts +8 -8
  97. package/packages/forms/src/components/inputStyle.ts +82 -0
  98. package/packages/forms/src/index.ts +1 -17
  99. package/packages/forms/tests/Checkbox.test.tsx +44 -0
  100. package/packages/forms/tests/FieldsetControl.test.tsx +63 -12
  101. package/packages/forms/tests/FileInput.test.tsx +25 -0
  102. package/packages/forms/tests/Input.test.tsx +13 -84
  103. package/packages/forms/tests/LabelControl.test.tsx +83 -21
  104. package/packages/forms/tests/Radio.test.tsx +24 -79
  105. package/packages/forms/tests/Select.test.tsx +30 -0
  106. package/packages/forms/tests/Textarea.test.tsx +25 -0
  107. package/packages/forms/tests/vitest.setup.ts +2 -0
  108. package/packages/forms/tsconfig.node.json +3 -2
  109. package/packages/forms/vite.config.ts +3 -2
  110. package/packages/helper/.turbo/turbo-build.log +23 -0
  111. package/packages/helper/dist/index.cjs.js +78 -0
  112. package/packages/helper/dist/index.es.js +119 -0
  113. package/packages/helper/dist/types/calc.d.ts +2 -0
  114. package/packages/helper/dist/types/calc.d.ts.map +1 -0
  115. package/packages/{forms/dist/types/utils/class.d.ts → helper/dist/types/cx.d.ts} +1 -1
  116. package/packages/helper/dist/types/cx.d.ts.map +1 -0
  117. package/packages/helper/dist/types/index.d.ts +6 -0
  118. package/packages/helper/dist/types/index.d.ts.map +1 -0
  119. package/packages/helper/dist/types/querySelector.d.ts +2 -0
  120. package/packages/helper/dist/types/querySelector.d.ts.map +1 -0
  121. package/packages/helper/dist/types/styles.d.ts +22 -0
  122. package/packages/helper/dist/types/styles.d.ts.map +1 -0
  123. package/packages/helper/dist/types/treefy.d.ts +8 -0
  124. package/packages/helper/dist/types/treefy.d.ts.map +1 -0
  125. package/packages/{config → helper}/package.json +13 -19
  126. package/packages/helper/src/calc.ts +1 -0
  127. package/packages/{core/src/libs → helper/src}/cx.ts +1 -0
  128. package/packages/helper/src/index.ts +5 -0
  129. package/packages/helper/src/querySelector.ts +20 -0
  130. package/packages/helper/src/styles.ts +116 -0
  131. package/packages/helper/src/treefy.ts +22 -0
  132. package/packages/helper/vite.config.ts +26 -0
  133. package/packages/markdown/.turbo/turbo-build.log +22 -0
  134. package/packages/markdown/README.md +129 -0
  135. package/packages/markdown/dist/index.cjs.js +175 -0
  136. package/packages/markdown/dist/index.es.js +17098 -0
  137. package/packages/markdown/dist/types/components/Markdown.d.ts +15 -0
  138. package/packages/markdown/dist/types/components/Markdown.d.ts.map +1 -0
  139. package/packages/markdown/dist/types/components/index.d.ts +2 -0
  140. package/packages/markdown/dist/types/components/index.d.ts.map +1 -0
  141. package/packages/markdown/dist/types/index.d.ts +2 -0
  142. package/packages/markdown/dist/types/index.d.ts.map +1 -0
  143. package/packages/markdown/dist/types/plugins/attr.d.ts +3 -0
  144. package/packages/markdown/dist/types/plugins/attr.d.ts.map +1 -0
  145. package/packages/markdown/dist/types/plugins/card.d.ts +3 -0
  146. package/packages/markdown/dist/types/plugins/card.d.ts.map +1 -0
  147. package/packages/markdown/dist/types/plugins/cell.d.ts +3 -0
  148. package/packages/markdown/dist/types/plugins/cell.d.ts.map +1 -0
  149. package/packages/markdown/dist/types/plugins/faq.d.ts +3 -0
  150. package/packages/markdown/dist/types/plugins/faq.d.ts.map +1 -0
  151. package/packages/markdown/dist/types/plugins/grid.d.ts +3 -0
  152. package/packages/markdown/dist/types/plugins/grid.d.ts.map +1 -0
  153. package/packages/markdown/dist/types/plugins/headings.d.ts +9 -0
  154. package/packages/markdown/dist/types/plugins/headings.d.ts.map +1 -0
  155. package/packages/markdown/dist/types/plugins/helper.d.ts +9 -0
  156. package/packages/markdown/dist/types/plugins/helper.d.ts.map +1 -0
  157. package/packages/markdown/dist/types/plugins/index.d.ts +9 -0
  158. package/packages/markdown/dist/types/plugins/index.d.ts.map +1 -0
  159. package/packages/markdown/dist/types/plugins/linkButton.d.ts +3 -0
  160. package/packages/markdown/dist/types/plugins/linkButton.d.ts.map +1 -0
  161. package/packages/markdown/dist/types/plugins/youtube.d.ts +3 -0
  162. package/packages/markdown/dist/types/plugins/youtube.d.ts.map +1 -0
  163. package/packages/markdown/node_modules/.bin/autoprefixer +17 -0
  164. package/packages/markdown/node_modules/.bin/tailwind +17 -0
  165. package/packages/markdown/node_modules/.bin/tailwindcss +17 -0
  166. package/packages/markdown/node_modules/.bin/ts-node +17 -0
  167. package/packages/markdown/node_modules/.bin/ts-node-cwd +17 -0
  168. package/packages/markdown/node_modules/.bin/ts-node-esm +17 -0
  169. package/packages/markdown/node_modules/.bin/ts-node-script +17 -0
  170. package/packages/markdown/node_modules/.bin/ts-node-transpile-only +17 -0
  171. package/packages/markdown/node_modules/.bin/ts-script +17 -0
  172. package/packages/markdown/node_modules/.bin/tsc +17 -0
  173. package/packages/markdown/node_modules/.bin/tsserver +17 -0
  174. package/packages/markdown/package.json +83 -0
  175. package/packages/markdown/src/components/Markdown.tsx +361 -0
  176. package/packages/markdown/src/components/index.ts +1 -0
  177. package/packages/markdown/src/global.d.ts +9 -0
  178. package/packages/markdown/src/index.ts +1 -0
  179. package/packages/markdown/src/plugins/attr.ts +19 -0
  180. package/packages/markdown/src/plugins/card.ts +57 -0
  181. package/packages/markdown/src/plugins/cell.ts +47 -0
  182. package/packages/markdown/src/plugins/faq.ts +40 -0
  183. package/packages/markdown/src/plugins/grid.ts +51 -0
  184. package/packages/markdown/src/plugins/headings.ts +35 -0
  185. package/packages/markdown/src/plugins/helper.ts +27 -0
  186. package/packages/markdown/src/plugins/index.ts +8 -0
  187. package/packages/markdown/src/plugins/linkButton.ts +25 -0
  188. package/packages/markdown/src/plugins/youtube.ts +48 -0
  189. package/packages/markdown/tsconfig.json +13 -0
  190. package/packages/markdown/tsconfig.node.json +7 -0
  191. package/packages/{config → markdown}/vite.config.ts +6 -2
  192. package/packages/tailwind-theme-plugin/.turbo/turbo-build.log +22 -0
  193. package/packages/tailwind-theme-plugin/dist/index.cjs.js +1 -1
  194. package/packages/tailwind-theme-plugin/dist/index.es.js +5358 -6115
  195. package/packages/tailwind-theme-plugin/dist/types/index.d.ts +1 -1
  196. package/packages/tailwind-theme-plugin/dist/types/index.d.ts.map +1 -1
  197. package/packages/tailwind-theme-plugin/node_modules/.bin/autoprefixer +4 -4
  198. package/packages/tailwind-theme-plugin/node_modules/.bin/tailwind +4 -4
  199. package/packages/tailwind-theme-plugin/node_modules/.bin/tailwindcss +4 -4
  200. package/packages/tailwind-theme-plugin/node_modules/.bin/ts-node +4 -4
  201. package/packages/tailwind-theme-plugin/node_modules/.bin/ts-node-cwd +4 -4
  202. package/packages/tailwind-theme-plugin/node_modules/.bin/ts-node-esm +4 -4
  203. package/packages/tailwind-theme-plugin/node_modules/.bin/ts-node-script +4 -4
  204. package/packages/tailwind-theme-plugin/node_modules/.bin/ts-node-transpile-only +4 -4
  205. package/packages/tailwind-theme-plugin/node_modules/.bin/ts-script +4 -4
  206. package/packages/tailwind-theme-plugin/node_modules/.bin/tsc +17 -0
  207. package/packages/tailwind-theme-plugin/node_modules/.bin/tsserver +17 -0
  208. package/packages/tailwind-theme-plugin/package.json +10 -7
  209. package/packages/tailwind-theme-plugin/src/index.ts +232 -297
  210. package/packages/tailwind-theme-plugin/vite.config.ts +1 -1
  211. package/packages/config/src/index.ts +0 -347
  212. package/packages/config/tests/index.test.ts +0 -13
  213. package/packages/core/.eslintrc.json +0 -25
  214. package/packages/core/src/components/InfoCard.tsx +0 -50
  215. package/packages/core/src/libs/forward-ref.ts +0 -41
  216. package/packages/core/src/types/component.ts +0 -82
  217. package/packages/forms/coverage/clover.xml +0 -209
  218. package/packages/forms/coverage/coverage-final.json +0 -18
  219. package/packages/forms/coverage/lcov-report/base.css +0 -224
  220. package/packages/forms/coverage/lcov-report/block-navigation.js +0 -87
  221. package/packages/forms/coverage/lcov-report/favicon.png +0 -0
  222. package/packages/forms/coverage/lcov-report/index.html +0 -161
  223. package/packages/forms/coverage/lcov-report/prettify.css +0 -1
  224. package/packages/forms/coverage/lcov-report/prettify.js +0 -2
  225. package/packages/forms/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  226. package/packages/forms/coverage/lcov-report/sorter.js +0 -196
  227. package/packages/forms/coverage/lcov-report/src/components/Checkbox.tsx.html +0 -295
  228. package/packages/forms/coverage/lcov-report/src/components/FieldsetControl.tsx.html +0 -295
  229. package/packages/forms/coverage/lcov-report/src/components/LabelControl.tsx.html +0 -289
  230. package/packages/forms/coverage/lcov-report/src/components/Radio.tsx.html +0 -262
  231. package/packages/forms/coverage/lcov-report/src/components/Select.tsx.html +0 -259
  232. package/packages/forms/coverage/lcov-report/src/components/Text.tsx.html +0 -220
  233. package/packages/forms/coverage/lcov-report/src/components/Textarea.tsx.html +0 -229
  234. package/packages/forms/coverage/lcov-report/src/components/context.ts.html +0 -136
  235. package/packages/forms/coverage/lcov-report/src/components/controlled/CheckboxGroup.tsx.html +0 -244
  236. package/packages/forms/coverage/lcov-report/src/components/controlled/RadioGroup.tsx.html +0 -265
  237. package/packages/forms/coverage/lcov-report/src/components/controlled/SelectControl.tsx.html +0 -205
  238. package/packages/forms/coverage/lcov-report/src/components/controlled/TextControl.tsx.html +0 -202
  239. package/packages/forms/coverage/lcov-report/src/components/controlled/TextareaControl.tsx.html +0 -205
  240. package/packages/forms/coverage/lcov-report/src/components/controlled/index.html +0 -191
  241. package/packages/forms/coverage/lcov-report/src/components/controlled/index.ts.html +0 -100
  242. package/packages/forms/coverage/lcov-report/src/components/index.html +0 -236
  243. package/packages/forms/coverage/lcov-report/src/components/index.ts.html +0 -106
  244. package/packages/forms/coverage/lcov-report/src/index.html +0 -116
  245. package/packages/forms/coverage/lcov-report/src/index.ts.html +0 -136
  246. package/packages/forms/coverage/lcov-report/src/utils/index.html +0 -116
  247. package/packages/forms/coverage/lcov-report/src/utils/index.ts.html +0 -88
  248. package/packages/forms/coverage/lcov.info +0 -434
  249. package/packages/forms/dist/types/components/controlled/SelectControl.d.ts +0 -10
  250. package/packages/forms/dist/types/components/controlled/SelectControl.d.ts.map +0 -1
  251. package/packages/forms/dist/types/components/controlled/TextareaControl.d.ts +0 -10
  252. package/packages/forms/dist/types/components/controlled/TextareaControl.d.ts.map +0 -1
  253. package/packages/forms/dist/types/utils/class.d.ts.map +0 -1
  254. package/packages/forms/jest.config.ts +0 -11
  255. package/packages/forms/node_modules/.bin/browserslist +0 -17
  256. package/packages/forms/node_modules/.bin/eslint +0 -17
  257. package/packages/forms/node_modules/.bin/vitest +0 -17
  258. package/packages/forms/node_modules/.vitest/results.json +0 -1
  259. package/packages/forms/src/components/controlled/SelectControl.tsx +0 -42
  260. package/packages/forms/src/components/controlled/TextareaControl.tsx +0 -42
  261. package/packages/forms/src/utils/class.ts +0 -1
  262. package/packages/tailwind-theme-plugin/node_modules/.bin/browserslist +0 -17
  263. /package/packages/{config → helper}/tsconfig.json +0 -0
  264. /package/packages/{config → helper}/tsconfig.node.json +0 -0
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/node_modules:$NODE_PATH"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/tsc" "$@"
15
+ else
16
+ exec node "$basedir/../../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/tsc" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/typescript@5.7.2/node_modules:/Users/t.fujita/Documents/Repos/sakura-ui/node_modules/.pnpm/node_modules:$NODE_PATH"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/tsserver" "$@"
15
+ else
16
+ exec node "$basedir/../../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/bin/tsserver" "$@"
17
+ fi
@@ -0,0 +1 @@
1
+ {"version":"2.1.8","results":[[":tests/LabelControl.test.tsx",{"duration":38.35800000000006,"failed":false}],[":tests/FieldsetControl.test.tsx",{"duration":34.352292000000034,"failed":false}],[":tests/Checkbox.test.tsx",{"duration":25.56812500000001,"failed":false}],[":tests/Radio.test.tsx",{"duration":23.31604100000004,"failed":false}],[":tests/Select.test.tsx",{"duration":22.277916999999434,"failed":false}],[":tests/FileInput.test.tsx",{"duration":16.862084000000095,"failed":false}],[":tests/Input.test.tsx",{"duration":17.523415999999997,"failed":false}],[":tests/Textarea.test.tsx",{"duration":17.92333299999882,"failed":false}]]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sakura-ui/forms",
3
- "version": "0.1.13",
3
+ "version": "0.3.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "glassonion1",
@@ -25,9 +25,12 @@
25
25
  "files": [
26
26
  "dist"
27
27
  ],
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
28
31
  "scripts": {
29
32
  "lint": "run-s lint:*",
30
- "lint:eslint": "eslint . --ext .ts,.tsx --fix",
33
+ "lint:lint": "biome lint ./",
31
34
  "lint:prettier": "prettier --write --ignore-path .gitignore './src/*.ts'",
32
35
  "prebuild": "rimraf dist",
33
36
  "build": "run-p build:*",
@@ -36,22 +39,23 @@
36
39
  "test": "vitest"
37
40
  },
38
41
  "peerDependencies": {
39
- "react": "^18.2.0",
40
- "react-dom": "^18.2.0",
41
- "tailwindcss": "^3.2.7"
42
+ "react": "^19.0.0",
43
+ "react-dom": "^19.0.0",
44
+ "tailwindcss": "^3.4.5"
45
+ },
46
+ "dependencies": {
47
+ "@sakura-ui/helper": "0.0.5"
42
48
  },
43
49
  "devDependencies": {
44
- "@testing-library/jest-dom": "^6.4.2",
45
- "@testing-library/react": "^14.0.0",
46
- "@types/react": "^18.2.14",
47
- "@types/react-dom": "^18.2.6",
48
- "autoprefixer": "^10.4.14",
49
- "eslint-plugin-jsx-a11y": "^6.7.1",
50
- "eslint-plugin-react": "^7.33.2",
51
- "jsdom": "^24.0.0",
52
- "postcss": "^8.4.25",
53
- "react": "^18.2.0",
54
- "react-dom": "^18.2.0",
55
- "tailwindcss": "^3.3.2"
50
+ "@testing-library/jest-dom": "catalog:",
51
+ "@testing-library/react": "catalog:",
52
+ "@types/react": "catalog:",
53
+ "@types/react-dom": "catalog:",
54
+ "autoprefixer": "catalog:",
55
+ "happy-dom": "catalog:",
56
+ "postcss": "catalog:",
57
+ "react": "catalog:",
58
+ "react-dom": "catalog:",
59
+ "tailwindcss": "catalog:"
56
60
  }
57
61
  }
@@ -1,75 +1,93 @@
1
- import React from 'react'
2
- import { cx } from '../utils/class'
1
+ import React, { type ComponentPropsWithRef } from 'react'
2
+ import { cx, Style } from '@sakura-ui/helper'
3
3
  import { ControllerContext } from './context'
4
+ import {
5
+ type InputSize,
6
+ borderlessInputBaseStyles,
7
+ borderlessInputSizeStyles,
8
+ iconStyles
9
+ } from './inputStyle'
4
10
 
5
- export interface CheckboxProps extends React.ComponentPropsWithRef<'input'> {}
11
+ export namespace Checkbox {
12
+ export interface Props extends Omit<ComponentPropsWithRef<'input'>, 'size'> {
13
+ size?: InputSize
14
+ }
15
+ }
6
16
 
7
- export const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
8
- (props, ref) => {
9
- const { className, children, ...restProps } = props
10
- const ctx = React.useContext(ControllerContext)
11
- if (ctx.isRequired) {
12
- restProps.required = true
13
- }
14
- if (ctx.groupName) {
15
- restProps.name = ctx.groupName
16
- }
17
+ export const Checkbox = (props: Checkbox.Props) => {
18
+ const { id, className, size = 'lg', children, ...restProps } = props
19
+ const genId = React.useId()
20
+ const checkboxId = id || genId
21
+ const ctx = React.useContext(ControllerContext)
22
+ if (ctx.isRequired) {
23
+ restProps.required = true
24
+ }
25
+ if (ctx.groupName) {
26
+ restProps.name = ctx.groupName
27
+ }
17
28
 
18
- const style = `
19
- inline-block
20
- text-base
21
- cursor-pointer
22
- py-2
23
- mr-4
24
- `
29
+ const scales: { [key in InputSize]: number } = {
30
+ lg: 22 / 24,
31
+ md: 18 / 24,
32
+ sm: 18 / 24
33
+ }
25
34
 
26
- const styleInput = `
27
- peer
28
- sr-only
29
- `
35
+ const styleInput = `
36
+ peer
37
+ sr-only
38
+ `
30
39
 
31
- const styleCheck = `
32
- bg-clip-content
33
- w-6 h-6
34
- ml-1
35
- mr-2
36
- rounded
37
- border
38
- border-solid
39
- border-sumi-900
40
- fill-transparent
41
- peer-checked:fill-white-1000
42
- peer-checked:bg-sea-600
43
- peer-checked:border-none
44
- peer-disabled:border-sumi-500
45
- peer-focus-visible:ring-2
46
- peer-focus-visible:ring-offset-2
47
- peer-focus-visible:ring-wood-500
48
- `
40
+ const styleCheck = `
41
+ bg-clip-content
42
+ rounded
43
+ border
44
+ border-solid
45
+ border-solid-gray-900
46
+ fill-transparent
47
+ peer-checked:fill-white
48
+ peer-checked:bg-blue-600
49
+ peer-checked:border-none
50
+ peer-disabled:border-solid-gray-500
51
+ ${Style.Peer.focusRect}
52
+ `
49
53
 
50
- return (
51
- <label htmlFor={restProps.id} className={cx(style, className)}>
52
- <span className="flex items-center">
53
- <input
54
- className={styleInput}
55
- type="checkbox"
56
- aria-describedby={ctx.helperTextId}
57
- aria-errormessage={ctx.errorMessageId}
58
- aria-invalid={ctx.isInvalid ?? false}
59
- aria-required={ctx.isRequired ?? false}
60
- {...restProps}
61
- ref={ref}
62
- />
63
- <span className={styleCheck}>
64
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">
54
+ return (
55
+ <label
56
+ htmlFor={checkboxId}
57
+ className={cx(
58
+ borderlessInputBaseStyles,
59
+ borderlessInputSizeStyles[size],
60
+ className
61
+ )}
62
+ >
63
+ <span className="flex items-center">
64
+ <input
65
+ id={checkboxId}
66
+ className={styleInput}
67
+ type="checkbox"
68
+ aria-describedby={ctx.helperTextId}
69
+ aria-errormessage={ctx.errorMessageId}
70
+ aria-invalid={ctx.isInvalid ?? false}
71
+ aria-required={ctx.isRequired ?? false}
72
+ {...restProps}
73
+ />
74
+ <span className={cx(styleCheck, iconStyles[size])}>
75
+ <svg
76
+ xmlns="http://www.w3.org/2000/svg"
77
+ aria-hidden={true}
78
+ width="24"
79
+ height="24"
80
+ viewBox="0 0 24 24"
81
+ >
82
+ <g transform={`scale(${scales[size]} ${scales[size]})`}>
65
83
  <path d="m9.55 17.65-5.325-5.325 1.05-1.075 4.275 4.275 9.175-9.175 1.05 1.075Z" />
66
- </svg>
67
- </span>
68
- <span className="peer-disabled:text-sumi-500">{children}</span>
84
+ </g>
85
+ </svg>
69
86
  </span>
70
- </label>
71
- )
72
- }
73
- )
87
+ <span className="peer-disabled:text-solid-gray-500">{children}</span>
88
+ </span>
89
+ </label>
90
+ )
91
+ }
74
92
 
75
93
  Checkbox.displayName = 'Checkbox'
@@ -1,21 +1,19 @@
1
- import React from 'react'
2
- import { cx } from '../utils/class'
1
+ import React, { type ComponentPropsWithRef } from 'react'
2
+ import { cx } from '@sakura-ui/helper'
3
3
  import { ControllerContext } from './context'
4
4
 
5
- export interface FieldsetControlProps
6
- extends React.ComponentPropsWithRef<'fieldset'> {
7
- labelText: string
8
- helperText?: string
9
- errorMessage?: string
10
- isInvalid?: boolean
11
- isRequired?: boolean
12
- direction?: 'flex-col' | 'flex-row'
5
+ export namespace FieldsetControl {
6
+ export interface Props extends ComponentPropsWithRef<'fieldset'> {
7
+ labelText: string
8
+ helperText?: string
9
+ errorMessage?: string
10
+ isInvalid?: boolean
11
+ isRequired?: boolean
12
+ direction?: 'flex-col' | 'flex-row'
13
+ }
13
14
  }
14
15
 
15
- export const FieldsetControl = React.forwardRef<
16
- HTMLFieldSetElement,
17
- FieldsetControlProps
18
- >((props, ref) => {
16
+ export const FieldsetControl = (props: FieldsetControl.Props) => {
19
17
  const id = React.useId()
20
18
  const {
21
19
  labelText,
@@ -43,35 +41,30 @@ export const FieldsetControl = React.forwardRef<
43
41
 
44
42
  return (
45
43
  <ControllerContext.Provider value={context}>
46
- <fieldset className={cx('mb-4', className)} ref={ref} {...restProps}>
44
+ <fieldset
45
+ className={cx('flex flex-col items-start gap-2', className)}
46
+ {...restProps}
47
+ >
47
48
  <legend>
48
- <p
49
- className={cx('block mb-2 text-label', isInvalid && 'text-sun-800')}
50
- >
49
+ <p className={cx('block text-label', isInvalid && 'text-red-800')}>
51
50
  {labelText}
52
- {isRequired && <span className="text-sun-800">&nbsp;*</span>}
51
+ {isRequired && <span className="text-red-800">&nbsp;*</span>}
53
52
  </p>
54
53
  </legend>
55
54
  <div className={cx('inline-flex', styleDirection)}>{children}</div>
56
55
  {helperText && (
57
- <p id={context.helperTextId} className="text-sup text-sumi-700 mt-2">
56
+ <p id={context.helperTextId} className="text-sup text-solid-gray-700">
58
57
  {helperText}
59
58
  </p>
60
59
  )}
61
60
  {isInvalid && (
62
- <p
63
- id={context.errorMessageId}
64
- className={cx(
65
- 'text-sup text-sun-800',
66
- helperText ? 'mt-1' : 'mt-2'
67
- )}
68
- >
61
+ <p id={context.errorMessageId} className="text-label text-red-800">
69
62
  {errorMessage}
70
63
  </p>
71
64
  )}
72
65
  </fieldset>
73
66
  </ControllerContext.Provider>
74
67
  )
75
- })
68
+ }
76
69
 
77
70
  FieldsetControl.displayName = 'FieldsetControl'
@@ -1,74 +1,100 @@
1
- import React from 'react'
2
- import { cx } from '../utils/class'
1
+ import React, { type ComponentPropsWithRef } from 'react'
2
+ import { cx, Style } from '@sakura-ui/helper'
3
3
  import { ControllerContext } from './context'
4
+ import type { InputSize } from './inputStyle'
4
5
 
5
- export interface FileInputProps extends React.ComponentPropsWithRef<'input'> {}
6
+ export namespace FileInput {
7
+ export interface Props extends Omit<ComponentPropsWithRef<'input'>, 'size'> {
8
+ size?: InputSize
9
+ }
10
+ }
6
11
 
7
- export const FileInput = React.forwardRef<HTMLInputElement, FileInputProps>(
8
- (props, ref) => {
9
- const { className, ...restProps } = props
10
- const ctx = React.useContext(ControllerContext)
11
- if (ctx.isRequired) {
12
- restProps.required = true
13
- }
12
+ export const FileInput = (props: FileInput.Props) => {
13
+ const { id, className, size = 'lg', ...restProps } = props
14
+ const ctx = React.useContext(ControllerContext)
15
+ if (ctx.isRequired) {
16
+ restProps.required = true
17
+ }
14
18
 
15
- const base = `
16
- file:mr-2
17
- file:inline-block
18
- file:text-button
19
- file:text-center
20
- file:cursor-pointer
21
- file:select-none
22
- file:touch-manipulation
23
- file:whitespace-nowrap
24
- file:border
25
- file:border-solid
26
- file:border-sea-800
27
- file:active:border-sea-1200
28
- file:hover:border-sea-900
29
- file:disabled:border-sumi-500
30
- file:disabled:cursor-not-allowed
31
- `
19
+ const base = `
20
+ file:mr-2
21
+ file:inline-block
22
+ file:text-button
23
+ file:text-center
24
+ file:cursor-pointer
25
+ file:select-none
26
+ file:touch-manipulation
27
+ file:whitespace-nowrap
28
+ file:border
29
+ file:border-solid
30
+ file:border-blue-900
31
+ file:hover:border-blue-1000
32
+ file:active:border-blue-1200
33
+ file:disabled:border-solid-gray-500
34
+ file:disabled:cursor-not-allowed
35
+ `
32
36
 
33
- const secondary = `
34
- file:text-sea-800
35
- file:bg-transparent
36
- file:active:bg-sea-200
37
- file:hover:bg-sea-100
38
- file:active:text-sea-1200
39
- file:hover:text-sea-900
40
- file:disabled:text-sumi-500
41
- file:disabled:bg-transparent
42
- `
43
- const styleLg = `
37
+ const outline = `
38
+ file:text-blue-900
39
+ file:hover:text-blue-1000
40
+ file:active:text-blue-1200
41
+ file:bg-transparent
42
+ file:hover:bg-blue-200
43
+ file:active:bg-blue-300
44
+ file:disabled:text-solid-gray-500
45
+ file:disabled:bg-transparent
46
+ `
47
+
48
+ const styleInput = `
49
+ text-label
50
+ text-solid-gray-900
51
+ rounded-lg
52
+ outline-offset-2
53
+ aria-invalid:text-red-800
54
+ ${Style.hoverUnderline}
55
+ ${Style.focusRounded}
56
+ `
57
+
58
+ const sizeStyles: { [key in InputSize]: string } = {
59
+ // 16(p-4) * 2 + 22(text-button * leading-snug) + boader * 2 = 56px
60
+ lg: `
44
61
  file:p-4
45
62
  file:text-button
46
63
  file:rounded-lg
64
+ file:leading-snug
65
+ `,
66
+ // 12(py-3) * 2 + 22(text-button * leading-snug) + boader * 2 = 48px
67
+ md: `
68
+ file:px-4
69
+ file:py-3
70
+ file:text-button
71
+ file:rounded-lg
72
+ file:leading-snug
73
+ `,
74
+ // 8(py-2) * 2 + 22(text-button * leading-snug) + boader * 2 = 40px
75
+ sm: `
76
+ file:px-3
77
+ file:py-2
78
+ file:text-button
79
+ file:rounded-md
80
+ file:leading-snug
47
81
  `
48
- const styleInput = `
49
- rounded-lg
50
- outline-offset-2
51
- text-sumi-900
52
- focus:outline
53
- focus:outline-2
54
- focus:outline-wood-600
55
- aria-invalid:text-sun-800
56
- `
57
-
58
- return (
59
- <input
60
- type="file"
61
- id={restProps.id ?? ctx.id}
62
- className={cx(base, secondary, styleLg, styleInput, className)}
63
- aria-describedby={ctx.helperTextId}
64
- aria-errormessage={ctx.errorMessageId}
65
- aria-invalid={ctx.isInvalid ?? false}
66
- aria-required={ctx.isRequired ?? false}
67
- ref={ref}
68
- {...restProps}
69
- />
70
- )
71
82
  }
72
- )
83
+
84
+ return (
85
+ <input
86
+ type="file"
87
+ id={id || ctx.id}
88
+ className={cx(base, outline, sizeStyles[size], styleInput, className)}
89
+ aria-describedby={ctx.helperTextId}
90
+ aria-errormessage={ctx.errorMessageId}
91
+ aria-invalid={ctx.isInvalid ?? false}
92
+ aria-required={ctx.isRequired ?? false}
93
+ role="button"
94
+ aria-label="File Upload"
95
+ {...restProps}
96
+ />
97
+ )
98
+ }
73
99
 
74
100
  FileInput.displayName = 'FileInput'
@@ -1,47 +1,41 @@
1
- import React from 'react'
2
- import { cx } from '../utils/class'
1
+ import React, { type ComponentPropsWithRef } from 'react'
2
+ import { cx } from '@sakura-ui/helper'
3
3
  import { ControllerContext } from './context'
4
+ import {
5
+ type InputSize,
6
+ borderedInputBaseStyles,
7
+ borderedInputSizeStyles
8
+ } from './inputStyle'
4
9
 
5
- export interface InputProps extends React.ComponentPropsWithRef<'input'> {}
6
-
7
- export const Input = React.forwardRef<HTMLInputElement, InputProps>(
8
- (props, ref) => {
9
- const { className, ...restProps } = props
10
- const ctx = React.useContext(ControllerContext)
11
- if (ctx.isRequired) {
12
- restProps.required = true
13
- }
14
-
15
- const style = `
16
- p-4
17
- rounded-lg
18
- border
19
- border-solid
20
- border-sumi-900
21
- outline-offset-2
22
- focus:outline
23
- focus:outline-2
24
- focus:outline-wood-500
25
- disabled:bg-transparent
26
- disabled:text-sumi-500
27
- disabled:border-sumi-500
28
- aria-invalid:border-sun-800
29
- `
10
+ export namespace Input {
11
+ export interface Props extends Omit<ComponentPropsWithRef<'input'>, 'size'> {
12
+ size?: InputSize
13
+ }
14
+ }
30
15
 
31
- return (
32
- <input
33
- type="text"
34
- id={restProps.id ?? ctx.id}
35
- className={cx(style, className)}
36
- aria-describedby={ctx.helperTextId}
37
- aria-errormessage={ctx.errorMessageId}
38
- aria-invalid={ctx.isInvalid ?? false}
39
- aria-required={ctx.isRequired ?? false}
40
- ref={ref}
41
- {...restProps}
42
- />
43
- )
16
+ export const Input = (props: Input.Props) => {
17
+ const { id, className, size = 'lg', ...restProps } = props
18
+ const ctx = React.useContext(ControllerContext)
19
+ if (ctx.isRequired) {
20
+ restProps.required = true
44
21
  }
45
- )
22
+
23
+ return (
24
+ <input
25
+ type="text"
26
+ id={id || ctx.id}
27
+ className={cx(
28
+ borderedInputBaseStyles,
29
+ borderedInputSizeStyles[size],
30
+ className
31
+ )}
32
+ aria-describedby={ctx.helperTextId}
33
+ aria-errormessage={ctx.errorMessageId}
34
+ aria-invalid={ctx.isInvalid ?? false}
35
+ aria-required={ctx.isRequired ?? false}
36
+ {...restProps}
37
+ />
38
+ )
39
+ }
46
40
 
47
41
  Input.displayName = 'Input'