@oyolincc/create 0.3.0 → 0.5.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 (392) hide show
  1. package/package.json +2 -2
  2. package/templates/hono-fullstack/.codegraph/.gitignore +5 -0
  3. package/templates/hono-fullstack/README.md +22 -1
  4. package/templates/hono-fullstack/_gitignore +1 -0
  5. package/templates/hono-fullstack/apps/server/package.json +7 -2
  6. package/templates/hono-fullstack/apps/server/src/adapters/cloudflare/entry.ts +4 -30
  7. package/templates/hono-fullstack/apps/server/src/adapters/nodejs/bootstrap.ts +20 -12
  8. package/templates/hono-fullstack/apps/server/src/adapters/nodejs/entry.ts +7 -57
  9. package/templates/hono-fullstack/apps/server/src/app.ts +37 -21
  10. package/templates/hono-fullstack/apps/server/src/config.ts +1 -1
  11. package/templates/hono-fullstack/apps/server/src/di-container.ts +51 -0
  12. package/templates/hono-fullstack/apps/server/src/infra/logger/getter.ts +1 -1
  13. package/templates/hono-fullstack/apps/server/src/infra/logger/pino.ts +21 -34
  14. package/templates/hono-fullstack/apps/server/src/infra/work-runner/errors.ts +22 -0
  15. package/templates/hono-fullstack/apps/server/src/infra/work-runner/pass-through/runner.ts +28 -22
  16. package/templates/hono-fullstack/apps/server/src/infra/work-runner/piscina/runner.ts +11 -34
  17. package/templates/hono-fullstack/apps/server/src/infra/work-runner/{example → piscina}/worker-entry.ts +6 -2
  18. package/templates/hono-fullstack/apps/server/src/infra/work-runner/types.ts +2 -16
  19. package/templates/hono-fullstack/apps/server/src/infra/work-runner/utils/business-error.ts +10 -5
  20. package/templates/hono-fullstack/apps/server/src/infra/work-runner/utils/message.ts +5 -17
  21. package/templates/hono-fullstack/apps/server/src/middlewares/cors.ts +16 -22
  22. package/templates/hono-fullstack/apps/server/src/middlewares/logger.ts +34 -0
  23. package/templates/hono-fullstack/apps/server/src/modules/example/module.ts +8 -0
  24. package/templates/hono-fullstack/apps/server/src/modules/example/queries.ts +8 -0
  25. package/templates/hono-fullstack/apps/server/src/modules/example/routes.ts +74 -68
  26. package/templates/hono-fullstack/apps/server/src/modules/example/service.test.ts +53 -0
  27. package/templates/hono-fullstack/apps/server/src/modules/example/service.ts +54 -0
  28. package/templates/hono-fullstack/apps/server/src/modules/example/types.ts +12 -0
  29. package/templates/hono-fullstack/apps/server/src/modules/example/work-task/tasks.test.ts +9 -35
  30. package/templates/hono-fullstack/apps/server/src/modules/example/work-task/tasks.ts +15 -46
  31. package/templates/hono-fullstack/apps/server/src/shared/errors/defs/index.ts +6 -1
  32. package/templates/hono-fullstack/apps/server/src/shared/errors/handler.ts +1 -1
  33. package/templates/hono-fullstack/apps/server/src/shared/network/openapi/index.ts +1 -1
  34. package/templates/hono-fullstack/apps/server/src/shared/types/app.ts +51 -0
  35. package/templates/hono-fullstack/apps/server/src/shared/types/db.ts +126 -0
  36. package/templates/hono-fullstack/apps/server/src/shared/utils/data-access/check.ts +19 -0
  37. package/templates/hono-fullstack/apps/server/src/shared/utils/data-access/model.ts +47 -0
  38. package/templates/hono-fullstack/apps/server/src/shared/utils/data-access/params.ts +105 -0
  39. package/templates/hono-fullstack/apps/server/src/shared/utils/data-access/query.test.ts +139 -0
  40. package/templates/hono-fullstack/apps/server/src/shared/utils/data-access/query.ts +236 -0
  41. package/templates/hono-fullstack/apps/server/vite.config.ts +2 -2
  42. package/templates/hono-fullstack/apps/server/wrangler.jsonc +1 -1
  43. package/templates/hono-fullstack/apps/stack/frontend/assets/styles.css +6 -0
  44. package/templates/hono-fullstack/apps/stack/frontend/components/general/ErrorMessage.tsx +3 -1
  45. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/AppLayout.tsx +2 -1
  46. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/Header.tsx +14 -2
  47. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/Page.tsx +2 -1
  48. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/PageContainer.tsx +4 -1
  49. package/templates/hono-fullstack/apps/stack/frontend/modules/example/api.ts +16 -9
  50. package/templates/hono-fullstack/apps/stack/frontend/modules/example/components/ExampleForm.tsx +25 -12
  51. package/templates/hono-fullstack/apps/stack/frontend/modules/example/components/ExampleList.tsx +13 -4
  52. package/templates/hono-fullstack/apps/stack/frontend/modules/example/hooks/api-hooks.ts +21 -8
  53. package/templates/hono-fullstack/apps/stack/frontend/routes/__root.tsx +1 -1
  54. package/templates/hono-fullstack/apps/stack/frontend/routes/index.tsx +35 -12
  55. package/templates/hono-fullstack/apps/stack/frontend/shared/network/query-hooks.ts +33 -0
  56. package/templates/hono-fullstack/apps/stack/package.json +9 -4
  57. package/templates/hono-fullstack/apps/stack/panda.config.ts +31 -0
  58. package/templates/hono-fullstack/apps/stack/tsconfig.json +1 -0
  59. package/templates/hono-fullstack/apps/stack/turbo.json +20 -0
  60. package/templates/hono-fullstack/apps/stack/vite.config.ts +48 -12
  61. package/templates/hono-fullstack/apps/stack/wrangler.jsonc +1 -1
  62. package/templates/hono-fullstack/envs/.env.example.sqlite-d1 +1 -0
  63. package/templates/hono-fullstack/libs/db/drizzle-kit/sqlite-d1.config.ts +29 -10
  64. package/templates/hono-fullstack/libs/db/package.json +1 -0
  65. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/columns.ts +1 -1
  66. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/modules/examples/examples.ts +6 -3
  67. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/vo.ts +7 -1
  68. package/templates/hono-fullstack/libs/definition/README.md +81 -0
  69. package/templates/hono-fullstack/libs/definition/package.json +3 -1
  70. package/templates/hono-fullstack/libs/definition/src/constants/index.ts +1 -0
  71. package/templates/hono-fullstack/libs/definition/src/constants/pagination.ts +3 -0
  72. package/templates/hono-fullstack/libs/definition/src/modules/common-contracts.ts +24 -0
  73. package/templates/hono-fullstack/libs/definition/src/modules/example/contracts.ts +34 -0
  74. package/templates/hono-fullstack/libs/definition/src/modules/example/index.ts +1 -16
  75. package/templates/hono-fullstack/libs/definition/src/modules/index.ts +2 -0
  76. package/templates/hono-fullstack/libs/definition/src/modules/vo-generated-types.ts +12 -0
  77. package/templates/hono-fullstack/libs/ui/.storybook/main.ts +32 -0
  78. package/templates/hono-fullstack/libs/ui/.storybook/panda.config.ts +22 -0
  79. package/templates/hono-fullstack/libs/ui/.storybook/preview.tsx +79 -0
  80. package/templates/hono-fullstack/libs/ui/.storybook/styles.css +1 -0
  81. package/templates/hono-fullstack/libs/ui/.storybook/vite.config.ts +37 -0
  82. package/templates/hono-fullstack/libs/ui/components.json +15 -0
  83. package/templates/hono-fullstack/libs/ui/package.json +114 -0
  84. package/templates/hono-fullstack/libs/ui/panda.config.ts +41 -0
  85. package/templates/hono-fullstack/libs/ui/src/Tooltip.tsx +47 -0
  86. package/templates/hono-fullstack/libs/ui/src/components/atoms/buttons/Button.tsx +80 -0
  87. package/templates/hono-fullstack/libs/ui/src/components/atoms/buttons/CloseButton.tsx +15 -0
  88. package/templates/hono-fullstack/libs/ui/src/components/atoms/buttons/IconButton.tsx +10 -0
  89. package/templates/hono-fullstack/libs/ui/src/components/atoms/collections/Combobox.tsx +91 -0
  90. package/templates/hono-fullstack/libs/ui/src/components/atoms/collections/Select.tsx +88 -0
  91. package/templates/hono-fullstack/libs/ui/src/components/atoms/collections/TreeView.tsx +142 -0
  92. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Avatar.tsx +64 -0
  93. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Badge.tsx +7 -0
  94. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Card.tsx +23 -0
  95. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Clipboard.tsx +77 -0
  96. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Icon.tsx +9 -0
  97. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Table.tsx +51 -0
  98. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Tag.tsx +23 -0
  99. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Timeline.tsx +33 -0
  100. package/templates/hono-fullstack/libs/ui/src/components/atoms/date-and-time/DatePicker.tsx +255 -0
  101. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Accordion.tsx +48 -0
  102. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Breadcrumb.tsx +50 -0
  103. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Collapsible.tsx +34 -0
  104. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Pagination.tsx +74 -0
  105. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Steps.tsx +91 -0
  106. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Tabs.tsx +37 -0
  107. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Alert.tsx +52 -0
  108. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Progress.tsx +41 -0
  109. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/ProgressCircle.tsx +40 -0
  110. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Skeleton.tsx +37 -0
  111. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Spinner.tsx +7 -0
  112. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Toast.tsx +99 -0
  113. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Checkbox.tsx +95 -0
  114. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/ColorPicker.tsx +148 -0
  115. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Editable.tsx +44 -0
  116. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Field.tsx +36 -0
  117. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Fieldset.tsx +34 -0
  118. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/FileUpload.tsx +143 -0
  119. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Input.tsx +7 -0
  120. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/InputAddon.tsx +7 -0
  121. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/InputGroup.tsx +61 -0
  122. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/NativeSelect.tsx +81 -0
  123. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/NumberInput.tsx +63 -0
  124. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/PasswordInput.tsx +76 -0
  125. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/PinInput.tsx +36 -0
  126. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/RadioCard.tsx +96 -0
  127. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/RadioGroup.tsx +61 -0
  128. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/RatingGroup.tsx +106 -0
  129. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/SegmentGroup.tsx +68 -0
  130. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Slider.tsx +87 -0
  131. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Switch.tsx +74 -0
  132. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/TagsInput.tsx +77 -0
  133. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Textarea.tsx +7 -0
  134. package/templates/hono-fullstack/libs/ui/src/components/atoms/index.ts +98 -0
  135. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/AbsoluteCenter.tsx +7 -0
  136. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/Loader.tsx +69 -0
  137. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/Span.tsx +5 -0
  138. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/create-layout.ts +18 -0
  139. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Float.tsx +7 -0
  140. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Grid.tsx +17 -0
  141. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Group.tsx +7 -0
  142. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/ScrollArea.tsx +46 -0
  143. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Separator.tsx +26 -0
  144. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Stack.tsx +54 -0
  145. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Dialog.tsx +69 -0
  146. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Drawer.tsx +49 -0
  147. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/HoverCard.tsx +37 -0
  148. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Menu.tsx +74 -0
  149. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/OverlayManager.test.ts +124 -0
  150. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/OverlayManager.tsx +189 -0
  151. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Popover.tsx +57 -0
  152. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Tooltip.tsx +37 -0
  153. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/Heading.tsx +6 -0
  154. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/Link.tsx +7 -0
  155. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/LinkOverlay.tsx +21 -0
  156. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/Text.tsx +6 -0
  157. package/templates/hono-fullstack/libs/ui/src/components/atoms/utilities/VisuallyHidden.tsx +13 -0
  158. package/templates/hono-fullstack/libs/ui/src/hooks.ts +242 -0
  159. package/templates/hono-fullstack/libs/ui/src/index.ts +19 -0
  160. package/templates/hono-fullstack/libs/ui/src/theme/animation-styles.ts +50 -0
  161. package/templates/hono-fullstack/libs/ui/src/theme/breakpoints.ts +7 -0
  162. package/templates/hono-fullstack/libs/ui/src/theme/conditions.ts +12 -0
  163. package/templates/hono-fullstack/libs/ui/src/theme/containers.ts +16 -0
  164. package/templates/hono-fullstack/libs/ui/src/theme/global-css.ts +12 -0
  165. package/templates/hono-fullstack/libs/ui/src/theme/keyframes.ts +157 -0
  166. package/templates/hono-fullstack/libs/ui/src/theme/layer-styles.ts +11 -0
  167. package/templates/hono-fullstack/libs/ui/src/theme/patterns/grid.ts +51 -0
  168. package/templates/hono-fullstack/libs/ui/src/theme/patterns/index.ts +60 -0
  169. package/templates/hono-fullstack/libs/ui/src/theme/patterns/stack.ts +46 -0
  170. package/templates/hono-fullstack/libs/ui/src/theme/recipes/absolute-center.ts +38 -0
  171. package/templates/hono-fullstack/libs/ui/src/theme/recipes/accordion.ts +68 -0
  172. package/templates/hono-fullstack/libs/ui/src/theme/recipes/alert.ts +83 -0
  173. package/templates/hono-fullstack/libs/ui/src/theme/recipes/avatar.ts +155 -0
  174. package/templates/hono-fullstack/libs/ui/src/theme/recipes/badge.ts +67 -0
  175. package/templates/hono-fullstack/libs/ui/src/theme/recipes/breadcrumb.ts +69 -0
  176. package/templates/hono-fullstack/libs/ui/src/theme/recipes/button.ts +149 -0
  177. package/templates/hono-fullstack/libs/ui/src/theme/recipes/card.ts +36 -0
  178. package/templates/hono-fullstack/libs/ui/src/theme/recipes/checkbox.ts +120 -0
  179. package/templates/hono-fullstack/libs/ui/src/theme/recipes/clipboard.ts +22 -0
  180. package/templates/hono-fullstack/libs/ui/src/theme/recipes/collapsible.ts +26 -0
  181. package/templates/hono-fullstack/libs/ui/src/theme/recipes/color-picker.ts +299 -0
  182. package/templates/hono-fullstack/libs/ui/src/theme/recipes/combobox.ts +141 -0
  183. package/templates/hono-fullstack/libs/ui/src/theme/recipes/date-picker.ts +302 -0
  184. package/templates/hono-fullstack/libs/ui/src/theme/recipes/dialog.ts +191 -0
  185. package/templates/hono-fullstack/libs/ui/src/theme/recipes/drawer.ts +170 -0
  186. package/templates/hono-fullstack/libs/ui/src/theme/recipes/editable.ts +64 -0
  187. package/templates/hono-fullstack/libs/ui/src/theme/recipes/field.ts +41 -0
  188. package/templates/hono-fullstack/libs/ui/src/theme/recipes/fieldset.ts +47 -0
  189. package/templates/hono-fullstack/libs/ui/src/theme/recipes/file-upload.ts +86 -0
  190. package/templates/hono-fullstack/libs/ui/src/theme/recipes/group.ts +78 -0
  191. package/templates/hono-fullstack/libs/ui/src/theme/recipes/heading.ts +24 -0
  192. package/templates/hono-fullstack/libs/ui/src/theme/recipes/hover-card.ts +47 -0
  193. package/templates/hono-fullstack/libs/ui/src/theme/recipes/icon.ts +25 -0
  194. package/templates/hono-fullstack/libs/ui/src/theme/recipes/index.ts +120 -0
  195. package/templates/hono-fullstack/libs/ui/src/theme/recipes/input-addon.ts +51 -0
  196. package/templates/hono-fullstack/libs/ui/src/theme/recipes/input-group.ts +77 -0
  197. package/templates/hono-fullstack/libs/ui/src/theme/recipes/input.ts +99 -0
  198. package/templates/hono-fullstack/libs/ui/src/theme/recipes/link.ts +36 -0
  199. package/templates/hono-fullstack/libs/ui/src/theme/recipes/menu.ts +114 -0
  200. package/templates/hono-fullstack/libs/ui/src/theme/recipes/native-select.ts +92 -0
  201. package/templates/hono-fullstack/libs/ui/src/theme/recipes/number-input.ts +91 -0
  202. package/templates/hono-fullstack/libs/ui/src/theme/recipes/pagination.ts +9 -0
  203. package/templates/hono-fullstack/libs/ui/src/theme/recipes/pin-input.ts +33 -0
  204. package/templates/hono-fullstack/libs/ui/src/theme/recipes/popover.ts +78 -0
  205. package/templates/hono-fullstack/libs/ui/src/theme/recipes/progress-circle.ts +50 -0
  206. package/templates/hono-fullstack/libs/ui/src/theme/recipes/progress.ts +112 -0
  207. package/templates/hono-fullstack/libs/ui/src/theme/recipes/radio-card.ts +223 -0
  208. package/templates/hono-fullstack/libs/ui/src/theme/recipes/radio-group.ts +78 -0
  209. package/templates/hono-fullstack/libs/ui/src/theme/recipes/rating-group.ts +98 -0
  210. package/templates/hono-fullstack/libs/ui/src/theme/recipes/scroll-area.ts +119 -0
  211. package/templates/hono-fullstack/libs/ui/src/theme/recipes/segment-group.ts +162 -0
  212. package/templates/hono-fullstack/libs/ui/src/theme/recipes/select.ts +157 -0
  213. package/templates/hono-fullstack/libs/ui/src/theme/recipes/separator.ts +25 -0
  214. package/templates/hono-fullstack/libs/ui/src/theme/recipes/skeleton.ts +65 -0
  215. package/templates/hono-fullstack/libs/ui/src/theme/recipes/slider.ts +164 -0
  216. package/templates/hono-fullstack/libs/ui/src/theme/recipes/spinner.ts +34 -0
  217. package/templates/hono-fullstack/libs/ui/src/theme/recipes/steps.ts +162 -0
  218. package/templates/hono-fullstack/libs/ui/src/theme/recipes/switch.ts +150 -0
  219. package/templates/hono-fullstack/libs/ui/src/theme/recipes/table.ts +150 -0
  220. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tabs.ts +128 -0
  221. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tag.ts +114 -0
  222. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tags-input.ts +201 -0
  223. package/templates/hono-fullstack/libs/ui/src/theme/recipes/text.ts +7 -0
  224. package/templates/hono-fullstack/libs/ui/src/theme/recipes/textarea.ts +90 -0
  225. package/templates/hono-fullstack/libs/ui/src/theme/recipes/timeline.ts +137 -0
  226. package/templates/hono-fullstack/libs/ui/src/theme/recipes/toast.ts +52 -0
  227. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tooltip.ts +44 -0
  228. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tree-view.ts +200 -0
  229. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/amber.ts +91 -0
  230. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/gray.ts +103 -0
  231. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/green.ts +88 -0
  232. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/index.ts +14 -0
  233. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/lime.ts +91 -0
  234. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/red.ts +88 -0
  235. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/index.ts +8 -0
  236. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/shadows.ts +46 -0
  237. package/templates/hono-fullstack/libs/ui/src/theme/text-styles.ts +82 -0
  238. package/templates/hono-fullstack/libs/ui/src/theme/tokens/animations.ts +8 -0
  239. package/templates/hono-fullstack/libs/ui/src/theme/tokens/aspect-ratio.ts +6 -0
  240. package/templates/hono-fullstack/libs/ui/src/theme/tokens/borders.ts +5 -0
  241. package/templates/hono-fullstack/libs/ui/src/theme/tokens/colors.ts +35 -0
  242. package/templates/hono-fullstack/libs/ui/src/theme/tokens/durations.ts +11 -0
  243. package/templates/hono-fullstack/libs/ui/src/theme/tokens/easings.ts +9 -0
  244. package/templates/hono-fullstack/libs/ui/src/theme/tokens/index.ts +42 -0
  245. package/templates/hono-fullstack/libs/ui/src/theme/tokens/radii.ts +13 -0
  246. package/templates/hono-fullstack/libs/ui/src/theme/tokens/sizes.ts +27 -0
  247. package/templates/hono-fullstack/libs/ui/src/theme/tokens/spacing.ts +41 -0
  248. package/templates/hono-fullstack/libs/ui/src/theme/tokens/typography.ts +86 -0
  249. package/templates/hono-fullstack/libs/ui/src/theme/tokens/z-index.ts +43 -0
  250. package/templates/hono-fullstack/libs/ui/stories/README.md +107 -0
  251. package/templates/hono-fullstack/libs/ui/stories/actions/Button.stories.tsx +260 -0
  252. package/templates/hono-fullstack/libs/ui/stories/actions/Clipboard.stories.tsx +87 -0
  253. package/templates/hono-fullstack/libs/ui/stories/actions/IconButton.stories.tsx +33 -0
  254. package/templates/hono-fullstack/libs/ui/stories/collections/Combobox.stories.tsx +334 -0
  255. package/templates/hono-fullstack/libs/ui/stories/collections/Select.stories.tsx +342 -0
  256. package/templates/hono-fullstack/libs/ui/stories/collections/TreeView.stories.tsx +252 -0
  257. package/templates/hono-fullstack/libs/ui/stories/color/ColorPicker.stories.tsx +217 -0
  258. package/templates/hono-fullstack/libs/ui/stories/date/DatePicker.stories.tsx +302 -0
  259. package/templates/hono-fullstack/libs/ui/stories/disclosure/Accordion.stories.tsx +105 -0
  260. package/templates/hono-fullstack/libs/ui/stories/disclosure/Collapsible.stories.tsx +55 -0
  261. package/templates/hono-fullstack/libs/ui/stories/disclosure/Steps.stories.tsx +208 -0
  262. package/templates/hono-fullstack/libs/ui/stories/disclosure/Tabs.stories.tsx +176 -0
  263. package/templates/hono-fullstack/libs/ui/stories/display/Avatar.stories.tsx +108 -0
  264. package/templates/hono-fullstack/libs/ui/stories/display/Badge.stories.tsx +90 -0
  265. package/templates/hono-fullstack/libs/ui/stories/display/Card.stories.tsx +121 -0
  266. package/templates/hono-fullstack/libs/ui/stories/display/Heading.stories.tsx +62 -0
  267. package/templates/hono-fullstack/libs/ui/stories/display/Icon.stories.tsx +51 -0
  268. package/templates/hono-fullstack/libs/ui/stories/display/Table.stories.tsx +222 -0
  269. package/templates/hono-fullstack/libs/ui/stories/display/Tag.stories.tsx +168 -0
  270. package/templates/hono-fullstack/libs/ui/stories/display/Text.stories.tsx +32 -0
  271. package/templates/hono-fullstack/libs/ui/stories/display/Timeline.stories.tsx +241 -0
  272. package/templates/hono-fullstack/libs/ui/stories/feedback/Alert.stories.tsx +122 -0
  273. package/templates/hono-fullstack/libs/ui/stories/feedback/Progress.stories.tsx +163 -0
  274. package/templates/hono-fullstack/libs/ui/stories/feedback/ProgressCircle.stories.tsx +176 -0
  275. package/templates/hono-fullstack/libs/ui/stories/feedback/Skeleton.stories.tsx +75 -0
  276. package/templates/hono-fullstack/libs/ui/stories/feedback/Spinner.stories.tsx +49 -0
  277. package/templates/hono-fullstack/libs/ui/stories/feedback/Toast.stories.tsx +145 -0
  278. package/templates/hono-fullstack/libs/ui/stories/forms/Checkbox.stories.tsx +281 -0
  279. package/templates/hono-fullstack/libs/ui/stories/forms/Editable.stories.tsx +94 -0
  280. package/templates/hono-fullstack/libs/ui/stories/forms/Field.stories.tsx +72 -0
  281. package/templates/hono-fullstack/libs/ui/stories/forms/Fieldset.stories.tsx +109 -0
  282. package/templates/hono-fullstack/libs/ui/stories/forms/FileUpload.stories.tsx +115 -0
  283. package/templates/hono-fullstack/libs/ui/stories/forms/Form.stories.tsx +120 -0
  284. package/templates/hono-fullstack/libs/ui/stories/forms/Input.stories.tsx +155 -0
  285. package/templates/hono-fullstack/libs/ui/stories/forms/InputGroup.stories.tsx +79 -0
  286. package/templates/hono-fullstack/libs/ui/stories/forms/NativeSelect.stories.tsx +160 -0
  287. package/templates/hono-fullstack/libs/ui/stories/forms/NumberInput.stories.tsx +149 -0
  288. package/templates/hono-fullstack/libs/ui/stories/forms/PasswordInput.stories.tsx +141 -0
  289. package/templates/hono-fullstack/libs/ui/stories/forms/PinInput.stories.tsx +155 -0
  290. package/templates/hono-fullstack/libs/ui/stories/forms/RadioCard.stories.tsx +265 -0
  291. package/templates/hono-fullstack/libs/ui/stories/forms/RadioGroup.stories.tsx +109 -0
  292. package/templates/hono-fullstack/libs/ui/stories/forms/RatingGroup.stories.tsx +123 -0
  293. package/templates/hono-fullstack/libs/ui/stories/forms/SegmentGroup.stories.tsx +130 -0
  294. package/templates/hono-fullstack/libs/ui/stories/forms/Slider.stories.tsx +190 -0
  295. package/templates/hono-fullstack/libs/ui/stories/forms/Switch.stories.tsx +124 -0
  296. package/templates/hono-fullstack/libs/ui/stories/forms/TagsInput.stories.tsx +154 -0
  297. package/templates/hono-fullstack/libs/ui/stories/forms/Textarea.stories.tsx +148 -0
  298. package/templates/hono-fullstack/libs/ui/stories/layout/Grid.stories.tsx +60 -0
  299. package/templates/hono-fullstack/libs/ui/stories/layout/Positioning.stories.tsx +90 -0
  300. package/templates/hono-fullstack/libs/ui/stories/layout/ScrollArea.stories.tsx +68 -0
  301. package/templates/hono-fullstack/libs/ui/stories/layout/Stack.stories.tsx +87 -0
  302. package/templates/hono-fullstack/libs/ui/stories/navigation/Breadcrumb.stories.tsx +104 -0
  303. package/templates/hono-fullstack/libs/ui/stories/navigation/Link.stories.tsx +62 -0
  304. package/templates/hono-fullstack/libs/ui/stories/navigation/LinkBox.stories.tsx +45 -0
  305. package/templates/hono-fullstack/libs/ui/stories/navigation/Pagination.stories.tsx +74 -0
  306. package/templates/hono-fullstack/libs/ui/stories/overlays/Dialog.stories.tsx +255 -0
  307. package/templates/hono-fullstack/libs/ui/stories/overlays/Drawer.stories.tsx +114 -0
  308. package/templates/hono-fullstack/libs/ui/stories/overlays/HoverCard.stories.tsx +47 -0
  309. package/templates/hono-fullstack/libs/ui/stories/overlays/Menu.stories.tsx +133 -0
  310. package/templates/hono-fullstack/libs/ui/stories/overlays/OverlayManager.stories.tsx +206 -0
  311. package/templates/hono-fullstack/libs/ui/stories/overlays/Popover.stories.tsx +73 -0
  312. package/templates/hono-fullstack/libs/ui/stories/overlays/Tooltip.stories.tsx +114 -0
  313. package/templates/hono-fullstack/libs/ui/stories/tsconfig.json +14 -0
  314. package/templates/hono-fullstack/libs/ui/tsconfig.build.json +5 -0
  315. package/templates/hono-fullstack/libs/ui/tsconfig.json +13 -0
  316. package/templates/hono-fullstack/libs/ui/turbo.json +28 -0
  317. package/templates/hono-fullstack/libs/ui/vite.config.ts +33 -0
  318. package/templates/hono-fullstack/oyo.config.json +31 -1
  319. package/templates/hono-fullstack/package.json +1 -0
  320. package/templates/hono-fullstack/pnpm-workspace.yaml +20 -10
  321. package/templates/hono-fullstack/turbo.json +10 -0
  322. package/templates/hono-server/.codegraph/.gitignore +5 -0
  323. package/templates/hono-server/README.md +9 -1
  324. package/templates/hono-server/_gitignore +1 -0
  325. package/templates/hono-server/apps/server/package.json +7 -2
  326. package/templates/hono-server/apps/server/src/adapters/cloudflare/entry.ts +4 -30
  327. package/templates/hono-server/apps/server/src/adapters/nodejs/bootstrap.ts +20 -12
  328. package/templates/hono-server/apps/server/src/adapters/nodejs/entry.ts +7 -57
  329. package/templates/hono-server/apps/server/src/app.ts +37 -21
  330. package/templates/hono-server/apps/server/src/config.ts +1 -1
  331. package/templates/hono-server/apps/server/src/di-container.ts +51 -0
  332. package/templates/hono-server/apps/server/src/infra/logger/getter.ts +1 -1
  333. package/templates/hono-server/apps/server/src/infra/logger/pino.ts +21 -34
  334. package/templates/hono-server/apps/server/src/infra/work-runner/errors.ts +22 -0
  335. package/templates/hono-server/apps/server/src/infra/work-runner/pass-through/runner.ts +28 -22
  336. package/templates/hono-server/apps/server/src/infra/work-runner/piscina/runner.ts +11 -34
  337. package/templates/hono-server/apps/server/src/infra/work-runner/{example → piscina}/worker-entry.ts +6 -2
  338. package/templates/hono-server/apps/server/src/infra/work-runner/types.ts +2 -16
  339. package/templates/hono-server/apps/server/src/infra/work-runner/utils/business-error.ts +10 -5
  340. package/templates/hono-server/apps/server/src/infra/work-runner/utils/message.ts +5 -17
  341. package/templates/hono-server/apps/server/src/middlewares/cors.ts +16 -22
  342. package/templates/hono-server/apps/server/src/middlewares/logger.ts +34 -0
  343. package/templates/hono-server/apps/server/src/modules/example/module.ts +8 -0
  344. package/templates/hono-server/apps/server/src/modules/example/queries.ts +8 -0
  345. package/templates/hono-server/apps/server/src/modules/example/routes.ts +74 -68
  346. package/templates/hono-server/apps/server/src/modules/example/service.test.ts +53 -0
  347. package/templates/hono-server/apps/server/src/modules/example/service.ts +54 -0
  348. package/templates/hono-server/apps/server/src/modules/example/types.ts +12 -0
  349. package/templates/hono-server/apps/server/src/modules/example/work-task/tasks.test.ts +9 -35
  350. package/templates/hono-server/apps/server/src/modules/example/work-task/tasks.ts +15 -46
  351. package/templates/hono-server/apps/server/src/shared/errors/defs/index.ts +6 -1
  352. package/templates/hono-server/apps/server/src/shared/errors/handler.ts +1 -1
  353. package/templates/hono-server/apps/server/src/shared/network/openapi/index.ts +1 -1
  354. package/templates/hono-server/apps/server/src/shared/types/app.ts +51 -0
  355. package/templates/hono-server/apps/server/src/shared/types/db.ts +126 -0
  356. package/templates/hono-server/apps/server/src/shared/utils/data-access/check.ts +19 -0
  357. package/templates/hono-server/apps/server/src/shared/utils/data-access/model.ts +47 -0
  358. package/templates/hono-server/apps/server/src/shared/utils/data-access/params.ts +105 -0
  359. package/templates/hono-server/apps/server/src/shared/utils/data-access/query.test.ts +139 -0
  360. package/templates/hono-server/apps/server/src/shared/utils/data-access/query.ts +236 -0
  361. package/templates/hono-server/apps/server/vite.config.ts +2 -2
  362. package/templates/hono-server/apps/server/wrangler.jsonc +1 -1
  363. package/templates/hono-server/docker/README.md +1 -1
  364. package/templates/hono-server/envs/.env.example.sqlite-d1 +1 -0
  365. package/templates/hono-server/libs/db/drizzle-kit/sqlite-d1.config.ts +29 -10
  366. package/templates/hono-server/libs/db/package.json +1 -0
  367. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/columns.ts +1 -1
  368. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/modules/examples/examples.ts +6 -3
  369. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/vo.ts +7 -1
  370. package/templates/hono-server/libs/definition/README.md +81 -0
  371. package/templates/hono-server/libs/definition/package.json +3 -1
  372. package/templates/hono-server/libs/definition/src/constants/index.ts +1 -0
  373. package/templates/hono-server/libs/definition/src/constants/pagination.ts +3 -0
  374. package/templates/hono-server/libs/definition/src/modules/common-contracts.ts +24 -0
  375. package/templates/hono-server/libs/definition/src/modules/example/contracts.ts +34 -0
  376. package/templates/hono-server/libs/definition/src/modules/example/index.ts +1 -16
  377. package/templates/hono-server/libs/definition/src/modules/index.ts +2 -0
  378. package/templates/hono-server/libs/definition/src/modules/vo-generated-types.ts +12 -0
  379. package/templates/hono-server/oyo.config.json +31 -1
  380. package/templates/hono-server/package.json +1 -0
  381. package/templates/hono-server/pnpm-workspace.yaml +9 -7
  382. package/templates/hono-server/turbo.json +10 -0
  383. package/templates/monorepo/.codegraph/.gitignore +5 -0
  384. package/templates/monorepo/_gitignore +1 -0
  385. package/templates/monorepo/oyo.config.json +7 -1
  386. package/templates/monorepo/pnpm-workspace.yaml +4 -4
  387. package/templates/monorepo/turbo.json +10 -0
  388. package/templates/hono-fullstack/apps/server/src/modules/example/contracts.ts +0 -9
  389. package/templates/hono-fullstack/apps/server/src/shared/app/types.ts +0 -44
  390. package/templates/hono-fullstack/apps/stack/frontend/styles.css +0 -23
  391. package/templates/hono-server/apps/server/src/modules/example/contracts.ts +0 -9
  392. package/templates/hono-server/apps/server/src/shared/app/types.ts +0 -44
@@ -0,0 +1,34 @@
1
+ 'use client'
2
+ import { Collapsible } from '@ark-ui/react/collapsible'
3
+ import type { ComponentProps } from 'react'
4
+ import { createSlotRecipeContext } from 'styled-system/jsx'
5
+ import { collapsible } from 'styled-system/recipes'
6
+
7
+ import type { StyledComponent } from 'styled-system/types'
8
+
9
+ const { withProvider, withContext } = createSlotRecipeContext(collapsible)
10
+
11
+ export type RootProps = ComponentProps<typeof Root>
12
+ export const Root: StyledComponent<typeof Collapsible.Root> = withProvider(Collapsible.Root, 'root')
13
+ export const RootProvider: StyledComponent<typeof Collapsible.RootProvider> = withProvider(
14
+ Collapsible.RootProvider,
15
+ 'root',
16
+ )
17
+ export const Content = withContext(Collapsible.Content, 'content')
18
+ export const Indicator = withContext(Collapsible.Indicator, 'indicator')
19
+ export const Trigger = withContext(Collapsible.Trigger, 'trigger')
20
+
21
+ export { CollapsibleContext as Context } from '@ark-ui/react/collapsible'
22
+
23
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
24
+ export type ContentProps = ComponentProps<typeof Content>
25
+ export type IndicatorProps = ComponentProps<typeof Indicator>
26
+ export type TriggerProps = ComponentProps<typeof Trigger>
27
+
28
+ export {
29
+ useCollapsible,
30
+ useCollapsibleContext,
31
+ type UseCollapsibleProps,
32
+ type UseCollapsibleReturn,
33
+ type CollapsibleOpenChangeDetails as OpenChangeDetails,
34
+ } from '@ark-ui/react/collapsible'
@@ -0,0 +1,74 @@
1
+ 'use client'
2
+ import { Pagination, usePaginationContext } from '@ark-ui/react/pagination'
3
+ import { EllipsisIcon } from 'lucide-react'
4
+ import type { ComponentProps } from 'react'
5
+ import { createSlotRecipeContext } from 'styled-system/jsx'
6
+ import { pagination } from 'styled-system/recipes'
7
+ import { IconButton } from '@/components/atoms/buttons/IconButton'
8
+
9
+ import type { StyledComponent } from 'styled-system/types'
10
+
11
+ const { withProvider, withContext } = createSlotRecipeContext(pagination)
12
+
13
+ export type RootProps = ComponentProps<typeof Root>
14
+ export const Root: StyledComponent<typeof Pagination.Root> = withProvider(Pagination.Root, 'root')
15
+ export const RootProvider: StyledComponent<typeof Pagination.RootProvider> = withProvider(
16
+ Pagination.RootProvider,
17
+ 'root',
18
+ )
19
+ export const Item = withContext(Pagination.Item, 'item')
20
+ export const Ellipsis = withContext(Pagination.Ellipsis, 'ellipsis')
21
+ export const PrevTrigger = withContext(Pagination.PrevTrigger, 'prevTrigger')
22
+ export const NextTrigger = withContext(Pagination.NextTrigger, 'nextTrigger')
23
+
24
+ export { PaginationContext as Context } from '@ark-ui/react/pagination'
25
+
26
+ export interface PaginationItemsProps extends React.HTMLAttributes<HTMLElement> {
27
+ render: (page: { type: 'page'; value: number; selected: boolean }) => React.ReactNode
28
+ ellipsis?: React.ReactElement | undefined
29
+ }
30
+
31
+ export const Items = (props: PaginationItemsProps) => {
32
+ const ctx = usePaginationContext()
33
+ const { render, ellipsis, ...rest } = props
34
+
35
+ return ctx.pages.map((page, index) => {
36
+ if (page.type === 'ellipsis') {
37
+ return (
38
+ <Ellipsis asChild key={index} index={index} {...rest}>
39
+ {ellipsis || (
40
+ <IconButton asChild colorPalette="gray">
41
+ <span>
42
+ <EllipsisIcon />
43
+ </span>
44
+ </IconButton>
45
+ )}
46
+ </Ellipsis>
47
+ )
48
+ }
49
+
50
+ return (
51
+ <Item asChild key={index} type="page" value={page.value} {...rest}>
52
+ {render({ ...page, selected: ctx.page === page.value })}
53
+ </Item>
54
+ )
55
+ })
56
+ }
57
+
58
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
59
+ export type ItemProps = ComponentProps<typeof Item>
60
+ export type EllipsisProps = ComponentProps<typeof Ellipsis>
61
+ export type PrevTriggerProps = ComponentProps<typeof PrevTrigger>
62
+ export type NextTriggerProps = ComponentProps<typeof NextTrigger>
63
+ export type ItemsProps = ComponentProps<typeof Items>
64
+
65
+ export {
66
+ usePagination,
67
+ usePaginationContext,
68
+ type UsePaginationProps,
69
+ type UsePaginationReturn,
70
+ type PaginationItemLabelDetails as ItemLabelDetails,
71
+ type PaginationPageChangeDetails as PageChangeDetails,
72
+ type PaginationPageSizeChangeDetails as PageSizeChangeDetails,
73
+ type PaginationPageUrlDetails as PageUrlDetails,
74
+ } from '@ark-ui/react/pagination'
@@ -0,0 +1,91 @@
1
+ 'use client'
2
+ import { ark } from '@ark-ui/react/factory'
3
+ import { Steps } from '@ark-ui/react/steps'
4
+ import { CheckIcon } from 'lucide-react'
5
+ import { forwardRef, type ComponentProps, type ReactNode, type Provider } from 'react'
6
+ import { createSlotRecipeContext, styled } from 'styled-system/jsx'
7
+ import { steps, type StepsVariantProps } from 'styled-system/recipes'
8
+ import type { StyledComponent } from 'styled-system/types'
9
+
10
+ const {
11
+ withProvider,
12
+ withContext,
13
+ PropsProvider: StepsPropsProvider,
14
+ } = createSlotRecipeContext(steps)
15
+
16
+ export const Root: StyledComponent<typeof Steps.Root, StepsVariantProps> = withProvider(
17
+ Steps.Root,
18
+ 'root',
19
+ )
20
+ export const RootProvider: StyledComponent<typeof Steps.RootProvider, StepsVariantProps> =
21
+ withProvider(Steps.RootProvider, 'root')
22
+ export type RootProps = ComponentProps<typeof Root>
23
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
24
+ export const PropsProvider = StepsPropsProvider as Provider<RootProps>
25
+ export const List = withContext(Steps.List, 'list')
26
+ export const Item = withContext(Steps.Item, 'item')
27
+ export const Trigger = withContext(Steps.Trigger, 'trigger')
28
+ export const Content = withContext(Steps.Content, 'content')
29
+ export const CompletedContent = withContext(Steps.CompletedContent, 'content')
30
+ export const Title = withContext(ark.div, 'title')
31
+ export const Description = withContext(ark.div, 'description')
32
+ export const Separator = withContext(Steps.Separator, 'separator')
33
+ export const NextTrigger = withContext(Steps.NextTrigger, 'nextTrigger')
34
+ export const PrevTrigger = withContext(Steps.PrevTrigger, 'prevTrigger')
35
+
36
+ const StyledNumber: StyledComponent<typeof ark.div> = styled(ark.div)
37
+ export interface NumberProps extends ComponentProps<typeof StyledNumber> {}
38
+ export const Number = forwardRef<HTMLDivElement, NumberProps>(function Number(props, ref) {
39
+ return (
40
+ <Steps.ItemContext>
41
+ {({ index }) => (
42
+ <StyledNumber {...props} ref={ref}>
43
+ {index + 1}
44
+ </StyledNumber>
45
+ )}
46
+ </Steps.ItemContext>
47
+ )
48
+ })
49
+
50
+ export interface StatusProps {
51
+ complete: ReactNode
52
+ incomplete: ReactNode
53
+ current?: ReactNode
54
+ }
55
+ export function Status({ complete, incomplete, current }: StatusProps) {
56
+ return (
57
+ <Steps.ItemContext>
58
+ {(item) => {
59
+ if (item.current) return current == null ? incomplete : current
60
+ return item.completed ? complete : incomplete
61
+ }}
62
+ </Steps.ItemContext>
63
+ )
64
+ }
65
+
66
+ export const Indicator = withContext(Steps.Indicator, 'indicator', {
67
+ defaultProps: { children: <Status complete={<CheckIcon />} incomplete={<Number />} /> },
68
+ })
69
+
70
+ export type ListProps = ComponentProps<typeof List>
71
+ export type ItemProps = ComponentProps<typeof Item>
72
+ export type TriggerProps = ComponentProps<typeof Trigger>
73
+ export type ContentProps = ComponentProps<typeof Content>
74
+ export type CompletedContentProps = ComponentProps<typeof CompletedContent>
75
+ export type TitleProps = ComponentProps<typeof Title>
76
+ export type DescriptionProps = ComponentProps<typeof Description>
77
+ export type SeparatorProps = ComponentProps<typeof Separator>
78
+ export type IndicatorProps = ComponentProps<typeof Indicator>
79
+ export type NextTriggerProps = ComponentProps<typeof NextTrigger>
80
+ export type PrevTriggerProps = ComponentProps<typeof PrevTrigger>
81
+
82
+ export { StepsContext as Context, StepsItemContext as ItemContext } from '@ark-ui/react/steps'
83
+ export {
84
+ useSteps,
85
+ useStepsContext,
86
+ useStepsItemContext,
87
+ type UseStepsProps,
88
+ type UseStepsReturn,
89
+ type StepChangeDetails as ChangeDetails,
90
+ type StepInvalidDetails as InvalidDetails,
91
+ } from '@ark-ui/react/steps'
@@ -0,0 +1,37 @@
1
+ 'use client'
2
+ import { Tabs } from '@ark-ui/react/tabs'
3
+ import type { ComponentProps } from 'react'
4
+ import { createSlotRecipeContext } from 'styled-system/jsx'
5
+ import { tabs, type TabsVariantProps } from 'styled-system/recipes'
6
+ import type { StyledComponent } from 'styled-system/types'
7
+
8
+ const { withProvider, withContext } = createSlotRecipeContext(tabs)
9
+
10
+ export type RootProps = ComponentProps<typeof Root>
11
+ export const Root: StyledComponent<typeof Tabs.Root, TabsVariantProps> = withProvider(
12
+ Tabs.Root,
13
+ 'root',
14
+ )
15
+ export const RootProvider: StyledComponent<typeof Tabs.RootProvider, TabsVariantProps> =
16
+ withProvider(Tabs.RootProvider, 'root')
17
+ export const List = withContext(Tabs.List, 'list')
18
+ export const Trigger = withContext(Tabs.Trigger, 'trigger')
19
+ export const Content = withContext(Tabs.Content, 'content')
20
+ export const Indicator = withContext(Tabs.Indicator, 'indicator')
21
+
22
+ export { TabsContext as Context } from '@ark-ui/react/tabs'
23
+
24
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
25
+ export type ListProps = ComponentProps<typeof List>
26
+ export type TriggerProps = ComponentProps<typeof Trigger>
27
+ export type ContentProps = ComponentProps<typeof Content>
28
+ export type IndicatorProps = ComponentProps<typeof Indicator>
29
+
30
+ export {
31
+ useTabs,
32
+ useTabsContext,
33
+ type UseTabsProps,
34
+ type UseTabsReturn,
35
+ type TabsFocusChangeDetails as FocusChangeDetails,
36
+ type TabsValueChangeDetails as ValueChangeDetails,
37
+ } from '@ark-ui/react/tabs'
@@ -0,0 +1,52 @@
1
+ 'use client'
2
+ import { ark } from '@ark-ui/react/factory'
3
+ import { CheckCircleIcon, InfoIcon, TriangleAlertIcon } from 'lucide-react'
4
+ import { type ComponentProps, createContext, forwardRef, useContext } from 'react'
5
+ import { createSlotRecipeContext } from 'styled-system/jsx'
6
+ import { alert, type AlertVariantProps } from 'styled-system/recipes'
7
+ import type { StyledComponent } from 'styled-system/types'
8
+
9
+ const { withProvider, withContext } = createSlotRecipeContext(alert)
10
+
11
+ const StyledRoot: StyledComponent<typeof ark.div, AlertVariantProps> = withProvider(ark.div, 'root')
12
+ export type RootProps = ComponentProps<typeof StyledRoot>
13
+ const StatusContext = createContext<RootProps['status']>('info')
14
+
15
+ export const Root = forwardRef<HTMLDivElement, RootProps>(function Root(props, ref) {
16
+ return (
17
+ <StatusContext.Provider value={props.status || 'info'}>
18
+ <StyledRoot ref={ref} {...props} />
19
+ </StatusContext.Provider>
20
+ )
21
+ })
22
+ export const Title = withContext(ark.h3, 'title')
23
+ export const Description = withContext(ark.div, 'description')
24
+ export const Content = withContext(ark.div, 'content')
25
+
26
+ export type IndicatorProps = ComponentProps<typeof StyledIndicator>
27
+ const StyledIndicator: StyledComponent<typeof ark.span> = withContext(ark.span, 'indicator')
28
+
29
+ const iconMap = {
30
+ info: InfoIcon,
31
+ warning: TriangleAlertIcon,
32
+ success: CheckCircleIcon,
33
+ error: TriangleAlertIcon,
34
+ neutral: InfoIcon,
35
+ }
36
+
37
+ export const Indicator = forwardRef<HTMLSpanElement, IndicatorProps>(
38
+ function Indicator(props, ref) {
39
+ const { children, asChild, ...rest } = props
40
+ const status = useContext(StatusContext)
41
+ const StatusIcon = typeof status === 'string' ? iconMap[status] : undefined
42
+ return (
43
+ <StyledIndicator ref={ref} asChild={asChild} {...rest}>
44
+ {asChild || children !== undefined ? children : StatusIcon && <StatusIcon />}
45
+ </StyledIndicator>
46
+ )
47
+ },
48
+ )
49
+
50
+ export type TitleProps = ComponentProps<typeof Title>
51
+ export type DescriptionProps = ComponentProps<typeof Description>
52
+ export type ContentProps = ComponentProps<typeof Content>
@@ -0,0 +1,41 @@
1
+ 'use client'
2
+ import { Progress } from '@ark-ui/react/progress'
3
+ import type { ComponentProps } from 'react'
4
+ import { createSlotRecipeContext } from 'styled-system/jsx'
5
+ import { progress, type ProgressVariantProps } from 'styled-system/recipes'
6
+ import type { StyledComponent } from 'styled-system/types'
7
+
8
+ const { withProvider, withContext } = createSlotRecipeContext(progress)
9
+
10
+ export type RootProps = ComponentProps<typeof Root>
11
+ export const Root: StyledComponent<typeof Progress.Root, ProgressVariantProps> = withProvider(
12
+ Progress.Root,
13
+ 'root',
14
+ )
15
+ export const RootProvider: StyledComponent<typeof Progress.RootProvider, ProgressVariantProps> =
16
+ withProvider(Progress.RootProvider, 'root')
17
+ export const Label = withContext(Progress.Label, 'label')
18
+ export const Range = withContext(Progress.Range, 'range')
19
+ export const Track = withContext(Progress.Track, 'track')
20
+ export const ValueText = withContext(Progress.ValueText, 'valueText')
21
+ export const View = withContext(Progress.View, 'view')
22
+
23
+ export {
24
+ ProgressContext as Context,
25
+ useProgress,
26
+ type UseProgressProps,
27
+ type UseProgressReturn,
28
+ } from '@ark-ui/react/progress'
29
+
30
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
31
+ export type LabelProps = ComponentProps<typeof Label>
32
+ export type RangeProps = ComponentProps<typeof Range>
33
+ export type TrackProps = ComponentProps<typeof Track>
34
+ export type ValueTextProps = ComponentProps<typeof ValueText>
35
+ export type ViewProps = ComponentProps<typeof View>
36
+
37
+ export {
38
+ useProgressContext,
39
+ type ProgressValueChangeDetails as ValueChangeDetails,
40
+ type ProgressValueTranslationDetails as ValueTranslationDetails,
41
+ } from '@ark-ui/react/progress'
@@ -0,0 +1,40 @@
1
+ 'use client'
2
+ import { Progress } from '@ark-ui/react/progress'
3
+ import type { ComponentProps } from 'react'
4
+ import { createSlotRecipeContext } from 'styled-system/jsx'
5
+ import { progressCircle, type ProgressCircleVariantProps } from 'styled-system/recipes'
6
+ import type { StyledComponent } from 'styled-system/types'
7
+
8
+ const { withProvider, withContext } = createSlotRecipeContext(progressCircle)
9
+
10
+ export const Root: StyledComponent<typeof Progress.Root, ProgressCircleVariantProps> = withProvider(
11
+ Progress.Root,
12
+ 'root',
13
+ )
14
+ export const RootProvider: StyledComponent<
15
+ typeof Progress.RootProvider,
16
+ ProgressCircleVariantProps
17
+ > = withProvider(Progress.RootProvider, 'root')
18
+ export const Circle = withContext(Progress.Circle, 'circle')
19
+ export const Track = withContext(Progress.CircleTrack, 'circleTrack')
20
+ export const Range = withContext(Progress.CircleRange, 'circleRange')
21
+ export const Label = withContext(Progress.Label, 'label')
22
+ export const ValueText = withContext(Progress.ValueText, 'valueText')
23
+
24
+ export type RootProps = ComponentProps<typeof Root>
25
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
26
+ export type CircleProps = ComponentProps<typeof Circle>
27
+ export type TrackProps = ComponentProps<typeof Track>
28
+ export type RangeProps = ComponentProps<typeof Range>
29
+ export type LabelProps = ComponentProps<typeof Label>
30
+ export type ValueTextProps = ComponentProps<typeof ValueText>
31
+
32
+ export {
33
+ ProgressContext as Context,
34
+ useProgress,
35
+ useProgressContext,
36
+ type UseProgressProps,
37
+ type UseProgressReturn,
38
+ type ProgressValueChangeDetails as ValueChangeDetails,
39
+ type ProgressValueTranslationDetails as ValueTranslationDetails,
40
+ } from '@ark-ui/react/progress'
@@ -0,0 +1,37 @@
1
+ import { ark } from '@ark-ui/react/factory'
2
+ import { type ComponentProps, forwardRef } from 'react'
3
+ import { PandaStack as Stack, type StackProps, styled } from 'styled-system/jsx'
4
+ import { skeleton } from 'styled-system/recipes'
5
+
6
+ export type SkeletonProps = ComponentProps<typeof Skeleton>
7
+ export const Skeleton = styled(ark.div, skeleton)
8
+
9
+ export type SkeletonCircleProps = ComponentProps<typeof SkeletonCircle>
10
+ export const SkeletonCircle = styled(ark.div, skeleton, { defaultProps: { circle: true } })
11
+
12
+ export interface SkeletonTextProps extends SkeletonProps {
13
+ /**
14
+ * Number of lines to display
15
+ * @default 3
16
+ */
17
+ noOfLines?: number | undefined
18
+ rootProps?: StackProps | undefined
19
+ }
20
+
21
+ export const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(
22
+ function SkeletonText(props, ref) {
23
+ const { noOfLines = 3, gap, rootProps, ...skeletonProps } = props
24
+ return (
25
+ <Stack ref={ref} gap={gap} width="full" {...rootProps}>
26
+ {[...Array(noOfLines).keys()].map((index) => (
27
+ <Skeleton
28
+ key={index}
29
+ height="4"
30
+ _last={{ maxW: noOfLines === 1 ? '100%' : '80%' }}
31
+ {...skeletonProps}
32
+ />
33
+ ))}
34
+ </Stack>
35
+ )
36
+ },
37
+ )
@@ -0,0 +1,7 @@
1
+ import { ark } from '@ark-ui/react/factory'
2
+ import type { ComponentProps } from 'react'
3
+ import { styled } from 'styled-system/jsx'
4
+ import { spinner } from 'styled-system/recipes'
5
+
6
+ export type SpinnerProps = ComponentProps<typeof Spinner>
7
+ export const Spinner = styled(ark.span, spinner)
@@ -0,0 +1,99 @@
1
+ 'use client'
2
+ import { Portal } from '@ark-ui/react/portal'
3
+ import { Toaster as ArkToaster, Toast, useToastContext } from '@ark-ui/react/toast'
4
+ import { CheckCircleIcon, CircleAlertIcon, CircleXIcon } from 'lucide-react'
5
+ import { forwardRef, type ComponentProps } from 'react'
6
+ import { createSlotRecipeContext, PandaStack as Stack, styled } from 'styled-system/jsx'
7
+ import { toast, type ToastVariantProps } from 'styled-system/recipes'
8
+ import type { StyledComponent } from 'styled-system/types'
9
+ import { CloseButton } from '@/components/atoms/buttons/CloseButton'
10
+ import { Icon, type IconProps } from '@/components/atoms/data-display/Icon'
11
+ import { Spinner } from './Spinner'
12
+
13
+ const { withProvider, withContext } = createSlotRecipeContext(toast)
14
+
15
+ export const Root: StyledComponent<typeof Toast.Root, ToastVariantProps> = withProvider(
16
+ Toast.Root,
17
+ 'root',
18
+ )
19
+ export const Title = withContext(Toast.Title, 'title')
20
+ export const Description = withContext(Toast.Description, 'description')
21
+ export const ActionTrigger = withContext(Toast.ActionTrigger, 'actionTrigger')
22
+ export const CloseTrigger = withContext(Toast.CloseTrigger, 'closeTrigger')
23
+ const StyledToaster = styled(ArkToaster)
24
+
25
+ const iconMap: Record<string, React.ElementType> = {
26
+ warning: CircleAlertIcon,
27
+ success: CheckCircleIcon,
28
+ error: CircleXIcon,
29
+ }
30
+
31
+ export type IndicatorProps = IconProps
32
+ export const Indicator = forwardRef<SVGSVGElement, IndicatorProps>((props, ref) => {
33
+ const toast = useToastContext()
34
+
35
+ const StatusIcon = iconMap[toast.type]
36
+ if (!StatusIcon) return null
37
+
38
+ return (
39
+ <Icon ref={ref} data-type={toast.type} {...props}>
40
+ <StatusIcon />
41
+ </Icon>
42
+ )
43
+ })
44
+
45
+ export {
46
+ createToaster,
47
+ type CreateToasterProps,
48
+ type CreateToasterReturn,
49
+ } from '@ark-ui/react/toast'
50
+
51
+ export type ToasterProps = Omit<ComponentProps<typeof StyledToaster>, 'children'> & {
52
+ children?: ComponentProps<typeof StyledToaster>['children']
53
+ }
54
+
55
+ export const Toaster = forwardRef<HTMLDivElement, ToasterProps>(function Toaster(
56
+ { children, ...props },
57
+ ref,
58
+ ) {
59
+ return (
60
+ <Portal>
61
+ <StyledToaster ref={ref} zIndex="toast" insetInline={{ mdDown: '4' }} {...props}>
62
+ {children ||
63
+ ((toast) => (
64
+ <Root>
65
+ {toast.type === 'loading' ? (
66
+ <Spinner color="colorPalette.fg.default" />
67
+ ) : (
68
+ <Indicator />
69
+ )}
70
+
71
+ <Stack gap="3" alignItems="start">
72
+ <Stack gap="1">
73
+ {toast.title && <Title>{toast.title}</Title>}
74
+ {toast.description && <Description>{toast.description}</Description>}
75
+ </Stack>
76
+ {toast.action && <ActionTrigger>{toast.action.label}</ActionTrigger>}
77
+ </Stack>
78
+ {toast.closable && (
79
+ <CloseTrigger asChild>
80
+ <CloseButton size="sm" aria-label="关闭通知" />
81
+ </CloseTrigger>
82
+ )}
83
+ </Root>
84
+ ))}
85
+ </StyledToaster>
86
+ </Portal>
87
+ )
88
+ })
89
+
90
+ export type RootProps = ComponentProps<typeof Root>
91
+ export type TitleProps = ComponentProps<typeof Title>
92
+ export type DescriptionProps = ComponentProps<typeof Description>
93
+ export type ActionTriggerProps = ComponentProps<typeof ActionTrigger>
94
+ export type CloseTriggerProps = ComponentProps<typeof CloseTrigger>
95
+
96
+ export {
97
+ useToastContext,
98
+ type ToastStatusChangeDetails as StatusChangeDetails,
99
+ } from '@ark-ui/react/toast'
@@ -0,0 +1,95 @@
1
+ 'use client'
2
+ import { Checkbox, useCheckboxContext } from '@ark-ui/react/checkbox'
3
+ import { ark } from '@ark-ui/react/factory'
4
+ import { type ComponentProps, forwardRef, type ReactElement } from 'react'
5
+ import { createSlotRecipeContext } from 'styled-system/jsx'
6
+ import { checkbox, type CheckboxVariantProps } from 'styled-system/recipes'
7
+ import type { StyledComponent } from 'styled-system/types'
8
+
9
+ const { withProvider, withContext } = createSlotRecipeContext(checkbox)
10
+
11
+ export type RootProps = ComponentProps<typeof Root>
12
+ export type HiddenInputProps = ComponentProps<typeof HiddenInput>
13
+
14
+ export const Root: StyledComponent<typeof Checkbox.Root, CheckboxVariantProps> = withProvider(
15
+ Checkbox.Root,
16
+ 'root',
17
+ )
18
+ export const RootProvider: StyledComponent<typeof Checkbox.RootProvider, CheckboxVariantProps> =
19
+ withProvider(Checkbox.RootProvider, 'root')
20
+ export const Group: StyledComponent<typeof Checkbox.Group, CheckboxVariantProps> = withProvider(
21
+ Checkbox.Group,
22
+ 'group',
23
+ )
24
+ export const Label = withContext(Checkbox.Label, 'label')
25
+ export const HiddenInput = Checkbox.HiddenInput
26
+
27
+ export {
28
+ CheckboxContext as Context,
29
+ type CheckboxCheckedState as CheckedState,
30
+ CheckboxGroupProvider as GroupProvider,
31
+ } from '@ark-ui/react/checkbox'
32
+
33
+ const StyledIndicator: StyledComponent<typeof ark.svg> = withContext(ark.svg, 'indicator')
34
+
35
+ export interface IndicatorProps extends ComponentProps<typeof StyledIndicator> {
36
+ checked?: ReactElement | undefined
37
+ indeterminate?: ReactElement | undefined
38
+ }
39
+
40
+ export const Indicator = forwardRef<SVGSVGElement, IndicatorProps>(function Indicator(props, ref) {
41
+ const { checked, indeterminate, children, asChild, ...rest } = props
42
+ const api = useCheckboxContext()
43
+ const customIcon = api.indeterminate ? indeterminate : api.checked ? checked : undefined
44
+
45
+ return (
46
+ <Checkbox.Indicator indeterminate={api.indeterminate} asChild>
47
+ <StyledIndicator
48
+ ref={ref}
49
+ viewBox="0 0 24 24"
50
+ fill="none"
51
+ stroke="currentColor"
52
+ strokeWidth="3px"
53
+ strokeLinecap="round"
54
+ strokeLinejoin="round"
55
+ {...rest}
56
+ asChild={Boolean(customIcon) || asChild}>
57
+ {customIcon !== undefined ? (
58
+ customIcon
59
+ ) : children !== undefined || asChild ? (
60
+ children
61
+ ) : (
62
+ <>
63
+ <title>Checkmark</title>
64
+ {api.indeterminate ? (
65
+ <path d="M5 12h14" />
66
+ ) : api.checked ? (
67
+ <path d="M20 6 9 17l-5-5" />
68
+ ) : null}
69
+ </>
70
+ )}
71
+ </StyledIndicator>
72
+ </Checkbox.Indicator>
73
+ )
74
+ })
75
+
76
+ export const Control = withContext(Checkbox.Control, 'control', {
77
+ defaultProps: { children: <Indicator /> },
78
+ })
79
+ export type ControlProps = ComponentProps<typeof Control>
80
+
81
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
82
+ export type GroupProps = ComponentProps<typeof Group>
83
+ export type LabelProps = ComponentProps<typeof Label>
84
+
85
+ export {
86
+ useCheckbox,
87
+ useCheckboxContext,
88
+ useCheckboxGroup,
89
+ useCheckboxGroupContext,
90
+ type UseCheckboxProps,
91
+ type UseCheckboxReturn,
92
+ type CheckboxCheckedChangeDetails as CheckedChangeDetails,
93
+ } from '@ark-ui/react/checkbox'
94
+
95
+ export { type UseCheckboxGroupProps, type UseCheckboxGroupReturn } from '@ark-ui/react/checkbox'