@adriansyah/heroui-svelte 0.0.0-stage → 0.0.2

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 (284) hide show
  1. package/README.md +38 -2
  2. package/dist/components/autocomplete/autocomplete-clear-button.svelte +24 -0
  3. package/dist/components/autocomplete/autocomplete-clear-button.svelte.d.ts +3 -0
  4. package/dist/components/autocomplete/autocomplete-filter.svelte +16 -0
  5. package/dist/components/autocomplete/autocomplete-filter.svelte.d.ts +6 -0
  6. package/dist/components/autocomplete/autocomplete-indicator.svelte +21 -0
  7. package/dist/components/autocomplete/autocomplete-indicator.svelte.d.ts +7 -0
  8. package/dist/components/autocomplete/autocomplete-popover.svelte +19 -0
  9. package/dist/components/autocomplete/autocomplete-popover.svelte.d.ts +4 -0
  10. package/dist/components/autocomplete/autocomplete-trigger.svelte +28 -0
  11. package/dist/components/autocomplete/autocomplete-trigger.svelte.d.ts +6 -0
  12. package/dist/components/autocomplete/autocomplete-value.svelte +65 -0
  13. package/dist/components/autocomplete/autocomplete-value.svelte.d.ts +9 -0
  14. package/dist/components/autocomplete/autocomplete.svelte +52 -0
  15. package/dist/components/autocomplete/autocomplete.svelte.d.ts +9 -0
  16. package/dist/components/autocomplete/index.d.ts +8 -0
  17. package/dist/components/autocomplete/index.js +8 -0
  18. package/dist/components/autocomplete/index.svelte.d.ts +26 -0
  19. package/dist/components/autocomplete/index.svelte.js +69 -0
  20. package/dist/components/avatar/avatar-fallback.svelte +19 -0
  21. package/dist/components/avatar/avatar-fallback.svelte.d.ts +6 -0
  22. package/dist/components/avatar/avatar-image.svelte +18 -0
  23. package/dist/components/avatar/avatar-image.svelte.d.ts +4 -0
  24. package/dist/components/avatar/avatar.svelte +16 -0
  25. package/dist/components/avatar/avatar.svelte.d.ts +6 -0
  26. package/dist/components/avatar/context.svelte.d.ts +7 -0
  27. package/dist/components/avatar/context.svelte.js +8 -0
  28. package/dist/components/avatar/index.d.ts +4 -0
  29. package/dist/components/avatar/index.js +4 -0
  30. package/dist/components/button/button.svelte +51 -0
  31. package/dist/components/button/button.svelte.d.ts +6 -0
  32. package/dist/components/button/index.d.ts +2 -0
  33. package/dist/components/button/index.js +2 -0
  34. package/dist/components/button/index.svelte.d.ts +27 -0
  35. package/dist/components/button/index.svelte.js +28 -0
  36. package/dist/components/button-group/button-group-separator.svelte +20 -0
  37. package/dist/components/button-group/button-group-separator.svelte.d.ts +5 -0
  38. package/dist/components/button-group/button-group.svelte +20 -0
  39. package/dist/components/button-group/button-group.svelte.d.ts +6 -0
  40. package/dist/components/button-group/context.svelte.d.ts +7 -0
  41. package/dist/components/button-group/context.svelte.js +8 -0
  42. package/dist/components/button-group/index.d.ts +3 -0
  43. package/dist/components/button-group/index.js +3 -0
  44. package/dist/components/card/card-content.svelte +19 -0
  45. package/dist/components/card/card-content.svelte.d.ts +5 -0
  46. package/dist/components/card/card-description.svelte +19 -0
  47. package/dist/components/card/card-description.svelte.d.ts +5 -0
  48. package/dist/components/card/card-footer.svelte +19 -0
  49. package/dist/components/card/card-footer.svelte.d.ts +5 -0
  50. package/dist/components/card/card-header.svelte +19 -0
  51. package/dist/components/card/card-header.svelte.d.ts +5 -0
  52. package/dist/components/card/card-title.svelte +19 -0
  53. package/dist/components/card/card-title.svelte.d.ts +5 -0
  54. package/dist/components/card/card.svelte +22 -0
  55. package/dist/components/card/card.svelte.d.ts +6 -0
  56. package/dist/components/card/context.svelte.d.ts +6 -0
  57. package/dist/components/card/context.svelte.js +8 -0
  58. package/dist/components/card/index.d.ts +7 -0
  59. package/dist/components/card/index.js +7 -0
  60. package/dist/components/checkbox/checkbox-content.svelte +26 -0
  61. package/dist/components/checkbox/checkbox-content.svelte.d.ts +4 -0
  62. package/dist/components/checkbox/checkbox-control.svelte +25 -0
  63. package/dist/components/checkbox/checkbox-control.svelte.d.ts +5 -0
  64. package/dist/components/checkbox/checkbox-indicator.svelte +54 -0
  65. package/dist/components/checkbox/checkbox-indicator.svelte.d.ts +5 -0
  66. package/dist/components/checkbox/checkbox.svelte +60 -0
  67. package/dist/components/checkbox/checkbox.svelte.d.ts +8 -0
  68. package/dist/components/checkbox/index.d.ts +4 -0
  69. package/dist/components/checkbox/index.js +4 -0
  70. package/dist/components/close-button/close-button.svelte +17 -0
  71. package/dist/components/close-button/close-button.svelte.d.ts +4 -0
  72. package/dist/components/close-button/index.d.ts +1 -0
  73. package/dist/components/close-button/index.js +1 -0
  74. package/dist/components/collection/collection.svelte +77 -0
  75. package/dist/components/collection/collection.svelte.d.ts +47 -0
  76. package/dist/components/collection/index.d.ts +1 -0
  77. package/dist/components/collection/index.js +1 -0
  78. package/dist/components/description/description.svelte +16 -0
  79. package/dist/components/description/description.svelte.d.ts +6 -0
  80. package/dist/components/description/index.d.ts +1 -0
  81. package/dist/components/description/index.js +1 -0
  82. package/dist/components/empty-state/empty-state.svelte +16 -0
  83. package/dist/components/empty-state/empty-state.svelte.d.ts +6 -0
  84. package/dist/components/empty-state/index.d.ts +1 -0
  85. package/dist/components/empty-state/index.js +1 -0
  86. package/dist/components/field-error/field-error.svelte +29 -0
  87. package/dist/components/field-error/field-error.svelte.d.ts +8 -0
  88. package/dist/components/field-error/index.d.ts +1 -0
  89. package/dist/components/field-error/index.js +1 -0
  90. package/dist/components/fieldset/fieldset-actions.svelte +16 -0
  91. package/dist/components/fieldset/fieldset-actions.svelte.d.ts +5 -0
  92. package/dist/components/fieldset/fieldset-group.svelte +16 -0
  93. package/dist/components/fieldset/fieldset-group.svelte.d.ts +5 -0
  94. package/dist/components/fieldset/fieldset-legend.svelte +16 -0
  95. package/dist/components/fieldset/fieldset-legend.svelte.d.ts +5 -0
  96. package/dist/components/fieldset/fieldset.svelte +16 -0
  97. package/dist/components/fieldset/fieldset.svelte.d.ts +5 -0
  98. package/dist/components/fieldset/index.d.ts +4 -0
  99. package/dist/components/fieldset/index.js +4 -0
  100. package/dist/components/filter/filter-not-found.svelte +11 -0
  101. package/dist/components/filter/filter-not-found.svelte.d.ts +5 -0
  102. package/dist/components/filter/filter-provider.svelte +22 -0
  103. package/dist/components/filter/filter-provider.svelte.d.ts +9 -0
  104. package/dist/components/filter/index.d.ts +3 -0
  105. package/dist/components/filter/index.js +3 -0
  106. package/dist/components/filter/index.svelte.d.ts +17 -0
  107. package/dist/components/filter/index.svelte.js +52 -0
  108. package/dist/components/header/header.svelte +16 -0
  109. package/dist/components/header/header.svelte.d.ts +6 -0
  110. package/dist/components/header/index.d.ts +1 -0
  111. package/dist/components/header/index.js +1 -0
  112. package/dist/components/input/index.d.ts +2 -0
  113. package/dist/components/input/index.js +2 -0
  114. package/dist/components/input/index.svelte.d.ts +32 -0
  115. package/dist/components/input/index.svelte.js +48 -0
  116. package/dist/components/input/input.svelte +66 -0
  117. package/dist/components/input/input.svelte.d.ts +8 -0
  118. package/dist/components/input-group/index.d.ts +5 -0
  119. package/dist/components/input-group/index.js +5 -0
  120. package/dist/components/input-group/input-group-input.svelte +32 -0
  121. package/dist/components/input-group/input-group-input.svelte.d.ts +11 -0
  122. package/dist/components/input-group/input-group-prefix.svelte +24 -0
  123. package/dist/components/input-group/input-group-prefix.svelte.d.ts +5 -0
  124. package/dist/components/input-group/input-group-suffix.svelte +24 -0
  125. package/dist/components/input-group/input-group-suffix.svelte.d.ts +5 -0
  126. package/dist/components/input-group/input-group-textarea.svelte +32 -0
  127. package/dist/components/input-group/input-group-textarea.svelte.d.ts +8 -0
  128. package/dist/components/input-group/input-group.svelte +63 -0
  129. package/dist/components/input-group/input-group.svelte.d.ts +9 -0
  130. package/dist/components/label/index.d.ts +1 -0
  131. package/dist/components/label/index.js +1 -0
  132. package/dist/components/label/label.svelte +25 -0
  133. package/dist/components/label/label.svelte.d.ts +9 -0
  134. package/dist/components/list-box/index.d.ts +5 -0
  135. package/dist/components/list-box/index.js +5 -0
  136. package/dist/components/list-box/index.svelte.d.ts +17 -0
  137. package/dist/components/list-box/index.svelte.js +25 -0
  138. package/dist/components/list-box/list-box-item-indicator.svelte +37 -0
  139. package/dist/components/list-box/list-box-item-indicator.svelte.d.ts +4 -0
  140. package/dist/components/list-box/list-box-item.svelte +83 -0
  141. package/dist/components/list-box/list-box-item.svelte.d.ts +9 -0
  142. package/dist/components/list-box/list-box-section.svelte +13 -0
  143. package/dist/components/list-box/list-box-section.svelte.d.ts +4 -0
  144. package/dist/components/list-box/list-box.svelte +39 -0
  145. package/dist/components/list-box/list-box.svelte.d.ts +8 -0
  146. package/dist/components/modal/index.d.ts +14 -0
  147. package/dist/components/modal/index.js +14 -0
  148. package/dist/components/modal/index.svelte.d.ts +15 -0
  149. package/dist/components/modal/index.svelte.js +16 -0
  150. package/dist/components/modal/modal-backdrop.svelte +28 -0
  151. package/dist/components/modal/modal-backdrop.svelte.d.ts +5 -0
  152. package/dist/components/modal/modal-body.svelte +16 -0
  153. package/dist/components/modal/modal-body.svelte.d.ts +4 -0
  154. package/dist/components/modal/modal-close-trigger.svelte +35 -0
  155. package/dist/components/modal/modal-close-trigger.svelte.d.ts +4 -0
  156. package/dist/components/modal/modal-container.svelte +34 -0
  157. package/dist/components/modal/modal-container.svelte.d.ts +4 -0
  158. package/dist/components/modal/modal-content-template.svelte +19 -0
  159. package/dist/components/modal/modal-content-template.svelte.d.ts +3 -0
  160. package/dist/components/modal/modal-content.svelte +30 -0
  161. package/dist/components/modal/modal-content.svelte.d.ts +4 -0
  162. package/dist/components/modal/modal-dialog.svelte +17 -0
  163. package/dist/components/modal/modal-dialog.svelte.d.ts +4 -0
  164. package/dist/components/modal/modal-footer.svelte +16 -0
  165. package/dist/components/modal/modal-footer.svelte.d.ts +4 -0
  166. package/dist/components/modal/modal-header.svelte +18 -0
  167. package/dist/components/modal/modal-header.svelte.d.ts +4 -0
  168. package/dist/components/modal/modal-heading.svelte +18 -0
  169. package/dist/components/modal/modal-heading.svelte.d.ts +4 -0
  170. package/dist/components/modal/modal-icon.svelte +18 -0
  171. package/dist/components/modal/modal-icon.svelte.d.ts +4 -0
  172. package/dist/components/modal/modal-trigger.svelte +23 -0
  173. package/dist/components/modal/modal-trigger.svelte.d.ts +8 -0
  174. package/dist/components/modal/modal.svelte +21 -0
  175. package/dist/components/modal/modal.svelte.d.ts +6 -0
  176. package/dist/components/pagination/index.d.ts +11 -0
  177. package/dist/components/pagination/index.js +11 -0
  178. package/dist/components/pagination/index.svelte.d.ts +26 -0
  179. package/dist/components/pagination/index.svelte.js +59 -0
  180. package/dist/components/pagination/pagination-content.svelte +17 -0
  181. package/dist/components/pagination/pagination-content.svelte.d.ts +4 -0
  182. package/dist/components/pagination/pagination-ellipsis.svelte +18 -0
  183. package/dist/components/pagination/pagination-ellipsis.svelte.d.ts +4 -0
  184. package/dist/components/pagination/pagination-item.svelte +24 -0
  185. package/dist/components/pagination/pagination-item.svelte.d.ts +9 -0
  186. package/dist/components/pagination/pagination-link.svelte +26 -0
  187. package/dist/components/pagination/pagination-link.svelte.d.ts +7 -0
  188. package/dist/components/pagination/pagination-next-icon.svelte +10 -0
  189. package/dist/components/pagination/pagination-next-icon.svelte.d.ts +4 -0
  190. package/dist/components/pagination/pagination-next.svelte +23 -0
  191. package/dist/components/pagination/pagination-next.svelte.d.ts +4 -0
  192. package/dist/components/pagination/pagination-previous-icon.svelte +10 -0
  193. package/dist/components/pagination/pagination-previous-icon.svelte.d.ts +4 -0
  194. package/dist/components/pagination/pagination-previous.svelte +23 -0
  195. package/dist/components/pagination/pagination-previous.svelte.d.ts +4 -0
  196. package/dist/components/pagination/pagination-summary.svelte +23 -0
  197. package/dist/components/pagination/pagination-summary.svelte.d.ts +9 -0
  198. package/dist/components/pagination/pagination.svelte +40 -0
  199. package/dist/components/pagination/pagination.svelte.d.ts +8 -0
  200. package/dist/components/popover/index.d.ts +7 -0
  201. package/dist/components/popover/index.js +7 -0
  202. package/dist/components/popover/index.svelte.d.ts +23 -0
  203. package/dist/components/popover/index.svelte.js +51 -0
  204. package/dist/components/popover/popover-arrow.svelte +42 -0
  205. package/dist/components/popover/popover-arrow.svelte.d.ts +4 -0
  206. package/dist/components/popover/popover-content.svelte +31 -0
  207. package/dist/components/popover/popover-content.svelte.d.ts +5 -0
  208. package/dist/components/popover/popover-dialog.svelte +13 -0
  209. package/dist/components/popover/popover-dialog.svelte.d.ts +4 -0
  210. package/dist/components/popover/popover-heading.svelte +15 -0
  211. package/dist/components/popover/popover-heading.svelte.d.ts +4 -0
  212. package/dist/components/popover/popover-trigger.svelte +17 -0
  213. package/dist/components/popover/popover-trigger.svelte.d.ts +9 -0
  214. package/dist/components/popover/popover.svelte +33 -0
  215. package/dist/components/popover/popover.svelte.d.ts +11 -0
  216. package/dist/components/search-input/index.d.ts +1 -0
  217. package/dist/components/search-input/index.js +1 -0
  218. package/dist/components/search-input/search-input.svelte +92 -0
  219. package/dist/components/search-input/search-input.svelte.d.ts +9 -0
  220. package/dist/components/separator/index.d.ts +1 -0
  221. package/dist/components/separator/index.js +1 -0
  222. package/dist/components/separator/separator.svelte +9 -0
  223. package/dist/components/separator/separator.svelte.d.ts +6 -0
  224. package/dist/components/spinner/index.d.ts +1 -0
  225. package/dist/components/spinner/index.js +1 -0
  226. package/dist/components/spinner/spinner.svelte +59 -0
  227. package/dist/components/spinner/spinner.svelte.d.ts +9 -0
  228. package/dist/components/surface/index.d.ts +1 -0
  229. package/dist/components/surface/index.js +1 -0
  230. package/dist/components/surface/surface.svelte +15 -0
  231. package/dist/components/surface/surface.svelte.d.ts +6 -0
  232. package/dist/components/table/index.d.ts +11 -0
  233. package/dist/components/table/index.js +11 -0
  234. package/dist/components/table/index.svelte.d.ts +10 -0
  235. package/dist/components/table/index.svelte.js +13 -0
  236. package/dist/components/table/table-body.svelte +20 -0
  237. package/dist/components/table/table-body.svelte.d.ts +5 -0
  238. package/dist/components/table/table-cell.svelte +21 -0
  239. package/dist/components/table/table-cell.svelte.d.ts +4 -0
  240. package/dist/components/table/table-column.svelte +22 -0
  241. package/dist/components/table/table-column.svelte.d.ts +6 -0
  242. package/dist/components/table/table-content.svelte +21 -0
  243. package/dist/components/table/table-content.svelte.d.ts +6 -0
  244. package/dist/components/table/table-empty-state.svelte +13 -0
  245. package/dist/components/table/table-empty-state.svelte.d.ts +26 -0
  246. package/dist/components/table/table-footer.svelte +21 -0
  247. package/dist/components/table/table-footer.svelte.d.ts +5 -0
  248. package/dist/components/table/table-header.svelte +23 -0
  249. package/dist/components/table/table-header.svelte.d.ts +6 -0
  250. package/dist/components/table/table-row.svelte +26 -0
  251. package/dist/components/table/table-row.svelte.d.ts +8 -0
  252. package/dist/components/table/table-scroll-container.svelte +20 -0
  253. package/dist/components/table/table-scroll-container.svelte.d.ts +6 -0
  254. package/dist/components/table/table.svelte +18 -0
  255. package/dist/components/table/table.svelte.d.ts +8 -0
  256. package/dist/components/text-field/index.d.ts +1 -0
  257. package/dist/components/text-field/index.js +1 -0
  258. package/dist/components/text-field/text-field.svelte +60 -0
  259. package/dist/components/text-field/text-field.svelte.d.ts +9 -0
  260. package/dist/components/textarea/index.d.ts +1 -0
  261. package/dist/components/textarea/index.js +1 -0
  262. package/dist/components/textarea/textarea.svelte +27 -0
  263. package/dist/components/textarea/textarea.svelte.d.ts +8 -0
  264. package/dist/icons/arrow-icon.svelte +14 -0
  265. package/dist/icons/arrow-icon.svelte.d.ts +4 -0
  266. package/dist/icons/checkmark-icon.svelte +23 -0
  267. package/dist/icons/checkmark-icon.svelte.d.ts +7 -0
  268. package/dist/icons/chevron-down-icon.svelte +22 -0
  269. package/dist/icons/chevron-down-icon.svelte.d.ts +4 -0
  270. package/dist/icons/chevron-left-icon.svelte +22 -0
  271. package/dist/icons/chevron-left-icon.svelte.d.ts +4 -0
  272. package/dist/icons/chevron-right-icon.svelte +22 -0
  273. package/dist/icons/chevron-right-icon.svelte.d.ts +4 -0
  274. package/dist/icons/close-icon.svelte +22 -0
  275. package/dist/icons/close-icon.svelte.d.ts +4 -0
  276. package/dist/icons/dot-icon.svelte +21 -0
  277. package/dist/icons/dot-icon.svelte.d.ts +4 -0
  278. package/dist/icons/index.d.ts +8 -0
  279. package/dist/icons/index.js +8 -0
  280. package/dist/icons/search-icon.svelte +22 -0
  281. package/dist/icons/search-icon.svelte.d.ts +4 -0
  282. package/dist/index.d.ts +29 -0
  283. package/dist/index.js +29 -0
  284. package/package.json +70 -5
package/README.md CHANGED
@@ -1,3 +1,39 @@
1
- # Temporary Holding Version
1
+ # HeroUI Svelte
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ A Svelte 5 wrapper for [HeroUI](https://heroui.com), bringing HeroUI's styling and component experience to Svelte applications.
4
+
5
+ ## Installation
6
+
7
+ ```sh
8
+ bun add github:adriansyah-kadir/heroui-svelte#release @heroui/styles
9
+ ```
10
+
11
+ ## Setup
12
+
13
+ Import Tailwind CSS and HeroUI styles in your main CSS file:
14
+
15
+ ```css
16
+ @import "tailwindcss";
17
+ @import "@heroui/styles";
18
+
19
+ @source "../../node_modules/heroui-svelte/dist";
20
+ ```
21
+
22
+ Adjust the `@source` path to match your project structure.
23
+
24
+ ## Usage
25
+
26
+ Import components from `heroui-svelte` and use them in your Svelte 5 components.
27
+
28
+ ```svelte
29
+ <script lang="ts">
30
+ import { Button } from "heroui-svelte";
31
+ </script>
32
+
33
+ <Button>Get started</Button>
34
+ ```
35
+
36
+ ## Documentation
37
+
38
+ * [HeroUI](https://heroui.com) — Original design system and component reference.
39
+ * [Storybook](https://adriansyah-kadir.github.io/heroui-svelte/) — Explore this library's Svelte components and examples.
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { CloseIcon, CloseButton, AutocompleteContext } from "../../index.js";
3
+ import { autocompleteVariants } from "@heroui/styles";
4
+ import type { ComponentProps } from "svelte";
5
+
6
+ const props: ComponentProps<typeof CloseButton> = $props();
7
+ const autocomplete = AutocompleteContext.get();
8
+ const list = autocomplete.listboxCtx;
9
+ </script>
10
+
11
+ <button
12
+ {...props}
13
+ disabled={list.noSelected}
14
+ data-empty={list.noSelected}
15
+ onclick={(ev) => {
16
+ ev.preventDefault();
17
+ ev.stopPropagation();
18
+ props.onclick?.(ev);
19
+ list.selected = [];
20
+ }}
21
+ class={autocompleteVariants().clearButton({ class: props.class?.toString() })}
22
+ >
23
+ <CloseIcon />
24
+ </button>
@@ -0,0 +1,3 @@
1
+ declare const AutocompleteClearButton: import("svelte").Component<import("svelte/elements").HTMLButtonAttributes, {}, "">;
2
+ type AutocompleteClearButton = ReturnType<typeof AutocompleteClearButton>;
3
+ export default AutocompleteClearButton;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import type { ComponentProps } from "svelte";
3
+ import FilterProvider from "../filter/filter-provider.svelte";
4
+ import { PopoverContext } from "../popover";
5
+
6
+ let { query = $bindable(""), ...props }: ComponentProps<typeof FilterProvider> =
7
+ $props();
8
+ const popover = PopoverContext.get();
9
+
10
+ $effect(() => {
11
+ if (popover.open) return;
12
+ query = "";
13
+ });
14
+ </script>
15
+
16
+ <FilterProvider bind:query {...props} />
@@ -0,0 +1,6 @@
1
+ declare const AutocompleteFilter: import("svelte").Component<{
2
+ children?: import("svelte").Snippet;
3
+ query?: string;
4
+ } & import("../filter").FilterOpts, {}, "query">;
5
+ type AutocompleteFilter = ReturnType<typeof AutocompleteFilter>;
6
+ export default AutocompleteFilter;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { autocompleteVariants } from "@heroui/styles";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import { ChevronDownIcon } from "../../index.js";
5
+
6
+ type Props = HTMLAttributes<HTMLDivElement> & {
7
+ open?: boolean;
8
+ };
9
+
10
+ const { children, open, ...props }: Props = $props();
11
+ </script>
12
+
13
+ <div
14
+ {...props}
15
+ data-open={open}
16
+ class={autocompleteVariants().indicator({
17
+ class: props.class?.toString(),
18
+ })}
19
+ >
20
+ <ChevronDownIcon />
21
+ </div>
@@ -0,0 +1,7 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ type Props = HTMLAttributes<HTMLDivElement> & {
3
+ open?: boolean;
4
+ };
5
+ declare const AutocompleteIndicator: import("svelte").Component<Props, {}, "">;
6
+ type AutocompleteIndicator = ReturnType<typeof AutocompleteIndicator>;
7
+ export default AutocompleteIndicator;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import { autocompleteVariants } from "@heroui/styles";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import { PopoverContent, AutocompleteContext } from "../../index.js";
5
+
6
+ const props: HTMLAttributes<HTMLDivElement> = $props();
7
+ const autocomplete = AutocompleteContext.get();
8
+ </script>
9
+
10
+ <PopoverContent popover="manual">
11
+ <div
12
+ {...props}
13
+ class={autocompleteVariants(autocomplete.heroui).popover({
14
+ class: props.class?.toString(),
15
+ })}
16
+ >
17
+ {@render props.children?.()}
18
+ </div>
19
+ </PopoverContent>
@@ -0,0 +1,4 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ declare const AutocompletePopover: import("svelte").Component<HTMLAttributes<HTMLDivElement>, {}, "">;
3
+ type AutocompletePopover = ReturnType<typeof AutocompletePopover>;
4
+ export default AutocompletePopover;
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import { PopoverContext } from "../../index.js";
4
+ import { autocompleteVariants } from "@heroui/styles";
5
+
6
+ interface Props extends HTMLAttributes<HTMLDivElement> {}
7
+
8
+ const { children, ...props }: Props = $props();
9
+ const { popover } = PopoverContext.get();
10
+ </script>
11
+
12
+ <div
13
+ {...props}
14
+ role="button"
15
+ tabindex="0"
16
+ data-slot="autocomplete-trigger"
17
+ data-open={popover.open}
18
+ data-popover={popover.node?.popover}
19
+ class={autocompleteVariants().trigger({
20
+ class: [
21
+ props?.class?.toString(),
22
+ "data-[open=true]:[[data-popover=''],[data-popover='auto']]:pointer-events-none",
23
+ ],
24
+ })}
25
+ onclick={(ev) => popover.toggle(undefined, ev.currentTarget)}
26
+ >
27
+ {@render children?.()}
28
+ </div>
@@ -0,0 +1,6 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ interface Props extends HTMLAttributes<HTMLDivElement> {
3
+ }
4
+ declare const AutocompleteTrigger: import("svelte").Component<Props, {}, "">;
5
+ type AutocompleteTrigger = ReturnType<typeof AutocompleteTrigger>;
6
+ export default AutocompleteTrigger;
@@ -0,0 +1,65 @@
1
+ <script lang="ts">
2
+ import { autocompleteVariants, tagVariants } from "@heroui/styles";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import { CloseIcon, ListBoxContext, AutocompleteContext } from "../../index.js";
5
+ import type { Snippet } from "svelte";
6
+
7
+ const {
8
+ children,
9
+ placeholder,
10
+ ...props
11
+ }: Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
12
+ children?: Snippet<[string[]]>;
13
+ placeholder?: string;
14
+ } = $props();
15
+ const autocomplete = AutocompleteContext.get();
16
+ const listBox = ListBoxContext.get();
17
+ const first = $derived(listBox.selected.at(0));
18
+ const tag = $derived(
19
+ tagVariants({
20
+ size: "sm",
21
+ variant:
22
+ autocomplete.heroui.variant === "secondary" ? "surface" : "default",
23
+ }),
24
+ );
25
+ </script>
26
+
27
+ <div
28
+ class={autocompleteVariants().value({
29
+ class: props.class?.toString(),
30
+ })}
31
+ >
32
+ {#if children}
33
+ {@render children(autocomplete.listboxCtx.selected)}
34
+ {:else}
35
+ {@render DefaultChildren()}
36
+ {/if}
37
+ </div>
38
+
39
+ {#snippet DefaultChildren()}
40
+ {#if listBox.opts.multiple && first !== undefined}
41
+ <div class="tag-group">
42
+ <ul class="tag-group__list">
43
+ {#each listBox.selected as value}
44
+ <span class={tag.base()}>
45
+ {value}
46
+ <button
47
+ class={tag.removeButton()}
48
+ onclick={(ev) => {
49
+ ev.preventDefault();
50
+ ev.stopPropagation();
51
+ listBox.setSelected(value, !listBox.isSelected(value));
52
+ }}
53
+ >
54
+ <CloseIcon />
55
+ </button>
56
+ </span>
57
+ {/each}
58
+ </ul>
59
+ </div>
60
+ {:else if first}
61
+ {first}
62
+ {:else}
63
+ {placeholder ?? "-"}
64
+ {/if}
65
+ {/snippet}
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ import type { Snippet } from "svelte";
3
+ type $$ComponentProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
4
+ children?: Snippet<[string[]]>;
5
+ placeholder?: string;
6
+ };
7
+ declare const AutocompleteValue: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type AutocompleteValue = ReturnType<typeof AutocompleteValue>;
9
+ export default AutocompleteValue;
@@ -0,0 +1,52 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import {
4
+ Popover,
5
+ AutocompleteContext,
6
+ type AutocompleteOpts,
7
+ } from "../../index.js";
8
+ import { box } from "svelte-utils";
9
+
10
+ type Props = HTMLAttributes<HTMLElement> &
11
+ Partial<AutocompleteOpts> & {
12
+ onSelected?: (keys: string[]) => any;
13
+ selected?: string[];
14
+ };
15
+
16
+ let {
17
+ selected = $bindable(),
18
+ disabled,
19
+ multiple,
20
+ required,
21
+ name,
22
+ fullWidth,
23
+ variant,
24
+ invalid,
25
+ onSelected,
26
+ offset = 8,
27
+ placement = "bottom",
28
+ ...props
29
+ }: Props = $props();
30
+
31
+ new AutocompleteContext(
32
+ () => ({
33
+ offset,
34
+ placement,
35
+ disabled,
36
+ fullWidth,
37
+ invalid,
38
+ multiple,
39
+ name,
40
+ required,
41
+ variant,
42
+ }),
43
+ box(
44
+ () => selected ?? [],
45
+ (v) => (selected = v),
46
+ ),
47
+ );
48
+ </script>
49
+
50
+ <Popover {offset} {placement}>
51
+ {@render props.children?.()}
52
+ </Popover>
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ import { type AutocompleteOpts } from "../../index.js";
3
+ type Props = HTMLAttributes<HTMLElement> & Partial<AutocompleteOpts> & {
4
+ onSelected?: (keys: string[]) => any;
5
+ selected?: string[];
6
+ };
7
+ declare const Autocomplete: import("svelte").Component<Props, {}, "selected">;
8
+ type Autocomplete = ReturnType<typeof Autocomplete>;
9
+ export default Autocomplete;
@@ -0,0 +1,8 @@
1
+ export { default as AutocompleteClearButton } from "./autocomplete-clear-button.svelte";
2
+ export { default as AutocompleteIndicator } from "./autocomplete-indicator.svelte";
3
+ export { default as AutocompletePopover } from "./autocomplete-popover.svelte";
4
+ export { default as AutocompleteTrigger } from "./autocomplete-trigger.svelte";
5
+ export { default as AutocompleteValue } from "./autocomplete-value.svelte";
6
+ export { default as AutocompleteFilter } from "./autocomplete-filter.svelte";
7
+ export { default as Autocomplete } from "./autocomplete.svelte";
8
+ export * from "./index.svelte.js";
@@ -0,0 +1,8 @@
1
+ export { default as AutocompleteClearButton } from "./autocomplete-clear-button.svelte";
2
+ export { default as AutocompleteIndicator } from "./autocomplete-indicator.svelte";
3
+ export { default as AutocompletePopover } from "./autocomplete-popover.svelte";
4
+ export { default as AutocompleteTrigger } from "./autocomplete-trigger.svelte";
5
+ export { default as AutocompleteValue } from "./autocomplete-value.svelte";
6
+ export { default as AutocompleteFilter } from "./autocomplete-filter.svelte";
7
+ export { default as Autocomplete } from "./autocomplete.svelte";
8
+ export * from "./index.svelte.js";
@@ -0,0 +1,26 @@
1
+ import type { AutocompleteVariants } from "@heroui/styles";
2
+ import { Context, type Box, type Getter } from "svelte-utils";
3
+ import { ListBoxContext, PopoverContext, type ListBoxOpts, type PopoverContextOpts } from "../../index.js";
4
+ export type AutocompleteOpts = ListBoxOpts & AutocompleteVariants & PopoverContextOpts & {
5
+ invalid?: boolean;
6
+ };
7
+ export declare class AutocompleteContext extends Context {
8
+ opts: AutocompleteOpts;
9
+ popoverCtx: PopoverContext;
10
+ listboxCtx: ListBoxContext;
11
+ constructor(opts: Getter<AutocompleteOpts>, selected: Box<string[]>);
12
+ autoCloseOnFocusLost(): () => void;
13
+ autoCloseOnSingleSelect(): void;
14
+ close(): void;
15
+ open(source?: HTMLElement): void;
16
+ toggle(source?: HTMLElement): void;
17
+ get props(): {
18
+ "data-disabled": boolean | undefined;
19
+ "data-required": boolean | undefined;
20
+ "data-invalid": boolean | undefined;
21
+ };
22
+ get heroui(): {
23
+ variant: "primary" | "secondary" | undefined;
24
+ fullWidth: boolean | undefined;
25
+ };
26
+ }
@@ -0,0 +1,69 @@
1
+ import { Context, isEventTargetInAny, watch } from "svelte-utils";
2
+ import { ListBoxContext, PopoverContext } from "../../index.js";
3
+ export class AutocompleteContext extends Context {
4
+ opts;
5
+ popoverCtx;
6
+ listboxCtx;
7
+ constructor(opts, selected) {
8
+ super();
9
+ this.opts = $derived.by(opts);
10
+ this.popoverCtx = new PopoverContext(opts);
11
+ this.listboxCtx = new ListBoxContext(opts, selected);
12
+ this.autoCloseOnFocusLost();
13
+ this.autoCloseOnSingleSelect();
14
+ }
15
+ autoCloseOnFocusLost() {
16
+ const handleWindowClick = (ev) => {
17
+ if (!this.popoverCtx.popover.node?.matches(":popover-open"))
18
+ return;
19
+ if (isEventTargetInAny(ev, this.popoverCtx.popover.anchor, this.popoverCtx.popover.node)) {
20
+ return;
21
+ }
22
+ this.close();
23
+ };
24
+ const handleEscapeKey = (ev) => {
25
+ const focused = this.popoverCtx.popover.node?.matches(":focus-within") || this.popoverCtx.popover.anchor?.matches(":focus-within");
26
+ if (ev.code !== "Escape" || !focused)
27
+ return;
28
+ ev.preventDefault();
29
+ ev.stopImmediatePropagation();
30
+ this.close();
31
+ this.popoverCtx.popover.anchor?.focus();
32
+ };
33
+ window.addEventListener("click", handleWindowClick);
34
+ window.addEventListener("keydown", handleEscapeKey);
35
+ return () => {
36
+ window.removeEventListener("click", handleWindowClick);
37
+ window.removeEventListener("keydown", handleEscapeKey);
38
+ };
39
+ }
40
+ autoCloseOnSingleSelect() {
41
+ watch(() => this.listboxCtx.selected, () => {
42
+ if (this.opts.multiple)
43
+ return;
44
+ this.close();
45
+ });
46
+ }
47
+ close() {
48
+ this.popoverCtx.popover.hide();
49
+ }
50
+ open(source) {
51
+ this.popoverCtx.popover.node?.showPopover({ source });
52
+ }
53
+ toggle(source) {
54
+ this.popoverCtx.popover.node?.togglePopover({ source });
55
+ }
56
+ get props() {
57
+ return {
58
+ "data-disabled": this.opts.disabled,
59
+ "data-required": this.opts.required,
60
+ "data-invalid": this.opts.invalid
61
+ };
62
+ }
63
+ get heroui() {
64
+ return {
65
+ variant: this.opts.variant,
66
+ fullWidth: this.opts.fullWidth
67
+ };
68
+ }
69
+ }
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import { AvatarContext, type AvatarOpts } from "./context.svelte";
4
+ import { avatarVariants } from "@heroui/styles";
5
+
6
+ type Props = AvatarOpts & HTMLAttributes<HTMLDivElement>;
7
+
8
+ const props: Props = $props();
9
+ const ctx = AvatarContext.get();
10
+ </script>
11
+
12
+ <div
13
+ class={avatarVariants().fallback({
14
+ ...ctx.opts,
15
+ class: props.class?.toString(),
16
+ })}
17
+ >
18
+ {@render props.children?.()}
19
+ </div>
@@ -0,0 +1,6 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ import { type AvatarOpts } from "./context.svelte";
3
+ type Props = AvatarOpts & HTMLAttributes<HTMLDivElement>;
4
+ declare const AvatarFallback: import("svelte").Component<Props, {}, "">;
5
+ type AvatarFallback = ReturnType<typeof AvatarFallback>;
6
+ export default AvatarFallback;
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ import type { HTMLImgAttributes } from "svelte/elements";
3
+ import { AvatarContext } from "./context.svelte";
4
+ import { avatarVariants } from "@heroui/styles";
5
+
6
+ type Props = HTMLImgAttributes;
7
+
8
+ const props: Props = $props();
9
+ const ctx = AvatarContext.get();
10
+ </script>
11
+
12
+ <img
13
+ {...props}
14
+ class={avatarVariants().image({
15
+ ...ctx.opts,
16
+ class: props.class?.toString(),
17
+ })}
18
+ />
@@ -0,0 +1,4 @@
1
+ import type { HTMLImgAttributes } from "svelte/elements";
2
+ declare const AvatarImage: import("svelte").Component<HTMLImgAttributes, {}, "">;
3
+ type AvatarImage = ReturnType<typeof AvatarImage>;
4
+ export default AvatarImage;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import { AvatarContext, type AvatarOpts } from "./context.svelte";
4
+ import { avatarVariants } from "@heroui/styles";
5
+
6
+ type Props = AvatarOpts & HTMLAttributes<HTMLDivElement>;
7
+
8
+ const props: Props = $props();
9
+ const ctx = new AvatarContext(() => props);
10
+ </script>
11
+
12
+ <div
13
+ class={avatarVariants().base({ ...ctx.opts, class: props.class?.toString() })}
14
+ >
15
+ {@render props.children?.()}
16
+ </div>
@@ -0,0 +1,6 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ import { type AvatarOpts } from "./context.svelte";
3
+ type Props = AvatarOpts & HTMLAttributes<HTMLDivElement>;
4
+ declare const Avatar: import("svelte").Component<Props, {}, "">;
5
+ type Avatar = ReturnType<typeof Avatar>;
6
+ export default Avatar;
@@ -0,0 +1,7 @@
1
+ import type { AvatarVariants } from "@heroui/styles";
2
+ import { Context, type Getter } from "svelte-utils";
3
+ export type AvatarOpts = AvatarVariants;
4
+ export declare class AvatarContext extends Context {
5
+ readonly opts: AvatarOpts;
6
+ constructor(opts: Getter<AvatarOpts>);
7
+ }
@@ -0,0 +1,8 @@
1
+ import { Context } from "svelte-utils";
2
+ export class AvatarContext extends Context {
3
+ opts;
4
+ constructor(opts) {
5
+ super();
6
+ this.opts = $derived.by(opts);
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ export { default as Avatar } from "./avatar.svelte";
2
+ export { default as AvatarImage } from "./avatar-image.svelte";
3
+ export { default as AvatarFallback } from "./avatar-fallback.svelte";
4
+ export * from "./context.svelte";
@@ -0,0 +1,4 @@
1
+ export { default as Avatar } from "./avatar.svelte";
2
+ export { default as AvatarImage } from "./avatar-image.svelte";
3
+ export { default as AvatarFallback } from "./avatar-fallback.svelte";
4
+ export * from "./context.svelte";
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ import { buttonVariants } from "@heroui/styles";
3
+ import type { HTMLButtonAttributes } from "svelte/elements";
4
+ import { type ButtonOpts, ButtonContext, Spinner } from "../../index.js";
5
+ import { useRipples } from "svelte-utils";
6
+
7
+ const {
8
+ focused,
9
+ hovered,
10
+ pending,
11
+ pressed,
12
+ disabled,
13
+ isIconOnly,
14
+ fullWidth,
15
+ size,
16
+ variant,
17
+ ...props
18
+ }: ButtonOpts & HTMLButtonAttributes = $props();
19
+
20
+ const btn = new ButtonContext(() => ({
21
+ disabled,
22
+ focused,
23
+ fullWidth,
24
+ hovered,
25
+ isIconOnly,
26
+ pending,
27
+ pressed,
28
+ size,
29
+ variant,
30
+ }));
31
+ </script>
32
+
33
+ <button
34
+ {...props}
35
+ {...btn.props}
36
+ {@attach useRipples()}
37
+ disabled={disabled ?? pending}
38
+ class={buttonVariants({
39
+ ...btn.heroui,
40
+ class: props.class?.toString(),
41
+ })}
42
+ >
43
+ {@render Children()}
44
+ </button>
45
+
46
+ {#snippet Children()}
47
+ {#if pending}
48
+ <Spinner color="current" size="sm" />
49
+ {/if}
50
+ {@render props.children?.()}
51
+ {/snippet}
@@ -0,0 +1,6 @@
1
+ import type { HTMLButtonAttributes } from "svelte/elements";
2
+ import { type ButtonOpts } from "../../index.js";
3
+ type $$ComponentProps = ButtonOpts & HTMLButtonAttributes;
4
+ declare const Button: import("svelte").Component<$$ComponentProps, {}, "">;
5
+ type Button = ReturnType<typeof Button>;
6
+ export default Button;
@@ -0,0 +1,2 @@
1
+ export { default as Button } from "./button.svelte";
2
+ export * from "./index.svelte";
@@ -0,0 +1,2 @@
1
+ export { default as Button } from "./button.svelte";
2
+ export * from "./index.svelte";
@@ -0,0 +1,27 @@
1
+ import type { ButtonVariants } from "@heroui/styles";
2
+ import { Context, type Getter } from "svelte-utils";
3
+ export type ButtonOpts = {
4
+ focused?: boolean;
5
+ hovered?: boolean;
6
+ pending?: boolean;
7
+ pressed?: boolean;
8
+ disabled?: boolean;
9
+ } & ButtonVariants;
10
+ export declare class ButtonContext extends Context {
11
+ readonly opts: ButtonOpts;
12
+ constructor(opts: Getter<ButtonOpts>);
13
+ get props(): {
14
+ "data-pending"?: boolean | undefined;
15
+ "data-disabled": boolean | undefined;
16
+ "data-focused": boolean | undefined;
17
+ "data-pressed": boolean | undefined;
18
+ "data-focus-visible": boolean | undefined;
19
+ "data-hovered": boolean | undefined;
20
+ };
21
+ get heroui(): {
22
+ fullWidth: boolean | undefined;
23
+ isIconOnly: boolean | undefined;
24
+ size: "lg" | "md" | "sm" | undefined;
25
+ variant: "primary" | "secondary" | "danger" | "danger-soft" | "ghost" | "outline" | "tertiary" | undefined;
26
+ };
27
+ }