@oyolincc/create 0.4.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 (391) 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 +3 -3
  53. package/templates/hono-fullstack/apps/stack/frontend/routes/__root.tsx +1 -1
  54. package/templates/hono-fullstack/apps/stack/frontend/routes/index.tsx +16 -4
  55. package/templates/hono-fullstack/apps/stack/package.json +9 -4
  56. package/templates/hono-fullstack/apps/stack/panda.config.ts +31 -0
  57. package/templates/hono-fullstack/apps/stack/tsconfig.json +1 -0
  58. package/templates/hono-fullstack/apps/stack/turbo.json +20 -0
  59. package/templates/hono-fullstack/apps/stack/vite.config.ts +48 -12
  60. package/templates/hono-fullstack/apps/stack/wrangler.jsonc +1 -1
  61. package/templates/hono-fullstack/envs/.env.example.sqlite-d1 +1 -0
  62. package/templates/hono-fullstack/libs/db/drizzle-kit/sqlite-d1.config.ts +29 -10
  63. package/templates/hono-fullstack/libs/db/package.json +1 -0
  64. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/columns.ts +1 -1
  65. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/modules/examples/examples.ts +6 -3
  66. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/vo.ts +7 -1
  67. package/templates/hono-fullstack/libs/definition/README.md +81 -0
  68. package/templates/hono-fullstack/libs/definition/package.json +3 -1
  69. package/templates/hono-fullstack/libs/definition/src/constants/index.ts +1 -0
  70. package/templates/hono-fullstack/libs/definition/src/constants/pagination.ts +3 -0
  71. package/templates/hono-fullstack/libs/definition/src/modules/common-contracts.ts +24 -0
  72. package/templates/hono-fullstack/libs/definition/src/modules/example/contracts.ts +34 -0
  73. package/templates/hono-fullstack/libs/definition/src/modules/example/index.ts +1 -16
  74. package/templates/hono-fullstack/libs/definition/src/modules/index.ts +2 -0
  75. package/templates/hono-fullstack/libs/definition/src/modules/vo-generated-types.ts +12 -0
  76. package/templates/hono-fullstack/libs/ui/.storybook/main.ts +32 -0
  77. package/templates/hono-fullstack/libs/ui/.storybook/panda.config.ts +22 -0
  78. package/templates/hono-fullstack/libs/ui/.storybook/preview.tsx +79 -0
  79. package/templates/hono-fullstack/libs/ui/.storybook/styles.css +1 -0
  80. package/templates/hono-fullstack/libs/ui/.storybook/vite.config.ts +37 -0
  81. package/templates/hono-fullstack/libs/ui/components.json +15 -0
  82. package/templates/hono-fullstack/libs/ui/package.json +114 -0
  83. package/templates/hono-fullstack/libs/ui/panda.config.ts +41 -0
  84. package/templates/hono-fullstack/libs/ui/src/Tooltip.tsx +47 -0
  85. package/templates/hono-fullstack/libs/ui/src/components/atoms/buttons/Button.tsx +80 -0
  86. package/templates/hono-fullstack/libs/ui/src/components/atoms/buttons/CloseButton.tsx +15 -0
  87. package/templates/hono-fullstack/libs/ui/src/components/atoms/buttons/IconButton.tsx +10 -0
  88. package/templates/hono-fullstack/libs/ui/src/components/atoms/collections/Combobox.tsx +91 -0
  89. package/templates/hono-fullstack/libs/ui/src/components/atoms/collections/Select.tsx +88 -0
  90. package/templates/hono-fullstack/libs/ui/src/components/atoms/collections/TreeView.tsx +142 -0
  91. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Avatar.tsx +64 -0
  92. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Badge.tsx +7 -0
  93. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Card.tsx +23 -0
  94. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Clipboard.tsx +77 -0
  95. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Icon.tsx +9 -0
  96. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Table.tsx +51 -0
  97. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Tag.tsx +23 -0
  98. package/templates/hono-fullstack/libs/ui/src/components/atoms/data-display/Timeline.tsx +33 -0
  99. package/templates/hono-fullstack/libs/ui/src/components/atoms/date-and-time/DatePicker.tsx +255 -0
  100. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Accordion.tsx +48 -0
  101. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Breadcrumb.tsx +50 -0
  102. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Collapsible.tsx +34 -0
  103. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Pagination.tsx +74 -0
  104. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Steps.tsx +91 -0
  105. package/templates/hono-fullstack/libs/ui/src/components/atoms/disclosure/Tabs.tsx +37 -0
  106. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Alert.tsx +52 -0
  107. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Progress.tsx +41 -0
  108. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/ProgressCircle.tsx +40 -0
  109. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Skeleton.tsx +37 -0
  110. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Spinner.tsx +7 -0
  111. package/templates/hono-fullstack/libs/ui/src/components/atoms/feedback/Toast.tsx +99 -0
  112. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Checkbox.tsx +95 -0
  113. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/ColorPicker.tsx +148 -0
  114. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Editable.tsx +44 -0
  115. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Field.tsx +36 -0
  116. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Fieldset.tsx +34 -0
  117. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/FileUpload.tsx +143 -0
  118. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Input.tsx +7 -0
  119. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/InputAddon.tsx +7 -0
  120. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/InputGroup.tsx +61 -0
  121. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/NativeSelect.tsx +81 -0
  122. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/NumberInput.tsx +63 -0
  123. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/PasswordInput.tsx +76 -0
  124. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/PinInput.tsx +36 -0
  125. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/RadioCard.tsx +96 -0
  126. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/RadioGroup.tsx +61 -0
  127. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/RatingGroup.tsx +106 -0
  128. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/SegmentGroup.tsx +68 -0
  129. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Slider.tsx +87 -0
  130. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Switch.tsx +74 -0
  131. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/TagsInput.tsx +77 -0
  132. package/templates/hono-fullstack/libs/ui/src/components/atoms/forms/Textarea.tsx +7 -0
  133. package/templates/hono-fullstack/libs/ui/src/components/atoms/index.ts +98 -0
  134. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/AbsoluteCenter.tsx +7 -0
  135. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/Loader.tsx +69 -0
  136. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/Span.tsx +5 -0
  137. package/templates/hono-fullstack/libs/ui/src/components/atoms/internal/create-layout.ts +18 -0
  138. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Float.tsx +7 -0
  139. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Grid.tsx +17 -0
  140. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Group.tsx +7 -0
  141. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/ScrollArea.tsx +46 -0
  142. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Separator.tsx +26 -0
  143. package/templates/hono-fullstack/libs/ui/src/components/atoms/layout/Stack.tsx +54 -0
  144. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Dialog.tsx +69 -0
  145. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Drawer.tsx +49 -0
  146. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/HoverCard.tsx +37 -0
  147. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Menu.tsx +74 -0
  148. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/OverlayManager.test.ts +124 -0
  149. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/OverlayManager.tsx +189 -0
  150. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Popover.tsx +57 -0
  151. package/templates/hono-fullstack/libs/ui/src/components/atoms/overlays/Tooltip.tsx +37 -0
  152. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/Heading.tsx +6 -0
  153. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/Link.tsx +7 -0
  154. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/LinkOverlay.tsx +21 -0
  155. package/templates/hono-fullstack/libs/ui/src/components/atoms/typography/Text.tsx +6 -0
  156. package/templates/hono-fullstack/libs/ui/src/components/atoms/utilities/VisuallyHidden.tsx +13 -0
  157. package/templates/hono-fullstack/libs/ui/src/hooks.ts +242 -0
  158. package/templates/hono-fullstack/libs/ui/src/index.ts +19 -0
  159. package/templates/hono-fullstack/libs/ui/src/theme/animation-styles.ts +50 -0
  160. package/templates/hono-fullstack/libs/ui/src/theme/breakpoints.ts +7 -0
  161. package/templates/hono-fullstack/libs/ui/src/theme/conditions.ts +12 -0
  162. package/templates/hono-fullstack/libs/ui/src/theme/containers.ts +16 -0
  163. package/templates/hono-fullstack/libs/ui/src/theme/global-css.ts +12 -0
  164. package/templates/hono-fullstack/libs/ui/src/theme/keyframes.ts +157 -0
  165. package/templates/hono-fullstack/libs/ui/src/theme/layer-styles.ts +11 -0
  166. package/templates/hono-fullstack/libs/ui/src/theme/patterns/grid.ts +51 -0
  167. package/templates/hono-fullstack/libs/ui/src/theme/patterns/index.ts +60 -0
  168. package/templates/hono-fullstack/libs/ui/src/theme/patterns/stack.ts +46 -0
  169. package/templates/hono-fullstack/libs/ui/src/theme/recipes/absolute-center.ts +38 -0
  170. package/templates/hono-fullstack/libs/ui/src/theme/recipes/accordion.ts +68 -0
  171. package/templates/hono-fullstack/libs/ui/src/theme/recipes/alert.ts +83 -0
  172. package/templates/hono-fullstack/libs/ui/src/theme/recipes/avatar.ts +155 -0
  173. package/templates/hono-fullstack/libs/ui/src/theme/recipes/badge.ts +67 -0
  174. package/templates/hono-fullstack/libs/ui/src/theme/recipes/breadcrumb.ts +69 -0
  175. package/templates/hono-fullstack/libs/ui/src/theme/recipes/button.ts +149 -0
  176. package/templates/hono-fullstack/libs/ui/src/theme/recipes/card.ts +36 -0
  177. package/templates/hono-fullstack/libs/ui/src/theme/recipes/checkbox.ts +120 -0
  178. package/templates/hono-fullstack/libs/ui/src/theme/recipes/clipboard.ts +22 -0
  179. package/templates/hono-fullstack/libs/ui/src/theme/recipes/collapsible.ts +26 -0
  180. package/templates/hono-fullstack/libs/ui/src/theme/recipes/color-picker.ts +299 -0
  181. package/templates/hono-fullstack/libs/ui/src/theme/recipes/combobox.ts +141 -0
  182. package/templates/hono-fullstack/libs/ui/src/theme/recipes/date-picker.ts +302 -0
  183. package/templates/hono-fullstack/libs/ui/src/theme/recipes/dialog.ts +191 -0
  184. package/templates/hono-fullstack/libs/ui/src/theme/recipes/drawer.ts +170 -0
  185. package/templates/hono-fullstack/libs/ui/src/theme/recipes/editable.ts +64 -0
  186. package/templates/hono-fullstack/libs/ui/src/theme/recipes/field.ts +41 -0
  187. package/templates/hono-fullstack/libs/ui/src/theme/recipes/fieldset.ts +47 -0
  188. package/templates/hono-fullstack/libs/ui/src/theme/recipes/file-upload.ts +86 -0
  189. package/templates/hono-fullstack/libs/ui/src/theme/recipes/group.ts +78 -0
  190. package/templates/hono-fullstack/libs/ui/src/theme/recipes/heading.ts +24 -0
  191. package/templates/hono-fullstack/libs/ui/src/theme/recipes/hover-card.ts +47 -0
  192. package/templates/hono-fullstack/libs/ui/src/theme/recipes/icon.ts +25 -0
  193. package/templates/hono-fullstack/libs/ui/src/theme/recipes/index.ts +120 -0
  194. package/templates/hono-fullstack/libs/ui/src/theme/recipes/input-addon.ts +51 -0
  195. package/templates/hono-fullstack/libs/ui/src/theme/recipes/input-group.ts +77 -0
  196. package/templates/hono-fullstack/libs/ui/src/theme/recipes/input.ts +99 -0
  197. package/templates/hono-fullstack/libs/ui/src/theme/recipes/link.ts +36 -0
  198. package/templates/hono-fullstack/libs/ui/src/theme/recipes/menu.ts +114 -0
  199. package/templates/hono-fullstack/libs/ui/src/theme/recipes/native-select.ts +92 -0
  200. package/templates/hono-fullstack/libs/ui/src/theme/recipes/number-input.ts +91 -0
  201. package/templates/hono-fullstack/libs/ui/src/theme/recipes/pagination.ts +9 -0
  202. package/templates/hono-fullstack/libs/ui/src/theme/recipes/pin-input.ts +33 -0
  203. package/templates/hono-fullstack/libs/ui/src/theme/recipes/popover.ts +78 -0
  204. package/templates/hono-fullstack/libs/ui/src/theme/recipes/progress-circle.ts +50 -0
  205. package/templates/hono-fullstack/libs/ui/src/theme/recipes/progress.ts +112 -0
  206. package/templates/hono-fullstack/libs/ui/src/theme/recipes/radio-card.ts +223 -0
  207. package/templates/hono-fullstack/libs/ui/src/theme/recipes/radio-group.ts +78 -0
  208. package/templates/hono-fullstack/libs/ui/src/theme/recipes/rating-group.ts +98 -0
  209. package/templates/hono-fullstack/libs/ui/src/theme/recipes/scroll-area.ts +119 -0
  210. package/templates/hono-fullstack/libs/ui/src/theme/recipes/segment-group.ts +162 -0
  211. package/templates/hono-fullstack/libs/ui/src/theme/recipes/select.ts +157 -0
  212. package/templates/hono-fullstack/libs/ui/src/theme/recipes/separator.ts +25 -0
  213. package/templates/hono-fullstack/libs/ui/src/theme/recipes/skeleton.ts +65 -0
  214. package/templates/hono-fullstack/libs/ui/src/theme/recipes/slider.ts +164 -0
  215. package/templates/hono-fullstack/libs/ui/src/theme/recipes/spinner.ts +34 -0
  216. package/templates/hono-fullstack/libs/ui/src/theme/recipes/steps.ts +162 -0
  217. package/templates/hono-fullstack/libs/ui/src/theme/recipes/switch.ts +150 -0
  218. package/templates/hono-fullstack/libs/ui/src/theme/recipes/table.ts +150 -0
  219. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tabs.ts +128 -0
  220. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tag.ts +114 -0
  221. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tags-input.ts +201 -0
  222. package/templates/hono-fullstack/libs/ui/src/theme/recipes/text.ts +7 -0
  223. package/templates/hono-fullstack/libs/ui/src/theme/recipes/textarea.ts +90 -0
  224. package/templates/hono-fullstack/libs/ui/src/theme/recipes/timeline.ts +137 -0
  225. package/templates/hono-fullstack/libs/ui/src/theme/recipes/toast.ts +52 -0
  226. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tooltip.ts +44 -0
  227. package/templates/hono-fullstack/libs/ui/src/theme/recipes/tree-view.ts +200 -0
  228. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/amber.ts +91 -0
  229. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/gray.ts +103 -0
  230. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/green.ts +88 -0
  231. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/index.ts +14 -0
  232. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/lime.ts +91 -0
  233. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/colors/red.ts +88 -0
  234. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/index.ts +8 -0
  235. package/templates/hono-fullstack/libs/ui/src/theme/semanticTokens/shadows.ts +46 -0
  236. package/templates/hono-fullstack/libs/ui/src/theme/text-styles.ts +82 -0
  237. package/templates/hono-fullstack/libs/ui/src/theme/tokens/animations.ts +8 -0
  238. package/templates/hono-fullstack/libs/ui/src/theme/tokens/aspect-ratio.ts +6 -0
  239. package/templates/hono-fullstack/libs/ui/src/theme/tokens/borders.ts +5 -0
  240. package/templates/hono-fullstack/libs/ui/src/theme/tokens/colors.ts +35 -0
  241. package/templates/hono-fullstack/libs/ui/src/theme/tokens/durations.ts +11 -0
  242. package/templates/hono-fullstack/libs/ui/src/theme/tokens/easings.ts +9 -0
  243. package/templates/hono-fullstack/libs/ui/src/theme/tokens/index.ts +42 -0
  244. package/templates/hono-fullstack/libs/ui/src/theme/tokens/radii.ts +13 -0
  245. package/templates/hono-fullstack/libs/ui/src/theme/tokens/sizes.ts +27 -0
  246. package/templates/hono-fullstack/libs/ui/src/theme/tokens/spacing.ts +41 -0
  247. package/templates/hono-fullstack/libs/ui/src/theme/tokens/typography.ts +86 -0
  248. package/templates/hono-fullstack/libs/ui/src/theme/tokens/z-index.ts +43 -0
  249. package/templates/hono-fullstack/libs/ui/stories/README.md +107 -0
  250. package/templates/hono-fullstack/libs/ui/stories/actions/Button.stories.tsx +260 -0
  251. package/templates/hono-fullstack/libs/ui/stories/actions/Clipboard.stories.tsx +87 -0
  252. package/templates/hono-fullstack/libs/ui/stories/actions/IconButton.stories.tsx +33 -0
  253. package/templates/hono-fullstack/libs/ui/stories/collections/Combobox.stories.tsx +334 -0
  254. package/templates/hono-fullstack/libs/ui/stories/collections/Select.stories.tsx +342 -0
  255. package/templates/hono-fullstack/libs/ui/stories/collections/TreeView.stories.tsx +252 -0
  256. package/templates/hono-fullstack/libs/ui/stories/color/ColorPicker.stories.tsx +217 -0
  257. package/templates/hono-fullstack/libs/ui/stories/date/DatePicker.stories.tsx +302 -0
  258. package/templates/hono-fullstack/libs/ui/stories/disclosure/Accordion.stories.tsx +105 -0
  259. package/templates/hono-fullstack/libs/ui/stories/disclosure/Collapsible.stories.tsx +55 -0
  260. package/templates/hono-fullstack/libs/ui/stories/disclosure/Steps.stories.tsx +208 -0
  261. package/templates/hono-fullstack/libs/ui/stories/disclosure/Tabs.stories.tsx +176 -0
  262. package/templates/hono-fullstack/libs/ui/stories/display/Avatar.stories.tsx +108 -0
  263. package/templates/hono-fullstack/libs/ui/stories/display/Badge.stories.tsx +90 -0
  264. package/templates/hono-fullstack/libs/ui/stories/display/Card.stories.tsx +121 -0
  265. package/templates/hono-fullstack/libs/ui/stories/display/Heading.stories.tsx +62 -0
  266. package/templates/hono-fullstack/libs/ui/stories/display/Icon.stories.tsx +51 -0
  267. package/templates/hono-fullstack/libs/ui/stories/display/Table.stories.tsx +222 -0
  268. package/templates/hono-fullstack/libs/ui/stories/display/Tag.stories.tsx +168 -0
  269. package/templates/hono-fullstack/libs/ui/stories/display/Text.stories.tsx +32 -0
  270. package/templates/hono-fullstack/libs/ui/stories/display/Timeline.stories.tsx +241 -0
  271. package/templates/hono-fullstack/libs/ui/stories/feedback/Alert.stories.tsx +122 -0
  272. package/templates/hono-fullstack/libs/ui/stories/feedback/Progress.stories.tsx +163 -0
  273. package/templates/hono-fullstack/libs/ui/stories/feedback/ProgressCircle.stories.tsx +176 -0
  274. package/templates/hono-fullstack/libs/ui/stories/feedback/Skeleton.stories.tsx +75 -0
  275. package/templates/hono-fullstack/libs/ui/stories/feedback/Spinner.stories.tsx +49 -0
  276. package/templates/hono-fullstack/libs/ui/stories/feedback/Toast.stories.tsx +145 -0
  277. package/templates/hono-fullstack/libs/ui/stories/forms/Checkbox.stories.tsx +281 -0
  278. package/templates/hono-fullstack/libs/ui/stories/forms/Editable.stories.tsx +94 -0
  279. package/templates/hono-fullstack/libs/ui/stories/forms/Field.stories.tsx +72 -0
  280. package/templates/hono-fullstack/libs/ui/stories/forms/Fieldset.stories.tsx +109 -0
  281. package/templates/hono-fullstack/libs/ui/stories/forms/FileUpload.stories.tsx +115 -0
  282. package/templates/hono-fullstack/libs/ui/stories/forms/Form.stories.tsx +120 -0
  283. package/templates/hono-fullstack/libs/ui/stories/forms/Input.stories.tsx +155 -0
  284. package/templates/hono-fullstack/libs/ui/stories/forms/InputGroup.stories.tsx +79 -0
  285. package/templates/hono-fullstack/libs/ui/stories/forms/NativeSelect.stories.tsx +160 -0
  286. package/templates/hono-fullstack/libs/ui/stories/forms/NumberInput.stories.tsx +149 -0
  287. package/templates/hono-fullstack/libs/ui/stories/forms/PasswordInput.stories.tsx +141 -0
  288. package/templates/hono-fullstack/libs/ui/stories/forms/PinInput.stories.tsx +155 -0
  289. package/templates/hono-fullstack/libs/ui/stories/forms/RadioCard.stories.tsx +265 -0
  290. package/templates/hono-fullstack/libs/ui/stories/forms/RadioGroup.stories.tsx +109 -0
  291. package/templates/hono-fullstack/libs/ui/stories/forms/RatingGroup.stories.tsx +123 -0
  292. package/templates/hono-fullstack/libs/ui/stories/forms/SegmentGroup.stories.tsx +130 -0
  293. package/templates/hono-fullstack/libs/ui/stories/forms/Slider.stories.tsx +190 -0
  294. package/templates/hono-fullstack/libs/ui/stories/forms/Switch.stories.tsx +124 -0
  295. package/templates/hono-fullstack/libs/ui/stories/forms/TagsInput.stories.tsx +154 -0
  296. package/templates/hono-fullstack/libs/ui/stories/forms/Textarea.stories.tsx +148 -0
  297. package/templates/hono-fullstack/libs/ui/stories/layout/Grid.stories.tsx +60 -0
  298. package/templates/hono-fullstack/libs/ui/stories/layout/Positioning.stories.tsx +90 -0
  299. package/templates/hono-fullstack/libs/ui/stories/layout/ScrollArea.stories.tsx +68 -0
  300. package/templates/hono-fullstack/libs/ui/stories/layout/Stack.stories.tsx +87 -0
  301. package/templates/hono-fullstack/libs/ui/stories/navigation/Breadcrumb.stories.tsx +104 -0
  302. package/templates/hono-fullstack/libs/ui/stories/navigation/Link.stories.tsx +62 -0
  303. package/templates/hono-fullstack/libs/ui/stories/navigation/LinkBox.stories.tsx +45 -0
  304. package/templates/hono-fullstack/libs/ui/stories/navigation/Pagination.stories.tsx +74 -0
  305. package/templates/hono-fullstack/libs/ui/stories/overlays/Dialog.stories.tsx +255 -0
  306. package/templates/hono-fullstack/libs/ui/stories/overlays/Drawer.stories.tsx +114 -0
  307. package/templates/hono-fullstack/libs/ui/stories/overlays/HoverCard.stories.tsx +47 -0
  308. package/templates/hono-fullstack/libs/ui/stories/overlays/Menu.stories.tsx +133 -0
  309. package/templates/hono-fullstack/libs/ui/stories/overlays/OverlayManager.stories.tsx +206 -0
  310. package/templates/hono-fullstack/libs/ui/stories/overlays/Popover.stories.tsx +73 -0
  311. package/templates/hono-fullstack/libs/ui/stories/overlays/Tooltip.stories.tsx +114 -0
  312. package/templates/hono-fullstack/libs/ui/stories/tsconfig.json +14 -0
  313. package/templates/hono-fullstack/libs/ui/tsconfig.build.json +5 -0
  314. package/templates/hono-fullstack/libs/ui/tsconfig.json +13 -0
  315. package/templates/hono-fullstack/libs/ui/turbo.json +28 -0
  316. package/templates/hono-fullstack/libs/ui/vite.config.ts +33 -0
  317. package/templates/hono-fullstack/oyo.config.json +30 -4
  318. package/templates/hono-fullstack/package.json +1 -0
  319. package/templates/hono-fullstack/pnpm-workspace.yaml +20 -10
  320. package/templates/hono-fullstack/turbo.json +10 -0
  321. package/templates/hono-server/.codegraph/.gitignore +5 -0
  322. package/templates/hono-server/README.md +9 -1
  323. package/templates/hono-server/_gitignore +1 -0
  324. package/templates/hono-server/apps/server/package.json +7 -2
  325. package/templates/hono-server/apps/server/src/adapters/cloudflare/entry.ts +4 -30
  326. package/templates/hono-server/apps/server/src/adapters/nodejs/bootstrap.ts +20 -12
  327. package/templates/hono-server/apps/server/src/adapters/nodejs/entry.ts +7 -57
  328. package/templates/hono-server/apps/server/src/app.ts +37 -21
  329. package/templates/hono-server/apps/server/src/config.ts +1 -1
  330. package/templates/hono-server/apps/server/src/di-container.ts +51 -0
  331. package/templates/hono-server/apps/server/src/infra/logger/getter.ts +1 -1
  332. package/templates/hono-server/apps/server/src/infra/logger/pino.ts +21 -34
  333. package/templates/hono-server/apps/server/src/infra/work-runner/errors.ts +22 -0
  334. package/templates/hono-server/apps/server/src/infra/work-runner/pass-through/runner.ts +28 -22
  335. package/templates/hono-server/apps/server/src/infra/work-runner/piscina/runner.ts +11 -34
  336. package/templates/hono-server/apps/server/src/infra/work-runner/{example → piscina}/worker-entry.ts +6 -2
  337. package/templates/hono-server/apps/server/src/infra/work-runner/types.ts +2 -16
  338. package/templates/hono-server/apps/server/src/infra/work-runner/utils/business-error.ts +10 -5
  339. package/templates/hono-server/apps/server/src/infra/work-runner/utils/message.ts +5 -17
  340. package/templates/hono-server/apps/server/src/middlewares/cors.ts +16 -22
  341. package/templates/hono-server/apps/server/src/middlewares/logger.ts +34 -0
  342. package/templates/hono-server/apps/server/src/modules/example/module.ts +8 -0
  343. package/templates/hono-server/apps/server/src/modules/example/queries.ts +8 -0
  344. package/templates/hono-server/apps/server/src/modules/example/routes.ts +74 -68
  345. package/templates/hono-server/apps/server/src/modules/example/service.test.ts +53 -0
  346. package/templates/hono-server/apps/server/src/modules/example/service.ts +54 -0
  347. package/templates/hono-server/apps/server/src/modules/example/types.ts +12 -0
  348. package/templates/hono-server/apps/server/src/modules/example/work-task/tasks.test.ts +9 -35
  349. package/templates/hono-server/apps/server/src/modules/example/work-task/tasks.ts +15 -46
  350. package/templates/hono-server/apps/server/src/shared/errors/defs/index.ts +6 -1
  351. package/templates/hono-server/apps/server/src/shared/errors/handler.ts +1 -1
  352. package/templates/hono-server/apps/server/src/shared/network/openapi/index.ts +1 -1
  353. package/templates/hono-server/apps/server/src/shared/types/app.ts +51 -0
  354. package/templates/hono-server/apps/server/src/shared/types/db.ts +126 -0
  355. package/templates/hono-server/apps/server/src/shared/utils/data-access/check.ts +19 -0
  356. package/templates/hono-server/apps/server/src/shared/utils/data-access/model.ts +47 -0
  357. package/templates/hono-server/apps/server/src/shared/utils/data-access/params.ts +105 -0
  358. package/templates/hono-server/apps/server/src/shared/utils/data-access/query.test.ts +139 -0
  359. package/templates/hono-server/apps/server/src/shared/utils/data-access/query.ts +236 -0
  360. package/templates/hono-server/apps/server/vite.config.ts +2 -2
  361. package/templates/hono-server/apps/server/wrangler.jsonc +1 -1
  362. package/templates/hono-server/docker/README.md +1 -1
  363. package/templates/hono-server/envs/.env.example.sqlite-d1 +1 -0
  364. package/templates/hono-server/libs/db/drizzle-kit/sqlite-d1.config.ts +29 -10
  365. package/templates/hono-server/libs/db/package.json +1 -0
  366. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/columns.ts +1 -1
  367. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/modules/examples/examples.ts +6 -3
  368. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/vo.ts +7 -1
  369. package/templates/hono-server/libs/definition/README.md +81 -0
  370. package/templates/hono-server/libs/definition/package.json +3 -1
  371. package/templates/hono-server/libs/definition/src/constants/index.ts +1 -0
  372. package/templates/hono-server/libs/definition/src/constants/pagination.ts +3 -0
  373. package/templates/hono-server/libs/definition/src/modules/common-contracts.ts +24 -0
  374. package/templates/hono-server/libs/definition/src/modules/example/contracts.ts +34 -0
  375. package/templates/hono-server/libs/definition/src/modules/example/index.ts +1 -16
  376. package/templates/hono-server/libs/definition/src/modules/index.ts +2 -0
  377. package/templates/hono-server/libs/definition/src/modules/vo-generated-types.ts +12 -0
  378. package/templates/hono-server/oyo.config.json +30 -4
  379. package/templates/hono-server/package.json +1 -0
  380. package/templates/hono-server/pnpm-workspace.yaml +9 -7
  381. package/templates/hono-server/turbo.json +10 -0
  382. package/templates/monorepo/.codegraph/.gitignore +5 -0
  383. package/templates/monorepo/_gitignore +1 -0
  384. package/templates/monorepo/oyo.config.json +6 -4
  385. package/templates/monorepo/pnpm-workspace.yaml +4 -4
  386. package/templates/monorepo/turbo.json +10 -0
  387. package/templates/hono-fullstack/apps/server/src/modules/example/contracts.ts +0 -9
  388. package/templates/hono-fullstack/apps/server/src/shared/app/types.ts +0 -44
  389. package/templates/hono-fullstack/apps/stack/frontend/styles.css +0 -23
  390. package/templates/hono-server/apps/server/src/modules/example/contracts.ts +0 -9
  391. package/templates/hono-server/apps/server/src/shared/app/types.ts +0 -44
@@ -0,0 +1,77 @@
1
+ 'use client'
2
+ import { TagsInput, useTagsInputContext } from '@ark-ui/react/tags-input'
3
+ import { XIcon } from 'lucide-react'
4
+ import type { ComponentProps } from 'react'
5
+ import { createSlotRecipeContext } from 'styled-system/jsx'
6
+ import { tagsInput, type TagsInputVariantProps } from 'styled-system/recipes'
7
+ import type { StyledComponent } from 'styled-system/types'
8
+
9
+ const { withProvider, withContext } = createSlotRecipeContext(tagsInput)
10
+
11
+ export type RootProps = ComponentProps<typeof Root>
12
+ export type ItemProps = ComponentProps<typeof Item>
13
+ export const Root: StyledComponent<typeof TagsInput.Root, TagsInputVariantProps> = withProvider(
14
+ TagsInput.Root,
15
+ 'root',
16
+ )
17
+ export const RootProvider: StyledComponent<typeof TagsInput.RootProvider, TagsInputVariantProps> =
18
+ withProvider(TagsInput.RootProvider, 'root')
19
+ export const ClearTrigger = withContext(TagsInput.ClearTrigger, 'clearTrigger', {
20
+ defaultProps: { children: <XIcon /> },
21
+ })
22
+ export const Control = withContext(TagsInput.Control, 'control')
23
+ export const HiddenInput = TagsInput.HiddenInput
24
+ export const Input = withContext(TagsInput.Input, 'input')
25
+ export const Item = withContext(TagsInput.Item, 'item')
26
+ export const ItemDeleteTrigger = withContext(TagsInput.ItemDeleteTrigger, 'itemDeleteTrigger', {
27
+ defaultProps: { children: <XIcon /> },
28
+ })
29
+ export const ItemInput = withContext(TagsInput.ItemInput, 'itemInput')
30
+ export const ItemPreview = withContext(TagsInput.ItemPreview, 'itemPreview')
31
+ export const ItemText = withContext(TagsInput.ItemText, 'itemText')
32
+ export const Label = withContext(TagsInput.Label, 'label')
33
+
34
+ export { TagsInputContext as Context } from '@ark-ui/react/tags-input'
35
+
36
+ export interface TagsInputItemsProps extends Omit<ItemProps, 'value' | 'index'> {}
37
+
38
+ export const Items = (props: TagsInputItemsProps) => {
39
+ const context = useTagsInputContext()
40
+
41
+ return context.value.map((item, index) => (
42
+ <Item key={index} index={index} value={item} {...props}>
43
+ <ItemPreview>
44
+ <ItemText>{item}</ItemText>
45
+ <ItemDeleteTrigger />
46
+ </ItemPreview>
47
+ <ItemInput />
48
+ </Item>
49
+ ))
50
+ }
51
+
52
+ export {
53
+ useTagsInput,
54
+ type UseTagsInputProps,
55
+ type UseTagsInputReturn,
56
+ } from '@ark-ui/react/tags-input'
57
+
58
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
59
+ export type ClearTriggerProps = ComponentProps<typeof ClearTrigger>
60
+ export type ControlProps = ComponentProps<typeof Control>
61
+ export type HiddenInputProps = ComponentProps<typeof HiddenInput>
62
+ export type InputProps = ComponentProps<typeof Input>
63
+ export type ItemDeleteTriggerProps = ComponentProps<typeof ItemDeleteTrigger>
64
+ export type ItemInputProps = ComponentProps<typeof ItemInput>
65
+ export type ItemPreviewProps = ComponentProps<typeof ItemPreview>
66
+ export type ItemTextProps = ComponentProps<typeof ItemText>
67
+ export type LabelProps = ComponentProps<typeof Label>
68
+ export type ItemsProps = ComponentProps<typeof Items>
69
+
70
+ export {
71
+ useTagsInputContext,
72
+ useTagsInputItemContext,
73
+ type TagsInputHighlightChangeDetails as HighlightChangeDetails,
74
+ type TagsInputInputValueChangeDetails as InputValueChangeDetails,
75
+ type TagsInputValidityChangeDetails as ValidityChangeDetails,
76
+ type TagsInputValueChangeDetails as ValueChangeDetails,
77
+ } from '@ark-ui/react/tags-input'
@@ -0,0 +1,7 @@
1
+ import { Field } from '@ark-ui/react/field'
2
+ import type { ComponentProps } from 'react'
3
+ import { styled } from 'styled-system/jsx'
4
+ import { textarea } from 'styled-system/recipes'
5
+
6
+ export type TextareaProps = ComponentProps<typeof Textarea>
7
+ export const Textarea = styled(Field.Textarea, textarea)
@@ -0,0 +1,98 @@
1
+ export { Button, ButtonGroup, type ButtonProps, type ButtonGroupProps } from './buttons/Button'
2
+ export { IconButton, type IconButtonProps } from './buttons/IconButton'
3
+ export { CloseButton, type CloseButtonProps } from './buttons/CloseButton'
4
+ export { Spinner, type SpinnerProps } from './feedback/Spinner'
5
+ export { Icon, type IconProps } from './data-display/Icon'
6
+ export * as Dialog from './overlays/Dialog'
7
+ export * as Select from './collections/Select'
8
+ export * as Combobox from './collections/Combobox'
9
+ export * as Field from './forms/Field'
10
+ export * as Checkbox from './forms/Checkbox'
11
+ export { Group as CheckboxGroup, type GroupProps as CheckboxGroupProps } from './forms/Checkbox'
12
+ export * as Tooltip from './overlays/Tooltip'
13
+ export * as Tabs from './disclosure/Tabs'
14
+ export {
15
+ Toaster,
16
+ createToaster,
17
+ type ToasterProps,
18
+ type CreateToasterProps,
19
+ type CreateToasterReturn,
20
+ } from './feedback/Toast'
21
+ export * as Toast from './feedback/Toast'
22
+ export * as ScrollArea from './layout/ScrollArea'
23
+ export * as FileUpload from './forms/FileUpload'
24
+ export { Badge, type BadgeProps } from './data-display/Badge'
25
+ export * as Card from './data-display/Card'
26
+ export {
27
+ Skeleton,
28
+ SkeletonCircle,
29
+ SkeletonText,
30
+ type SkeletonProps,
31
+ type SkeletonCircleProps,
32
+ type SkeletonTextProps,
33
+ } from './feedback/Skeleton'
34
+ export { Input, type InputProps } from './forms/Input'
35
+ export { Textarea, type TextareaProps } from './forms/Textarea'
36
+ export * as Switch from './forms/Switch'
37
+ export * as RadioGroup from './forms/RadioGroup'
38
+ export * as Accordion from './disclosure/Accordion'
39
+ export * as Collapsible from './disclosure/Collapsible'
40
+ export * as Pagination from './disclosure/Pagination'
41
+ export * as Avatar from './data-display/Avatar'
42
+ export * as Alert from './feedback/Alert'
43
+ export * as Progress from './feedback/Progress'
44
+ export * as ProgressCircle from './feedback/ProgressCircle'
45
+ export { Heading, type HeadingProps } from './typography/Heading'
46
+ export { Link, type LinkProps } from './typography/Link'
47
+ export { Text, type TextProps } from './typography/Text'
48
+ export * as Menu from './overlays/Menu'
49
+ export * as Popover from './overlays/Popover'
50
+ export * as HoverCard from './overlays/HoverCard'
51
+ export * as Drawer from './overlays/Drawer'
52
+ export * as NumberInput from './forms/NumberInput'
53
+ export * as PinInput from './forms/PinInput'
54
+ export * as Slider from './forms/Slider'
55
+ export * as RatingGroup from './forms/RatingGroup'
56
+ export * as SegmentGroup from './forms/SegmentGroup'
57
+ export * as Editable from './forms/Editable'
58
+ export * as TagsInput from './forms/TagsInput'
59
+ export * as RadioCard from './forms/RadioCard'
60
+ export * as Fieldset from './forms/Fieldset'
61
+ export { InputGroup, type InputGroupProps } from './forms/InputGroup'
62
+ export { InputAddon, type InputAddonProps } from './forms/InputAddon'
63
+ export { Group, type GroupProps } from './layout/Group'
64
+ export {
65
+ Stack,
66
+ HStack,
67
+ VStack,
68
+ type StackProps,
69
+ type HStackProps,
70
+ type VStackProps,
71
+ } from './layout/Stack'
72
+ export { Separator, type SeparatorProps } from './layout/Separator'
73
+ export { Grid, type GridProps, GridItem, type GridItemProps } from './layout/Grid'
74
+ export { Float, type FloatProps } from './layout/Float'
75
+ export {
76
+ LinkBox,
77
+ type LinkBoxProps,
78
+ LinkOverlay,
79
+ type LinkOverlayProps,
80
+ } from './typography/LinkOverlay'
81
+ export { VisuallyHidden, type VisuallyHiddenProps } from './utilities/VisuallyHidden'
82
+ export * as Table from './data-display/Table'
83
+ export * as Tag from './data-display/Tag'
84
+ export * as Breadcrumb from './disclosure/Breadcrumb'
85
+ export * as Clipboard from './data-display/Clipboard'
86
+ export * as NativeSelect from './forms/NativeSelect'
87
+ export { PasswordInput, type PasswordInputProps } from './forms/PasswordInput'
88
+ export * as Steps from './disclosure/Steps'
89
+ export * as TreeView from './collections/TreeView'
90
+ export * as ColorPicker from './forms/ColorPicker'
91
+ export * as DatePicker from './date-and-time/DatePicker'
92
+ export * as Timeline from './data-display/Timeline'
93
+ export {
94
+ createOverlay,
95
+ type CreateOverlayProps,
96
+ type CreateOverlayReturn,
97
+ type OverlayOptions,
98
+ } from './overlays/OverlayManager'
@@ -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 { absoluteCenter } from 'styled-system/recipes'
5
+
6
+ export type AbsoluteCenterProps = ComponentProps<typeof AbsoluteCenter>
7
+ export const AbsoluteCenter = styled(ark.div, absoluteCenter)
@@ -0,0 +1,69 @@
1
+ 'use client'
2
+ import { forwardRef } from 'react'
3
+ import type { HTMLStyledProps } from 'styled-system/jsx'
4
+ import { AbsoluteCenter } from './AbsoluteCenter'
5
+ import { Span } from './Span'
6
+ import { Spinner } from '@/components/atoms/feedback/Spinner'
7
+
8
+ export interface LoaderProps extends HTMLStyledProps<'span'> {
9
+ /**
10
+ * Whether the loader is visible
11
+ * @default true
12
+ */
13
+ visible?: boolean | undefined
14
+ /**
15
+ * The spinner to display when loading
16
+ */
17
+ spinner?: React.ReactNode | undefined
18
+ /**
19
+ * The placement of the spinner
20
+ * @default "start"
21
+ */
22
+ spinnerPlacement?: 'start' | 'end' | undefined
23
+ /**
24
+ * The text to display when loading
25
+ */
26
+ text?: React.ReactNode | undefined
27
+
28
+ children?: React.ReactNode
29
+ }
30
+
31
+ export const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(props, ref) {
32
+ const {
33
+ spinner = <Spinner size="inherit" borderWidth="0.125em" color="inherit" />,
34
+ spinnerPlacement = 'start',
35
+ children,
36
+ text,
37
+ visible = true,
38
+ ...rest
39
+ } = props
40
+
41
+ if (!visible) return children
42
+
43
+ if (text) {
44
+ return (
45
+ <Span ref={ref} display="contents" {...rest}>
46
+ {spinnerPlacement === 'start' && spinner}
47
+ {text}
48
+ {spinnerPlacement === 'end' && spinner}
49
+ </Span>
50
+ )
51
+ }
52
+
53
+ if (spinner) {
54
+ return (
55
+ <Span ref={ref} display="contents" {...rest}>
56
+ <AbsoluteCenter display="inline-flex">{spinner}</AbsoluteCenter>
57
+ <Span visibility="hidden" display="contents">
58
+ {children}
59
+ </Span>
60
+ </Span>
61
+ )
62
+ }
63
+
64
+ return (
65
+ <Span ref={ref} display="contents" {...rest}>
66
+ {children}
67
+ </Span>
68
+ )
69
+ })
@@ -0,0 +1,5 @@
1
+ import type { ComponentProps } from 'react'
2
+ import { styled } from 'styled-system/jsx'
3
+
4
+ export type SpanProps = ComponentProps<typeof Span>
5
+ export const Span = styled('span')
@@ -0,0 +1,18 @@
1
+ 'use client'
2
+ import { createElement, forwardRef, type ElementType, type FunctionComponent } from 'react'
3
+ import type { DataAttrs } from 'styled-system/types'
4
+
5
+ export function createLayout<Props extends { as?: ElementType }, Element extends HTMLElement>(
6
+ Component: FunctionComponent<Props>,
7
+ element: ElementType,
8
+ defaults?: Partial<Props> & DataAttrs,
9
+ ) {
10
+ return forwardRef<Element, Props & { asChild?: boolean }>(function Layout(props, ref) {
11
+ return createElement(Component, {
12
+ ...defaults,
13
+ ...props,
14
+ as: props.as || element,
15
+ ref,
16
+ } as Props)
17
+ })
18
+ }
@@ -0,0 +1,7 @@
1
+ 'use client'
2
+ import { ark } from '@ark-ui/react/factory'
3
+ import { Float as PandaFloat, type FloatProps as PandaFloatProps } from 'styled-system/jsx'
4
+ import { createLayout } from '@/components/atoms/internal/create-layout'
5
+
6
+ export type FloatProps = PandaFloatProps & { asChild?: boolean }
7
+ export const Float = /* @__PURE__ */ createLayout<FloatProps, HTMLDivElement>(PandaFloat, ark.div)
@@ -0,0 +1,17 @@
1
+ 'use client'
2
+ import { ark } from '@ark-ui/react/factory'
3
+ import {
4
+ Grid as PandaGrid,
5
+ type GridProps as PandaGridProps,
6
+ GridItem as PandaGridItem,
7
+ type GridItemProps as PandaGridItemProps,
8
+ } from 'styled-system/jsx'
9
+ import { createLayout } from '@/components/atoms/internal/create-layout'
10
+
11
+ export type GridProps = PandaGridProps & { asChild?: boolean }
12
+ export const Grid = /* @__PURE__ */ createLayout<GridProps, HTMLDivElement>(PandaGrid, ark.div)
13
+ export type GridItemProps = PandaGridItemProps & { asChild?: boolean }
14
+ export const GridItem = /* @__PURE__ */ createLayout<GridItemProps, HTMLDivElement>(
15
+ PandaGridItem,
16
+ ark.div,
17
+ )
@@ -0,0 +1,7 @@
1
+ import { ark } from '@ark-ui/react'
2
+ import type { ComponentProps } from 'react'
3
+ import { styled } from 'styled-system/jsx'
4
+ import { group } from 'styled-system/recipes'
5
+
6
+ export type GroupProps = ComponentProps<typeof Group>
7
+ export const Group = styled(ark.div, group)
@@ -0,0 +1,46 @@
1
+ 'use client'
2
+ import { ScrollArea } from '@ark-ui/react/scroll-area'
3
+ import type { ComponentProps } from 'react'
4
+ import { createSlotRecipeContext } from 'styled-system/jsx'
5
+ import { scrollArea, type ScrollAreaVariantProps } from 'styled-system/recipes'
6
+
7
+ import type { StyledComponent } from 'styled-system/types'
8
+
9
+ const { withProvider, withContext } = createSlotRecipeContext(scrollArea)
10
+
11
+ export type RootProps = ComponentProps<typeof Root>
12
+ export type ContentProps = ComponentProps<typeof Content>
13
+
14
+ export const Root: StyledComponent<typeof ScrollArea.Root, ScrollAreaVariantProps> = withProvider(
15
+ ScrollArea.Root,
16
+ 'root',
17
+ )
18
+ export const RootProvider: StyledComponent<typeof ScrollArea.RootProvider, ScrollAreaVariantProps> =
19
+ withProvider(ScrollArea.RootProvider, 'root')
20
+ export const Content = withContext(ScrollArea.Content, 'content')
21
+ export const Corner = withContext(ScrollArea.Corner, 'corner')
22
+ export const Thumb = withContext(ScrollArea.Thumb, 'thumb')
23
+ export const Scrollbar = withContext(ScrollArea.Scrollbar, 'scrollbar', {
24
+ defaultProps: { children: <Thumb /> },
25
+ })
26
+ export const Viewport = withContext(ScrollArea.Viewport, 'viewport')
27
+
28
+ export { ScrollAreaContext as Context } from '@ark-ui/react/scroll-area'
29
+
30
+ export {
31
+ useScrollArea,
32
+ useScrollAreaContext,
33
+ type UseScrollAreaProps,
34
+ type UseScrollAreaReturn,
35
+ } from '@ark-ui/react/scroll-area'
36
+
37
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
38
+ export type CornerProps = ComponentProps<typeof Corner>
39
+ export type ThumbProps = ComponentProps<typeof Thumb>
40
+ export type ScrollbarProps = ComponentProps<typeof Scrollbar>
41
+ export type ViewportProps = ComponentProps<typeof Viewport>
42
+
43
+ export {
44
+ type ScrollAreaScrollToDetails as ScrollToDetails,
45
+ type ScrollAreaScrollToEdgeDetails as ScrollToEdgeDetails,
46
+ } from '@ark-ui/react/scroll-area'
@@ -0,0 +1,26 @@
1
+ import { ark } from '@ark-ui/react/factory'
2
+ import { forwardRef, type ComponentProps } from 'react'
3
+ import { styled } from 'styled-system/jsx'
4
+ import { separator, type SeparatorVariantProps } from 'styled-system/recipes'
5
+ import type { StyledComponent } from 'styled-system/types'
6
+
7
+ const StyledSeparator: StyledComponent<typeof ark.span, SeparatorVariantProps> = styled(
8
+ ark.span,
9
+ separator,
10
+ )
11
+ export type SeparatorProps = ComponentProps<typeof StyledSeparator>
12
+
13
+ export const Separator = forwardRef<HTMLSpanElement, SeparatorProps>(function Separator(
14
+ { orientation = 'horizontal', ...props },
15
+ ref,
16
+ ) {
17
+ return (
18
+ <StyledSeparator
19
+ role="separator"
20
+ aria-orientation={typeof orientation === 'string' ? orientation : undefined}
21
+ {...props}
22
+ orientation={orientation}
23
+ ref={ref}
24
+ />
25
+ )
26
+ })
@@ -0,0 +1,54 @@
1
+ 'use client'
2
+ import { ark } from '@ark-ui/react/factory'
3
+ import {
4
+ Children,
5
+ cloneElement,
6
+ Fragment,
7
+ forwardRef,
8
+ isValidElement,
9
+ type ReactElement,
10
+ type FunctionComponent,
11
+ } from 'react'
12
+ import {
13
+ Stack as PandaStack,
14
+ HStack as PandaHStack,
15
+ VStack as PandaVStack,
16
+ type ComponentStackProps as PandaStackProps,
17
+ } from 'styled-system/jsx'
18
+
19
+ export interface StackProps extends PandaStackProps {
20
+ asChild?: boolean
21
+ separator?: ReactElement<Record<string, unknown>>
22
+ }
23
+
24
+ function createStack(Component: FunctionComponent<PandaStackProps>) {
25
+ return forwardRef<HTMLDivElement, StackProps>(function Stack(
26
+ { separator, children, ...props },
27
+ ref,
28
+ ) {
29
+ const items = Children.toArray(children)
30
+ return (
31
+ <Component
32
+ {...props}
33
+ as={props.as || ark.div}
34
+ data-stack-separated={isValidElement(separator) ? '' : undefined}
35
+ ref={ref}>
36
+ {isValidElement(separator)
37
+ ? items.map((child, index) => (
38
+ <Fragment key={isValidElement(child) ? child.key || index : index}>
39
+ {child}
40
+ {index < items.length - 1 &&
41
+ cloneElement(separator, { 'data-stack-separator': '' })}
42
+ </Fragment>
43
+ ))
44
+ : children}
45
+ </Component>
46
+ )
47
+ })
48
+ }
49
+
50
+ export const Stack = /* @__PURE__ */ createStack(PandaStack)
51
+ export const HStack = /* @__PURE__ */ createStack(PandaHStack)
52
+ export const VStack = /* @__PURE__ */ createStack(PandaVStack)
53
+ export type HStackProps = StackProps
54
+ export type VStackProps = StackProps
@@ -0,0 +1,69 @@
1
+ 'use client'
2
+ import { Dialog, useDialogContext } from '@ark-ui/react/dialog'
3
+ import { ark } from '@ark-ui/react/factory'
4
+ import { type ComponentProps, forwardRef } from 'react'
5
+ import { createSlotRecipeContext, styled } from 'styled-system/jsx'
6
+ import { dialog } from 'styled-system/recipes'
7
+
8
+ const { withRootProvider, withContext } = createSlotRecipeContext(dialog)
9
+
10
+ export type RootProps = ComponentProps<typeof Root>
11
+ export const Root = withRootProvider(Dialog.Root, {
12
+ defaultProps: { unmountOnExit: true, lazyMount: true },
13
+ })
14
+ export const RootProvider = withRootProvider(Dialog.RootProvider, {
15
+ defaultProps: { unmountOnExit: true, lazyMount: true },
16
+ })
17
+ export const Backdrop = withContext(Dialog.Backdrop, 'backdrop')
18
+ export const CloseTrigger = withContext(Dialog.CloseTrigger, 'closeTrigger')
19
+ export const Content = withContext(Dialog.Content, 'content')
20
+ export const Description = withContext(Dialog.Description, 'description')
21
+ export const Positioner = withContext(Dialog.Positioner, 'positioner')
22
+ export const Title = withContext(Dialog.Title, 'title')
23
+ export const Trigger = withContext(Dialog.Trigger, 'trigger')
24
+ export const Body = withContext(ark.div, 'body')
25
+ export const Header = withContext(ark.div, 'header')
26
+ export const Footer = withContext(ark.div, 'footer')
27
+
28
+ const StyledButton = styled(ark.button)
29
+
30
+ export const ActionTrigger = forwardRef<HTMLButtonElement, ComponentProps<typeof StyledButton>>(
31
+ function ActionTrigger(props, ref) {
32
+ const dialog = useDialogContext()
33
+ const { onClick, ...rest } = props
34
+ return (
35
+ <StyledButton
36
+ {...rest}
37
+ ref={ref}
38
+ onClick={(event) => {
39
+ onClick?.(event)
40
+ if (!event.defaultPrevented) dialog.setOpen(false)
41
+ }}
42
+ />
43
+ )
44
+ },
45
+ )
46
+
47
+ export { DialogContext as Context } from '@ark-ui/react/dialog'
48
+
49
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
50
+ export type BackdropProps = ComponentProps<typeof Backdrop>
51
+ export type CloseTriggerProps = ComponentProps<typeof CloseTrigger>
52
+ export type ContentProps = ComponentProps<typeof Content>
53
+ export type DescriptionProps = ComponentProps<typeof Description>
54
+ export type PositionerProps = ComponentProps<typeof Positioner>
55
+ export type TitleProps = ComponentProps<typeof Title>
56
+ export type TriggerProps = ComponentProps<typeof Trigger>
57
+ export type BodyProps = ComponentProps<typeof Body>
58
+ export type HeaderProps = ComponentProps<typeof Header>
59
+ export type FooterProps = ComponentProps<typeof Footer>
60
+ export type ActionTriggerProps = ComponentProps<typeof ActionTrigger>
61
+
62
+ export {
63
+ useDialog,
64
+ useDialogContext,
65
+ type UseDialogProps,
66
+ type UseDialogReturn,
67
+ type DialogOpenChangeDetails as OpenChangeDetails,
68
+ type DialogTriggerValueChangeDetails as TriggerValueChangeDetails,
69
+ } from '@ark-ui/react/dialog'
@@ -0,0 +1,49 @@
1
+ 'use client'
2
+ import { Dialog } from '@ark-ui/react/dialog'
3
+ import { ark } from '@ark-ui/react/factory'
4
+ import type { ComponentProps } from 'react'
5
+ import { createSlotRecipeContext } from 'styled-system/jsx'
6
+ import { drawer } from 'styled-system/recipes'
7
+
8
+ const { withRootProvider, withContext } = createSlotRecipeContext(drawer)
9
+
10
+ export type RootProps = ComponentProps<typeof Root>
11
+ export const Root = withRootProvider(Dialog.Root, {
12
+ defaultProps: { unmountOnExit: true, lazyMount: true },
13
+ })
14
+ export const RootProvider = withRootProvider(Dialog.RootProvider, {
15
+ defaultProps: { unmountOnExit: true, lazyMount: true },
16
+ })
17
+ export const Backdrop = withContext(Dialog.Backdrop, 'backdrop')
18
+ export const Positioner = withContext(Dialog.Positioner, 'positioner')
19
+ export const CloseTrigger = withContext(Dialog.CloseTrigger, 'closeTrigger')
20
+ export const Content = withContext(Dialog.Content, 'content')
21
+ export const Description = withContext(Dialog.Description, 'description')
22
+ export const Title = withContext(Dialog.Title, 'title')
23
+ export const Trigger = withContext(Dialog.Trigger, 'trigger')
24
+
25
+ export const Body = withContext(ark.div, 'body')
26
+ export const Header = withContext(ark.div, 'header')
27
+ export const Footer = withContext(ark.div, 'footer')
28
+
29
+ export { DialogContext as Context } from '@ark-ui/react/dialog'
30
+
31
+ export {
32
+ useDialog as useDrawer,
33
+ type UseDialogProps as UseDrawerProps,
34
+ type UseDialogReturn as UseDrawerReturn,
35
+ type DialogOpenChangeDetails as OpenChangeDetails,
36
+ type DialogTriggerValueChangeDetails as TriggerValueChangeDetails,
37
+ } from '@ark-ui/react/dialog'
38
+
39
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
40
+ export type BackdropProps = ComponentProps<typeof Backdrop>
41
+ export type PositionerProps = ComponentProps<typeof Positioner>
42
+ export type CloseTriggerProps = ComponentProps<typeof CloseTrigger>
43
+ export type ContentProps = ComponentProps<typeof Content>
44
+ export type DescriptionProps = ComponentProps<typeof Description>
45
+ export type TitleProps = ComponentProps<typeof Title>
46
+ export type TriggerProps = ComponentProps<typeof Trigger>
47
+ export type BodyProps = ComponentProps<typeof Body>
48
+ export type HeaderProps = ComponentProps<typeof Header>
49
+ export type FooterProps = ComponentProps<typeof Footer>
@@ -0,0 +1,37 @@
1
+ 'use client'
2
+ import { HoverCard } from '@ark-ui/react/hover-card'
3
+ import type { ComponentProps } from 'react'
4
+ import { createSlotRecipeContext } from 'styled-system/jsx'
5
+ import { hoverCard } from 'styled-system/recipes'
6
+
7
+ const { withRootProvider, withContext } = createSlotRecipeContext(hoverCard)
8
+
9
+ export type RootProps = ComponentProps<typeof Root>
10
+ export const Root = withRootProvider(HoverCard.Root)
11
+ export const RootProvider = withRootProvider(HoverCard.RootProvider)
12
+ export const Arrow = withContext(HoverCard.Arrow, 'arrow')
13
+ export const ArrowTip = withContext(HoverCard.ArrowTip, 'arrowTip')
14
+ export const Content = withContext(HoverCard.Content, 'content')
15
+ export const Positioner = withContext(HoverCard.Positioner, 'positioner')
16
+ export const Trigger = withContext(HoverCard.Trigger, 'trigger')
17
+
18
+ export { HoverCardContext as Context } from '@ark-ui/react/hover-card'
19
+
20
+ export {
21
+ useHoverCard,
22
+ type UseHoverCardProps,
23
+ type UseHoverCardReturn,
24
+ } from '@ark-ui/react/hover-card'
25
+
26
+ export type RootProviderProps = ComponentProps<typeof RootProvider>
27
+ export type ArrowProps = ComponentProps<typeof Arrow>
28
+ export type ArrowTipProps = ComponentProps<typeof ArrowTip>
29
+ export type ContentProps = ComponentProps<typeof Content>
30
+ export type PositionerProps = ComponentProps<typeof Positioner>
31
+ export type TriggerProps = ComponentProps<typeof Trigger>
32
+
33
+ export {
34
+ useHoverCardContext,
35
+ type HoverCardOpenChangeDetails as OpenChangeDetails,
36
+ type HoverCardTriggerValueChangeDetails as TriggerValueChangeDetails,
37
+ } from '@ark-ui/react/hover-card'