@podosoft/podokit 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/templates/fullstack-nest-svelte/apps/api/package.json +9 -9
  4. package/dist/templates/fullstack-nest-svelte/apps/api/src/app.module.ts +3 -0
  5. package/dist/templates/fullstack-nest-svelte/apps/web/package.json +5 -4
  6. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/alert/alert-action.svelte +20 -0
  7. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/alert/alert-description.svelte +23 -0
  8. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/alert/alert-title.svelte +23 -0
  9. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/alert/alert.svelte +43 -0
  10. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/alert/index.ts +17 -0
  11. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/avatar/avatar-badge.svelte +26 -0
  12. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/avatar/avatar-fallback.svelte +20 -0
  13. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/avatar/avatar-group-count.svelte +23 -0
  14. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/avatar/avatar-group.svelte +23 -0
  15. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/avatar/avatar-image.svelte +17 -0
  16. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/avatar/avatar.svelte +26 -0
  17. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/avatar/index.ts +22 -0
  18. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/badge/badge.svelte +49 -0
  19. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/badge/index.ts +2 -0
  20. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-close.svelte +11 -0
  21. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-content.svelte +48 -0
  22. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-description.svelte +17 -0
  23. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-footer.svelte +32 -0
  24. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-header.svelte +20 -0
  25. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-overlay.svelte +17 -0
  26. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-portal.svelte +7 -0
  27. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-title.svelte +17 -0
  28. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog-trigger.svelte +11 -0
  29. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/dialog.svelte +7 -0
  30. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dialog/index.ts +34 -0
  31. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
  32. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +44 -0
  33. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte +31 -0
  34. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  35. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte +7 -0
  36. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte +27 -0
  37. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte +24 -0
  38. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte +7 -0
  39. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  40. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +34 -0
  41. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  42. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
  43. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +17 -0
  44. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  45. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte +7 -0
  46. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  47. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte +7 -0
  48. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/dropdown-menu/index.ts +54 -0
  49. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/index.ts +37 -0
  50. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-content.svelte +45 -0
  51. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-group-heading.svelte +21 -0
  52. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-group.svelte +17 -0
  53. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-item.svelte +40 -0
  54. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-label.svelte +20 -0
  55. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-portal.svelte +7 -0
  56. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-scroll-down-button.svelte +20 -0
  57. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-scroll-up-button.svelte +20 -0
  58. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-separator.svelte +18 -0
  59. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select-trigger.svelte +29 -0
  60. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/select/select.svelte +11 -0
  61. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/separator/index.ts +7 -0
  62. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/separator/separator.svelte +23 -0
  63. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/skeleton/index.ts +7 -0
  64. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/skeleton/skeleton.svelte +17 -0
  65. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/sonner/index.ts +1 -0
  66. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/sonner/sonner.svelte +34 -0
  67. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/index.ts +28 -0
  68. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table-body.svelte +15 -0
  69. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table-caption.svelte +20 -0
  70. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table-cell.svelte +15 -0
  71. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table-footer.svelte +20 -0
  72. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table-head.svelte +15 -0
  73. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table-header.svelte +20 -0
  74. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table-row.svelte +15 -0
  75. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/table/table.svelte +17 -0
  76. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tabs/index.ts +18 -0
  77. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tabs/tabs-content.svelte +17 -0
  78. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tabs/tabs-list.svelte +40 -0
  79. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tabs/tabs-trigger.svelte +23 -0
  80. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tabs/tabs.svelte +19 -0
  81. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tooltip/index.ts +19 -0
  82. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tooltip/tooltip-content.svelte +52 -0
  83. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tooltip/tooltip-portal.svelte +7 -0
  84. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tooltip/tooltip-provider.svelte +7 -0
  85. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tooltip/tooltip-trigger.svelte +7 -0
  86. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/components/ui/tooltip/tooltip.svelte +7 -0
  87. package/dist/templates/fullstack-nest-svelte/apps/web/src/lib/i18n/ko.ts +5 -2
  88. package/dist/templates/modules/api-key-auth/files/apps/api/src/api-key/api-key.decorator.ts +9 -0
  89. package/dist/templates/modules/api-key-auth/files/apps/api/src/api-key/api-key.guard.ts +29 -0
  90. package/dist/templates/modules/api-key-auth/files/apps/api/src/api-key/api-key.module.ts +9 -0
  91. package/dist/templates/modules/api-key-auth/files/apps/api/src/machine/machine.controller.ts +14 -0
  92. package/dist/templates/modules/api-key-auth/module.manifest.json +19 -0
  93. package/dist/templates/modules/audit-log/files/apps/api/src/audit/audit-log.entity.ts +25 -0
  94. package/dist/templates/modules/audit-log/files/apps/api/src/audit/audit.controller.ts +16 -0
  95. package/dist/templates/modules/audit-log/files/apps/api/src/audit/audit.interceptor.ts +39 -0
  96. package/dist/templates/modules/audit-log/files/apps/api/src/audit/audit.module.ts +13 -0
  97. package/dist/templates/modules/audit-log/files/apps/api/src/migrations/1720300000000-InitAuditLogs.ts +25 -0
  98. package/dist/templates/modules/audit-log/module.manifest.json +16 -0
  99. package/dist/templates/modules/auth/files/apps/api/src/account/account.controller.ts +13 -0
  100. package/dist/templates/modules/auth/files/apps/api/src/account/account.module.ts +5 -0
  101. package/dist/templates/modules/auth/files/apps/api/src/auth/auth.ts +36 -0
  102. package/dist/templates/modules/auth/files/apps/api/src/health/health.controller.ts +26 -0
  103. package/dist/templates/modules/auth/module.manifest.json +70 -0
  104. package/dist/templates/modules/bullmq/module.manifest.json +11 -3
  105. package/dist/templates/modules/logging/files/apps/api/src/logging/logging.module.ts +29 -0
  106. package/dist/templates/modules/logging/module.manifest.json +27 -0
  107. package/dist/templates/modules/rate-limit/files/apps/api/src/rate-limit/rate-limit.module.ts +26 -0
  108. package/dist/templates/modules/rate-limit/module.manifest.json +25 -0
  109. package/dist/templates/todo/apps/api/package.json +9 -9
  110. package/dist/templates/todo/apps/api/src/app.module.ts +3 -0
  111. package/dist/templates/todo/apps/web/package.json +5 -4
  112. package/dist/templates/todo/apps/web/src/lib/components/ui/alert/alert-action.svelte +20 -0
  113. package/dist/templates/todo/apps/web/src/lib/components/ui/alert/alert-description.svelte +23 -0
  114. package/dist/templates/todo/apps/web/src/lib/components/ui/alert/alert-title.svelte +23 -0
  115. package/dist/templates/todo/apps/web/src/lib/components/ui/alert/alert.svelte +43 -0
  116. package/dist/templates/todo/apps/web/src/lib/components/ui/alert/index.ts +17 -0
  117. package/dist/templates/todo/apps/web/src/lib/components/ui/avatar/avatar-badge.svelte +26 -0
  118. package/dist/templates/todo/apps/web/src/lib/components/ui/avatar/avatar-fallback.svelte +20 -0
  119. package/dist/templates/todo/apps/web/src/lib/components/ui/avatar/avatar-group-count.svelte +23 -0
  120. package/dist/templates/todo/apps/web/src/lib/components/ui/avatar/avatar-group.svelte +23 -0
  121. package/dist/templates/todo/apps/web/src/lib/components/ui/avatar/avatar-image.svelte +17 -0
  122. package/dist/templates/todo/apps/web/src/lib/components/ui/avatar/avatar.svelte +26 -0
  123. package/dist/templates/todo/apps/web/src/lib/components/ui/avatar/index.ts +22 -0
  124. package/dist/templates/todo/apps/web/src/lib/components/ui/badge/badge.svelte +49 -0
  125. package/dist/templates/todo/apps/web/src/lib/components/ui/badge/index.ts +2 -0
  126. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-close.svelte +11 -0
  127. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-content.svelte +48 -0
  128. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-description.svelte +17 -0
  129. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-footer.svelte +32 -0
  130. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-header.svelte +20 -0
  131. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-overlay.svelte +17 -0
  132. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-portal.svelte +7 -0
  133. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-title.svelte +17 -0
  134. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog-trigger.svelte +11 -0
  135. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/dialog.svelte +7 -0
  136. package/dist/templates/todo/apps/web/src/lib/components/ui/dialog/index.ts +34 -0
  137. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
  138. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +44 -0
  139. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte +31 -0
  140. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  141. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte +7 -0
  142. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte +27 -0
  143. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte +24 -0
  144. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte +7 -0
  145. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  146. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +34 -0
  147. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  148. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
  149. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +17 -0
  150. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  151. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte +7 -0
  152. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  153. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte +7 -0
  154. package/dist/templates/todo/apps/web/src/lib/components/ui/dropdown-menu/index.ts +54 -0
  155. package/dist/templates/todo/apps/web/src/lib/components/ui/select/index.ts +37 -0
  156. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-content.svelte +45 -0
  157. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-group-heading.svelte +21 -0
  158. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-group.svelte +17 -0
  159. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-item.svelte +40 -0
  160. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-label.svelte +20 -0
  161. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-portal.svelte +7 -0
  162. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-scroll-down-button.svelte +20 -0
  163. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-scroll-up-button.svelte +20 -0
  164. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-separator.svelte +18 -0
  165. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select-trigger.svelte +29 -0
  166. package/dist/templates/todo/apps/web/src/lib/components/ui/select/select.svelte +11 -0
  167. package/dist/templates/todo/apps/web/src/lib/components/ui/separator/index.ts +7 -0
  168. package/dist/templates/todo/apps/web/src/lib/components/ui/separator/separator.svelte +23 -0
  169. package/dist/templates/todo/apps/web/src/lib/components/ui/skeleton/index.ts +7 -0
  170. package/dist/templates/todo/apps/web/src/lib/components/ui/skeleton/skeleton.svelte +17 -0
  171. package/dist/templates/todo/apps/web/src/lib/components/ui/sonner/index.ts +1 -0
  172. package/dist/templates/todo/apps/web/src/lib/components/ui/sonner/sonner.svelte +34 -0
  173. package/dist/templates/todo/apps/web/src/lib/components/ui/table/index.ts +28 -0
  174. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table-body.svelte +15 -0
  175. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table-caption.svelte +20 -0
  176. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table-cell.svelte +15 -0
  177. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table-footer.svelte +20 -0
  178. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table-head.svelte +15 -0
  179. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table-header.svelte +20 -0
  180. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table-row.svelte +15 -0
  181. package/dist/templates/todo/apps/web/src/lib/components/ui/table/table.svelte +17 -0
  182. package/dist/templates/todo/apps/web/src/lib/components/ui/tabs/index.ts +18 -0
  183. package/dist/templates/todo/apps/web/src/lib/components/ui/tabs/tabs-content.svelte +17 -0
  184. package/dist/templates/todo/apps/web/src/lib/components/ui/tabs/tabs-list.svelte +40 -0
  185. package/dist/templates/todo/apps/web/src/lib/components/ui/tabs/tabs-trigger.svelte +23 -0
  186. package/dist/templates/todo/apps/web/src/lib/components/ui/tabs/tabs.svelte +19 -0
  187. package/dist/templates/todo/apps/web/src/lib/components/ui/tooltip/index.ts +19 -0
  188. package/dist/templates/todo/apps/web/src/lib/components/ui/tooltip/tooltip-content.svelte +52 -0
  189. package/dist/templates/todo/apps/web/src/lib/components/ui/tooltip/tooltip-portal.svelte +7 -0
  190. package/dist/templates/todo/apps/web/src/lib/components/ui/tooltip/tooltip-provider.svelte +7 -0
  191. package/dist/templates/todo/apps/web/src/lib/components/ui/tooltip/tooltip-trigger.svelte +7 -0
  192. package/dist/templates/todo/apps/web/src/lib/components/ui/tooltip/tooltip.svelte +7 -0
  193. package/dist/templates/todo/apps/web/src/lib/i18n/ko.ts +5 -2
  194. package/package.json +2 -2
  195. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/auth.controller.ts +0 -31
  196. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/auth.module.ts +0 -22
  197. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/auth.service.ts +0 -44
  198. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/dto/login.dto.ts +0 -12
  199. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/dto/register.dto.ts +0 -13
  200. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/jwt-auth.guard.ts +0 -5
  201. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/jwt.strategy.ts +0 -23
  202. package/dist/templates/modules/auth-jwt/files/apps/api/src/auth/user.entity.ts +0 -16
  203. package/dist/templates/modules/auth-jwt/files/apps/api/src/migrations/1720200000000-InitUsers.ts +0 -23
  204. package/dist/templates/modules/auth-jwt/module.manifest.json +0 -31
@@ -0,0 +1,34 @@
1
+ import Root from "./dialog.svelte";
2
+ import Portal from "./dialog-portal.svelte";
3
+ import Title from "./dialog-title.svelte";
4
+ import Footer from "./dialog-footer.svelte";
5
+ import Header from "./dialog-header.svelte";
6
+ import Overlay from "./dialog-overlay.svelte";
7
+ import Content from "./dialog-content.svelte";
8
+ import Description from "./dialog-description.svelte";
9
+ import Trigger from "./dialog-trigger.svelte";
10
+ import Close from "./dialog-close.svelte";
11
+
12
+ export {
13
+ Root,
14
+ Title,
15
+ Portal,
16
+ Footer,
17
+ Header,
18
+ Trigger,
19
+ Overlay,
20
+ Content,
21
+ Description,
22
+ Close,
23
+ //
24
+ Root as Dialog,
25
+ Title as DialogTitle,
26
+ Portal as DialogPortal,
27
+ Footer as DialogFooter,
28
+ Header as DialogHeader,
29
+ Trigger as DialogTrigger,
30
+ Overlay as DialogOverlay,
31
+ Content as DialogContent,
32
+ Description as DialogDescription,
33
+ Close as DialogClose,
34
+ };
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+
4
+ let {
5
+ ref = $bindable(null),
6
+ value = $bindable([]),
7
+ ...restProps
8
+ }: DropdownMenuPrimitive.CheckboxGroupProps = $props();
9
+ </script>
10
+
11
+ <DropdownMenuPrimitive.CheckboxGroup
12
+ bind:ref
13
+ bind:value
14
+ data-slot="dropdown-menu-checkbox-group"
15
+ {...restProps}
16
+ />
@@ -0,0 +1,44 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+ import MinusIcon from '@lucide/svelte/icons/minus';
4
+ import CheckIcon from '@lucide/svelte/icons/check';
5
+ import { cn, type WithoutChildrenOrChild } from "$lib/utils.js";
6
+ import type { Snippet } from "svelte";
7
+
8
+ let {
9
+ ref = $bindable(null),
10
+ checked = $bindable(false),
11
+ indeterminate = $bindable(false),
12
+ class: className,
13
+ children: childrenProp,
14
+ ...restProps
15
+ }: WithoutChildrenOrChild<DropdownMenuPrimitive.CheckboxItemProps> & {
16
+ children?: Snippet;
17
+ } = $props();
18
+ </script>
19
+
20
+ <DropdownMenuPrimitive.CheckboxItem
21
+ bind:ref
22
+ bind:checked
23
+ bind:indeterminate
24
+ data-slot="dropdown-menu-checkbox-item"
25
+ class={cn(
26
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
27
+ className
28
+ )}
29
+ {...restProps}
30
+ >
31
+ {#snippet children({ checked, indeterminate })}
32
+ <span
33
+ class="absolute right-2 flex items-center justify-center pointer-events-none"
34
+ data-slot="dropdown-menu-checkbox-item-indicator"
35
+ >
36
+ {#if indeterminate}
37
+ <MinusIcon />
38
+ {:else if checked}
39
+ <CheckIcon />
40
+ {/if}
41
+ </span>
42
+ {@render childrenProp?.()}
43
+ {/snippet}
44
+ </DropdownMenuPrimitive.CheckboxItem>
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ import { cn, type WithoutChildrenOrChild } from "$lib/utils.js";
3
+ import DropdownMenuPortal from "./dropdown-menu-portal.svelte";
4
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
5
+ import type { ComponentProps } from "svelte";
6
+
7
+ let {
8
+ ref = $bindable(null),
9
+ sideOffset = 4,
10
+ align = "start",
11
+ portalProps,
12
+ class: className,
13
+ ...restProps
14
+ }: DropdownMenuPrimitive.ContentProps & {
15
+ portalProps?: WithoutChildrenOrChild<ComponentProps<typeof DropdownMenuPortal>>;
16
+ } = $props();
17
+ </script>
18
+
19
+ <DropdownMenuPortal {...portalProps}>
20
+ <DropdownMenuPrimitive.Content
21
+ bind:ref
22
+ data-slot="dropdown-menu-content"
23
+ {sideOffset}
24
+ {align}
25
+ class={cn(
26
+ "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 w-(--bits-dropdown-menu-anchor-width) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden",
27
+ className
28
+ )}
29
+ {...restProps}
30
+ />
31
+ </DropdownMenuPortal>
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+ import { cn } from "$lib/utils.js";
4
+ import type { ComponentProps } from "svelte";
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ inset,
10
+ ...restProps
11
+ }: ComponentProps<typeof DropdownMenuPrimitive.GroupHeading> & {
12
+ inset?: boolean;
13
+ } = $props();
14
+ </script>
15
+
16
+ <DropdownMenuPrimitive.GroupHeading
17
+ bind:ref
18
+ data-slot="dropdown-menu-group-heading"
19
+ data-inset={inset}
20
+ class={cn("px-2 py-1.5 text-sm font-semibold data-[inset]:ps-8", className)}
21
+ {...restProps}
22
+ />
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+
4
+ let { ref = $bindable(null), ...restProps }: DropdownMenuPrimitive.GroupProps = $props();
5
+ </script>
6
+
7
+ <DropdownMenuPrimitive.Group bind:ref data-slot="dropdown-menu-group" {...restProps} />
@@ -0,0 +1,27 @@
1
+ <script lang="ts">
2
+ import { cn } from "$lib/utils.js";
3
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ inset,
9
+ variant = "default",
10
+ ...restProps
11
+ }: DropdownMenuPrimitive.ItemProps & {
12
+ inset?: boolean;
13
+ variant?: "default" | "destructive";
14
+ } = $props();
15
+ </script>
16
+
17
+ <DropdownMenuPrimitive.Item
18
+ bind:ref
19
+ data-slot="dropdown-menu-item"
20
+ data-inset={inset}
21
+ data-variant={variant}
22
+ class={cn(
23
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
24
+ className
25
+ )}
26
+ {...restProps}
27
+ />
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { cn, type WithElementRef } from "$lib/utils.js";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ inset,
9
+ children,
10
+ ...restProps
11
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
12
+ inset?: boolean;
13
+ } = $props();
14
+ </script>
15
+
16
+ <div
17
+ bind:this={ref}
18
+ data-slot="dropdown-menu-label"
19
+ data-inset={inset}
20
+ class={cn("text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7 data-[inset]:pl-8", className)}
21
+ {...restProps}
22
+ >
23
+ {@render children?.()}
24
+ </div>
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+
4
+ let { ...restProps }: DropdownMenuPrimitive.PortalProps = $props();
5
+ </script>
6
+
7
+ <DropdownMenuPrimitive.Portal {...restProps} />
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+
4
+ let {
5
+ ref = $bindable(null),
6
+ value = $bindable(),
7
+ ...restProps
8
+ }: DropdownMenuPrimitive.RadioGroupProps = $props();
9
+ </script>
10
+
11
+ <DropdownMenuPrimitive.RadioGroup
12
+ bind:ref
13
+ bind:value
14
+ data-slot="dropdown-menu-radio-group"
15
+ {...restProps}
16
+ />
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+ import CheckIcon from '@lucide/svelte/icons/check';
4
+ import { cn, type WithoutChild } from "$lib/utils.js";
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ children: childrenProp,
10
+ ...restProps
11
+ }: WithoutChild<DropdownMenuPrimitive.RadioItemProps> = $props();
12
+ </script>
13
+
14
+ <DropdownMenuPrimitive.RadioItem
15
+ bind:ref
16
+ data-slot="dropdown-menu-radio-item"
17
+ class={cn(
18
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
19
+ className
20
+ )}
21
+ {...restProps}
22
+ >
23
+ {#snippet children({ checked })}
24
+ <span
25
+ class="absolute right-2 flex items-center justify-center pointer-events-none"
26
+ data-slot="dropdown-menu-radio-item-indicator"
27
+ >
28
+ {#if checked}
29
+ <CheckIcon />
30
+ {/if}
31
+ </span>
32
+ {@render childrenProp?.({ checked })}
33
+ {/snippet}
34
+ </DropdownMenuPrimitive.RadioItem>
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+ import { cn } from "$lib/utils.js";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ ...restProps
9
+ }: DropdownMenuPrimitive.SeparatorProps = $props();
10
+ </script>
11
+
12
+ <DropdownMenuPrimitive.Separator
13
+ bind:ref
14
+ data-slot="dropdown-menu-separator"
15
+ class={cn("bg-border -mx-1 my-1 h-px", className)}
16
+ {...restProps}
17
+ />
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import { cn, type WithElementRef } from "$lib/utils.js";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ children,
9
+ ...restProps
10
+ }: WithElementRef<HTMLAttributes<HTMLSpanElement>> = $props();
11
+ </script>
12
+
13
+ <span
14
+ bind:this={ref}
15
+ data-slot="dropdown-menu-shortcut"
16
+ class={cn("text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest", className)}
17
+ {...restProps}
18
+ >
19
+ {@render children?.()}
20
+ </span>
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+ import { cn } from "$lib/utils.js";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ ...restProps
9
+ }: DropdownMenuPrimitive.SubContentProps = $props();
10
+ </script>
11
+
12
+ <DropdownMenuPrimitive.SubContent
13
+ bind:ref
14
+ data-slot="dropdown-menu-sub-content"
15
+ class={cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100 w-auto", className)}
16
+ {...restProps}
17
+ />
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+ import ChevronRightIcon from '@lucide/svelte/icons/chevron-right';
4
+ import { cn } from "$lib/utils.js";
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ inset,
10
+ children,
11
+ ...restProps
12
+ }: DropdownMenuPrimitive.SubTriggerProps & {
13
+ inset?: boolean;
14
+ } = $props();
15
+ </script>
16
+
17
+ <DropdownMenuPrimitive.SubTrigger
18
+ bind:ref
19
+ data-slot="dropdown-menu-sub-trigger"
20
+ data-inset={inset}
21
+ class={cn(
22
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0",
23
+ className
24
+ )}
25
+ {...restProps}
26
+ >
27
+ {@render children?.()}
28
+ <ChevronRightIcon class="ml-auto" />
29
+ </DropdownMenuPrimitive.SubTrigger>
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+
4
+ let { open = $bindable(false), ...restProps }: DropdownMenuPrimitive.SubProps = $props();
5
+ </script>
6
+
7
+ <DropdownMenuPrimitive.Sub bind:open {...restProps} />
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+
4
+ let { ref = $bindable(null), ...restProps }: DropdownMenuPrimitive.TriggerProps = $props();
5
+ </script>
6
+
7
+ <DropdownMenuPrimitive.Trigger bind:ref data-slot="dropdown-menu-trigger" {...restProps} />
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
3
+
4
+ let { open = $bindable(false), ...restProps }: DropdownMenuPrimitive.RootProps = $props();
5
+ </script>
6
+
7
+ <DropdownMenuPrimitive.Root bind:open {...restProps} />
@@ -0,0 +1,54 @@
1
+ import Root from "./dropdown-menu.svelte";
2
+ import Sub from "./dropdown-menu-sub.svelte";
3
+ import CheckboxGroup from "./dropdown-menu-checkbox-group.svelte";
4
+ import CheckboxItem from "./dropdown-menu-checkbox-item.svelte";
5
+ import Content from "./dropdown-menu-content.svelte";
6
+ import Group from "./dropdown-menu-group.svelte";
7
+ import Item from "./dropdown-menu-item.svelte";
8
+ import Label from "./dropdown-menu-label.svelte";
9
+ import RadioGroup from "./dropdown-menu-radio-group.svelte";
10
+ import RadioItem from "./dropdown-menu-radio-item.svelte";
11
+ import Separator from "./dropdown-menu-separator.svelte";
12
+ import Shortcut from "./dropdown-menu-shortcut.svelte";
13
+ import Trigger from "./dropdown-menu-trigger.svelte";
14
+ import SubContent from "./dropdown-menu-sub-content.svelte";
15
+ import SubTrigger from "./dropdown-menu-sub-trigger.svelte";
16
+ import GroupHeading from "./dropdown-menu-group-heading.svelte";
17
+ import Portal from "./dropdown-menu-portal.svelte";
18
+
19
+ export {
20
+ CheckboxGroup,
21
+ CheckboxItem,
22
+ Content,
23
+ Portal,
24
+ Root as DropdownMenu,
25
+ CheckboxGroup as DropdownMenuCheckboxGroup,
26
+ CheckboxItem as DropdownMenuCheckboxItem,
27
+ Content as DropdownMenuContent,
28
+ Portal as DropdownMenuPortal,
29
+ Group as DropdownMenuGroup,
30
+ Item as DropdownMenuItem,
31
+ Label as DropdownMenuLabel,
32
+ RadioGroup as DropdownMenuRadioGroup,
33
+ RadioItem as DropdownMenuRadioItem,
34
+ Separator as DropdownMenuSeparator,
35
+ Shortcut as DropdownMenuShortcut,
36
+ Sub as DropdownMenuSub,
37
+ SubContent as DropdownMenuSubContent,
38
+ SubTrigger as DropdownMenuSubTrigger,
39
+ Trigger as DropdownMenuTrigger,
40
+ GroupHeading as DropdownMenuGroupHeading,
41
+ Group,
42
+ GroupHeading,
43
+ Item,
44
+ Label,
45
+ RadioGroup,
46
+ RadioItem,
47
+ Root,
48
+ Separator,
49
+ Shortcut,
50
+ Sub,
51
+ SubContent,
52
+ SubTrigger,
53
+ Trigger,
54
+ };
@@ -0,0 +1,37 @@
1
+ import Root from "./select.svelte";
2
+ import Group from "./select-group.svelte";
3
+ import Label from "./select-label.svelte";
4
+ import Item from "./select-item.svelte";
5
+ import Content from "./select-content.svelte";
6
+ import Trigger from "./select-trigger.svelte";
7
+ import Separator from "./select-separator.svelte";
8
+ import ScrollDownButton from "./select-scroll-down-button.svelte";
9
+ import ScrollUpButton from "./select-scroll-up-button.svelte";
10
+ import GroupHeading from "./select-group-heading.svelte";
11
+ import Portal from "./select-portal.svelte";
12
+
13
+ export {
14
+ Root,
15
+ Group,
16
+ Label,
17
+ Item,
18
+ Content,
19
+ Trigger,
20
+ Separator,
21
+ ScrollDownButton,
22
+ ScrollUpButton,
23
+ GroupHeading,
24
+ Portal,
25
+ //
26
+ Root as Select,
27
+ Group as SelectGroup,
28
+ Label as SelectLabel,
29
+ Item as SelectItem,
30
+ Content as SelectContent,
31
+ Trigger as SelectTrigger,
32
+ Separator as SelectSeparator,
33
+ ScrollDownButton as SelectScrollDownButton,
34
+ ScrollUpButton as SelectScrollUpButton,
35
+ GroupHeading as SelectGroupHeading,
36
+ Portal as SelectPortal,
37
+ };
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import { Select as SelectPrimitive } from "bits-ui";
3
+ import SelectPortal from "./select-portal.svelte";
4
+ import SelectScrollUpButton from "./select-scroll-up-button.svelte";
5
+ import SelectScrollDownButton from "./select-scroll-down-button.svelte";
6
+ import { cn, type WithoutChild } from "$lib/utils.js";
7
+ import type { ComponentProps } from "svelte";
8
+ import type { WithoutChildrenOrChild } from "$lib/utils.js";
9
+
10
+ let {
11
+ ref = $bindable(null),
12
+ class: className,
13
+ sideOffset = 4,
14
+ portalProps,
15
+ children,
16
+ preventScroll = true,
17
+ ...restProps
18
+ }: WithoutChild<SelectPrimitive.ContentProps> & {
19
+ portalProps?: WithoutChildrenOrChild<ComponentProps<typeof SelectPortal>>;
20
+ } = $props();
21
+ </script>
22
+
23
+ <SelectPortal {...portalProps}>
24
+ <SelectPrimitive.Content
25
+ bind:ref
26
+ {sideOffset}
27
+ {preventScroll}
28
+ data-slot="select-content"
29
+ class={cn(
30
+ "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 relative isolate z-50 overflow-x-hidden overflow-y-auto",
31
+ className
32
+ )}
33
+ {...restProps}
34
+ >
35
+ <SelectScrollUpButton />
36
+ <SelectPrimitive.Viewport
37
+ class={cn(
38
+ "h-(--bits-select-anchor-height) w-full min-w-(--bits-select-anchor-width) scroll-my-1"
39
+ )}
40
+ >
41
+ {@render children?.()}
42
+ </SelectPrimitive.Viewport>
43
+ <SelectScrollDownButton />
44
+ </SelectPrimitive.Content>
45
+ </SelectPortal>
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { Select as SelectPrimitive } from "bits-ui";
3
+ import { cn } from "$lib/utils.js";
4
+ import type { ComponentProps } from "svelte";
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ children,
10
+ ...restProps
11
+ }: ComponentProps<typeof SelectPrimitive.GroupHeading> = $props();
12
+ </script>
13
+
14
+ <SelectPrimitive.GroupHeading
15
+ bind:ref
16
+ data-slot="select-group-heading"
17
+ class={cn("text-muted-foreground px-2 py-1.5 text-xs", className)}
18
+ {...restProps}
19
+ >
20
+ {@render children?.()}
21
+ </SelectPrimitive.GroupHeading>
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { Select as SelectPrimitive } from "bits-ui";
3
+ import { cn } from "$lib/utils.js";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ ...restProps
9
+ }: SelectPrimitive.GroupProps = $props();
10
+ </script>
11
+
12
+ <SelectPrimitive.Group
13
+ bind:ref
14
+ data-slot="select-group"
15
+ class={cn("scroll-my-1 p-1", className)}
16
+ {...restProps}
17
+ />
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ import { Select as SelectPrimitive } from "bits-ui";
3
+ import { cn, type WithoutChild } from "$lib/utils.js";
4
+ import CheckIcon from '@lucide/svelte/icons/check';
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ value,
10
+ label,
11
+ children: childrenProp,
12
+ ...restProps
13
+ }: WithoutChild<SelectPrimitive.ItemProps> = $props();
14
+ </script>
15
+
16
+ <SelectPrimitive.Item
17
+ bind:ref
18
+ {value}
19
+ data-slot="select-item"
20
+ class={cn(
21
+ "focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 focus:bg-accent data-highlighted:bg-accent data-highlighted:text-accent-foreground focus:text-accent-foreground relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
22
+ className
23
+ )}
24
+ {...restProps}
25
+ >
26
+ {#snippet children({ selected, highlighted })}
27
+ <span class="absolute end-2 flex size-3.5 items-center justify-center">
28
+ {#if selected}
29
+ <CheckIcon class="cn-select-item-indicator-icon" />
30
+ {/if}
31
+ </span>
32
+ <span class="flex flex-1 gap-2 shrink-0 whitespace-nowrap">
33
+ {#if childrenProp}
34
+ {@render childrenProp({ selected, highlighted })}
35
+ {:else}
36
+ {label || value}
37
+ {/if}
38
+ </span>
39
+ {/snippet}
40
+ </SelectPrimitive.Item>
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { cn, type WithElementRef } from "$lib/utils.js";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ children,
9
+ ...restProps
10
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {} = $props();
11
+ </script>
12
+
13
+ <div
14
+ bind:this={ref}
15
+ data-slot="select-label"
16
+ class={cn("text-muted-foreground px-1.5 py-1 text-xs", className)}
17
+ {...restProps}
18
+ >
19
+ {@render children?.()}
20
+ </div>
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { Select as SelectPrimitive } from "bits-ui";
3
+
4
+ let { ...restProps }: SelectPrimitive.PortalProps = $props();
5
+ </script>
6
+
7
+ <SelectPrimitive.Portal {...restProps} />
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { Select as SelectPrimitive } from "bits-ui";
3
+ import { cn, type WithoutChildrenOrChild } from "$lib/utils.js";
4
+ import ChevronDownIcon from '@lucide/svelte/icons/chevron-down';
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ ...restProps
10
+ }: WithoutChildrenOrChild<SelectPrimitive.ScrollDownButtonProps> = $props();
11
+ </script>
12
+
13
+ <SelectPrimitive.ScrollDownButton
14
+ bind:ref
15
+ data-slot="select-scroll-down-button"
16
+ class={cn("bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full", className)}
17
+ {...restProps}
18
+ >
19
+ <ChevronDownIcon />
20
+ </SelectPrimitive.ScrollDownButton>