kosui 0.0.7

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 (209) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +3 -0
  3. package/dist/alert/alert.svelte +28 -0
  4. package/dist/alert/alert.svelte.d.ts +5 -0
  5. package/dist/alert/index.d.ts +1 -0
  6. package/dist/alert/index.js +1 -0
  7. package/dist/autocomplete/autocomplete-content.svelte +47 -0
  8. package/dist/autocomplete/autocomplete-content.svelte.d.ts +10 -0
  9. package/dist/autocomplete/autocomplete-context.svelte.d.ts +12 -0
  10. package/dist/autocomplete/autocomplete-context.svelte.js +34 -0
  11. package/dist/autocomplete/autocomplete-input.svelte +43 -0
  12. package/dist/autocomplete/autocomplete-input.svelte.d.ts +7 -0
  13. package/dist/autocomplete/autocomplete-item.svelte +68 -0
  14. package/dist/autocomplete/autocomplete-item.svelte.d.ts +11 -0
  15. package/dist/autocomplete/autocomplete.svelte +20 -0
  16. package/dist/autocomplete/autocomplete.svelte.d.ts +8 -0
  17. package/dist/autocomplete/index.d.ts +4 -0
  18. package/dist/autocomplete/index.js +4 -0
  19. package/dist/avatar/avatar.svelte +47 -0
  20. package/dist/avatar/avatar.svelte.d.ts +8 -0
  21. package/dist/avatar/index.d.ts +1 -0
  22. package/dist/avatar/index.js +1 -0
  23. package/dist/badge/badge.svelte +43 -0
  24. package/dist/badge/badge.svelte.d.ts +9 -0
  25. package/dist/badge/index.d.ts +1 -0
  26. package/dist/badge/index.js +1 -0
  27. package/dist/base.d.ts +21 -0
  28. package/dist/base.js +70 -0
  29. package/dist/bindable.svelte.d.ts +7 -0
  30. package/dist/bindable.svelte.js +25 -0
  31. package/dist/box/box.svelte +42 -0
  32. package/dist/box/box.svelte.d.ts +12 -0
  33. package/dist/box/index.d.ts +1 -0
  34. package/dist/box/index.js +1 -0
  35. package/dist/breadcrumbs/breadcrumbs.svelte +39 -0
  36. package/dist/breadcrumbs/breadcrumbs.svelte.d.ts +13 -0
  37. package/dist/breadcrumbs/index.d.ts +1 -0
  38. package/dist/breadcrumbs/index.js +1 -0
  39. package/dist/button/button.svelte +70 -0
  40. package/dist/button/button.svelte.d.ts +13 -0
  41. package/dist/button/index.d.ts +1 -0
  42. package/dist/button/index.js +1 -0
  43. package/dist/chip/chip.svelte +57 -0
  44. package/dist/chip/chip.svelte.d.ts +11 -0
  45. package/dist/chip/index.d.ts +1 -0
  46. package/dist/chip/index.js +1 -0
  47. package/dist/command/action.svelte.d.ts +35 -0
  48. package/dist/command/action.svelte.js +76 -0
  49. package/dist/command/command-content.svelte +15 -0
  50. package/dist/command/command-content.svelte.d.ts +8 -0
  51. package/dist/command/command-context.svelte.d.ts +5 -0
  52. package/dist/command/command-context.svelte.js +13 -0
  53. package/dist/command/command-input.svelte +44 -0
  54. package/dist/command/command-input.svelte.d.ts +7 -0
  55. package/dist/command/command-item.svelte +66 -0
  56. package/dist/command/command-item.svelte.d.ts +11 -0
  57. package/dist/command/command-search.svelte +29 -0
  58. package/dist/command/command-search.svelte.d.ts +5 -0
  59. package/dist/command/command.svelte +19 -0
  60. package/dist/command/command.svelte.d.ts +8 -0
  61. package/dist/command/commander.svelte +107 -0
  62. package/dist/command/commander.svelte.d.ts +9 -0
  63. package/dist/command/index.d.ts +8 -0
  64. package/dist/command/index.js +8 -0
  65. package/dist/common/divider.svelte +13 -0
  66. package/dist/common/divider.svelte.d.ts +6 -0
  67. package/dist/common/header.svelte +35 -0
  68. package/dist/common/header.svelte.d.ts +10 -0
  69. package/dist/common/index.d.ts +3 -0
  70. package/dist/common/index.js +3 -0
  71. package/dist/common/item-context.svelte.d.ts +12 -0
  72. package/dist/common/item-context.svelte.js +77 -0
  73. package/dist/dialog/dialog-button.svelte +25 -0
  74. package/dist/dialog/dialog-button.svelte.d.ts +32 -0
  75. package/dist/dialog/dialog.svelte +69 -0
  76. package/dist/dialog/dialog.svelte.d.ts +37 -0
  77. package/dist/dialog/dialoguer-context.svelte.d.ts +53 -0
  78. package/dist/dialog/dialoguer-context.svelte.js +85 -0
  79. package/dist/dialog/dialoguer.svelte +65 -0
  80. package/dist/dialog/dialoguer.svelte.d.ts +7 -0
  81. package/dist/dialog/index.d.ts +4 -0
  82. package/dist/dialog/index.js +4 -0
  83. package/dist/event-manager.d.ts +15 -0
  84. package/dist/event-manager.js +47 -0
  85. package/dist/fab/fab.svelte +28 -0
  86. package/dist/fab/fab.svelte.d.ts +6 -0
  87. package/dist/fab/index.d.ts +1 -0
  88. package/dist/fab/index.js +1 -0
  89. package/dist/index.d.ts +39 -0
  90. package/dist/index.js +39 -0
  91. package/dist/input/index.d.ts +1 -0
  92. package/dist/input/index.js +1 -0
  93. package/dist/input/input.svelte +41 -0
  94. package/dist/input/input.svelte.d.ts +7 -0
  95. package/dist/link/index.d.ts +1 -0
  96. package/dist/link/index.js +1 -0
  97. package/dist/link/link.svelte +51 -0
  98. package/dist/link/link.svelte.d.ts +10 -0
  99. package/dist/markdown/index.d.ts +25 -0
  100. package/dist/markdown/index.js +25 -0
  101. package/dist/markdown/markdown-blockquote.svelte +14 -0
  102. package/dist/markdown/markdown-blockquote.svelte.d.ts +7 -0
  103. package/dist/markdown/markdown-br.svelte +12 -0
  104. package/dist/markdown/markdown-br.svelte.d.ts +7 -0
  105. package/dist/markdown/markdown-code.svelte +14 -0
  106. package/dist/markdown/markdown-code.svelte.d.ts +7 -0
  107. package/dist/markdown/markdown-codespan.svelte +15 -0
  108. package/dist/markdown/markdown-codespan.svelte.d.ts +7 -0
  109. package/dist/markdown/markdown-context.svelte.d.ts +26 -0
  110. package/dist/markdown/markdown-context.svelte.js +30 -0
  111. package/dist/markdown/markdown-def.svelte +15 -0
  112. package/dist/markdown/markdown-def.svelte.d.ts +7 -0
  113. package/dist/markdown/markdown-del.svelte +14 -0
  114. package/dist/markdown/markdown-del.svelte.d.ts +7 -0
  115. package/dist/markdown/markdown-em.svelte +14 -0
  116. package/dist/markdown/markdown-em.svelte.d.ts +7 -0
  117. package/dist/markdown/markdown-escape.svelte +8 -0
  118. package/dist/markdown/markdown-escape.svelte.d.ts +5 -0
  119. package/dist/markdown/markdown-heading.svelte +16 -0
  120. package/dist/markdown/markdown-heading.svelte.d.ts +7 -0
  121. package/dist/markdown/markdown-hr.svelte +12 -0
  122. package/dist/markdown/markdown-hr.svelte.d.ts +7 -0
  123. package/dist/markdown/markdown-html.svelte +9 -0
  124. package/dist/markdown/markdown-html.svelte.d.ts +5 -0
  125. package/dist/markdown/markdown-image.svelte +12 -0
  126. package/dist/markdown/markdown-image.svelte.d.ts +7 -0
  127. package/dist/markdown/markdown-link.svelte +15 -0
  128. package/dist/markdown/markdown-link.svelte.d.ts +7 -0
  129. package/dist/markdown/markdown-list-item.svelte +14 -0
  130. package/dist/markdown/markdown-list-item.svelte.d.ts +7 -0
  131. package/dist/markdown/markdown-list.svelte +19 -0
  132. package/dist/markdown/markdown-list.svelte.d.ts +7 -0
  133. package/dist/markdown/markdown-paragraph.svelte +16 -0
  134. package/dist/markdown/markdown-paragraph.svelte.d.ts +7 -0
  135. package/dist/markdown/markdown-space.svelte +8 -0
  136. package/dist/markdown/markdown-space.svelte.d.ts +5 -0
  137. package/dist/markdown/markdown-strong.svelte +15 -0
  138. package/dist/markdown/markdown-strong.svelte.d.ts +7 -0
  139. package/dist/markdown/markdown-table-cell.svelte +16 -0
  140. package/dist/markdown/markdown-table-cell.svelte.d.ts +7 -0
  141. package/dist/markdown/markdown-table.svelte +34 -0
  142. package/dist/markdown/markdown-table.svelte.d.ts +7 -0
  143. package/dist/markdown/markdown-text.svelte +8 -0
  144. package/dist/markdown/markdown-text.svelte.d.ts +5 -0
  145. package/dist/markdown/markdown-token.svelte +25 -0
  146. package/dist/markdown/markdown-token.svelte.d.ts +7 -0
  147. package/dist/markdown/markdown-tokens.svelte +13 -0
  148. package/dist/markdown/markdown-tokens.svelte.d.ts +7 -0
  149. package/dist/markdown/markdown.svelte +186 -0
  150. package/dist/markdown/markdown.svelte.d.ts +31 -0
  151. package/dist/menu/index.d.ts +7 -0
  152. package/dist/menu/index.js +7 -0
  153. package/dist/menu/menu-actions.svelte +51 -0
  154. package/dist/menu/menu-actions.svelte.d.ts +7 -0
  155. package/dist/menu/menu-content.svelte +47 -0
  156. package/dist/menu/menu-content.svelte.d.ts +10 -0
  157. package/dist/menu/menu-context.svelte.d.ts +18 -0
  158. package/dist/menu/menu-context.svelte.js +118 -0
  159. package/dist/menu/menu-item.svelte +85 -0
  160. package/dist/menu/menu-item.svelte.d.ts +11 -0
  161. package/dist/menu/menu-trigger-button.svelte +31 -0
  162. package/dist/menu/menu-trigger-button.svelte.d.ts +5 -0
  163. package/dist/menu/menu-trigger.svelte +42 -0
  164. package/dist/menu/menu-trigger.svelte.d.ts +10 -0
  165. package/dist/menu/menu.svelte +29 -0
  166. package/dist/menu/menu.svelte.d.ts +9 -0
  167. package/dist/merge-props.d.ts +13 -0
  168. package/dist/merge-props.js +84 -0
  169. package/dist/modal/index.d.ts +1 -0
  170. package/dist/modal/index.js +1 -0
  171. package/dist/modal/modal.svelte +123 -0
  172. package/dist/modal/modal.svelte.d.ts +11 -0
  173. package/dist/ordered-html-elements.d.ts +7 -0
  174. package/dist/ordered-html-elements.js +29 -0
  175. package/dist/popover/index.d.ts +1 -0
  176. package/dist/popover/index.js +1 -0
  177. package/dist/popover/popover.svelte +184 -0
  178. package/dist/popover/popover.svelte.d.ts +18 -0
  179. package/dist/portal/index.d.ts +1 -0
  180. package/dist/portal/index.js +1 -0
  181. package/dist/portal/portal.svelte +12 -0
  182. package/dist/portal/portal.svelte.d.ts +8 -0
  183. package/dist/portal/proxy.svelte +10 -0
  184. package/dist/portal/proxy.svelte.d.ts +7 -0
  185. package/dist/progress/circular-progress.svelte +86 -0
  186. package/dist/progress/circular-progress.svelte.d.ts +13 -0
  187. package/dist/progress/index.d.ts +1 -0
  188. package/dist/progress/index.js +1 -0
  189. package/dist/shortcut/index.d.ts +2 -0
  190. package/dist/shortcut/index.js +2 -0
  191. package/dist/shortcut/shortcut-badge.svelte +41 -0
  192. package/dist/shortcut/shortcut-badge.svelte.d.ts +11 -0
  193. package/dist/shortcut/shortcut.d.ts +29 -0
  194. package/dist/shortcut/shortcut.js +95 -0
  195. package/dist/toggle/index.d.ts +2 -0
  196. package/dist/toggle/index.js +2 -0
  197. package/dist/toggle/toggle-button.svelte +60 -0
  198. package/dist/toggle/toggle-button.svelte.d.ts +32 -0
  199. package/dist/toggle/toggle-context.svelte.d.ts +9 -0
  200. package/dist/toggle/toggle-context.svelte.js +32 -0
  201. package/dist/toggle/toggle-group.svelte +41 -0
  202. package/dist/toggle/toggle-group.svelte.d.ts +32 -0
  203. package/dist/tooltip/index.d.ts +1 -0
  204. package/dist/tooltip/index.js +1 -0
  205. package/dist/tooltip/tooltip.svelte +94 -0
  206. package/dist/tooltip/tooltip.svelte.d.ts +25 -0
  207. package/dist/utils.d.ts +43 -0
  208. package/dist/utils.js +72 -0
  209. package/package.json +76 -0
@@ -0,0 +1,7 @@
1
+ import type { Snippet } from "svelte";
2
+ type Props = {
3
+ children: Snippet;
4
+ };
5
+ declare const Dialoguer: import("svelte").Component<Props, {}, "">;
6
+ type Dialoguer = ReturnType<typeof Dialoguer>;
7
+ export default Dialoguer;
@@ -0,0 +1,4 @@
1
+ export { default as DialogButton, type DialogButtonProps, } from "./dialog-button.svelte";
2
+ export { default as Dialog, type DialogProps } from "./dialog.svelte";
3
+ export { getDialoguerContext, setDialoguerContext, } from "./dialoguer-context.svelte";
4
+ export { default as Dialoguer } from "./dialoguer.svelte";
@@ -0,0 +1,4 @@
1
+ export { default as DialogButton, } from "./dialog-button.svelte";
2
+ export { default as Dialog } from "./dialog.svelte";
3
+ export { getDialoguerContext, setDialoguerContext, } from "./dialoguer-context.svelte";
4
+ export { default as Dialoguer } from "./dialoguer.svelte";
@@ -0,0 +1,15 @@
1
+ import type { EventHandler } from "svelte/elements";
2
+ import { noop } from "./utils";
3
+ type EventType = keyof DocumentEventMap;
4
+ type Listener<K extends EventType> = EventHandler<DocumentEventMap[K]>;
5
+ /**
6
+ * Registers event listeners on `window.document` and triggers them in reverse
7
+ * order.
8
+ */
9
+ export declare class EventManager {
10
+ #private;
11
+ on<K extends EventType>(type: K, listener?: Listener<K>): typeof noop;
12
+ remove<K extends EventType>(type: K, listener?: Listener<K>): void;
13
+ destroy(): void;
14
+ }
15
+ export {};
@@ -0,0 +1,47 @@
1
+ import { on } from "svelte/events";
2
+ import { runEventHandlers } from "./merge-props";
3
+ import { noop } from "./utils";
4
+ function entries(obj) {
5
+ return Object.entries(obj);
6
+ }
7
+ /**
8
+ * Registers event listeners on `window.document` and triggers them in reverse
9
+ * order.
10
+ */
11
+ export class EventManager {
12
+ #listeners = {};
13
+ #destroyers = {};
14
+ on(type, listener) {
15
+ if (listener === undefined)
16
+ return noop;
17
+ this.#listeners[type] ??= [];
18
+ if (this.#listeners[type].length === 0) {
19
+ this.#destroyers[type] = on(document, type, (event) => {
20
+ runEventHandlers(document, event, ...this.#listeners[type]);
21
+ });
22
+ }
23
+ this.#listeners[type].unshift(listener);
24
+ return () => this.remove(type, listener);
25
+ }
26
+ remove(type, listener) {
27
+ if (listener === undefined || this.#listeners[type] === undefined) {
28
+ return;
29
+ }
30
+ const index = this.#listeners[type].indexOf(listener);
31
+ if (index > -1) {
32
+ this.#listeners[type].splice(index, 1);
33
+ }
34
+ if (this.#listeners[type].length === 0) {
35
+ this.#destroyers[type]?.();
36
+ delete this.#destroyers[type];
37
+ delete this.#listeners[type];
38
+ }
39
+ }
40
+ destroy() {
41
+ this.#listeners = {};
42
+ for (const [type, destroy] of entries(this.#destroyers)) {
43
+ destroy?.();
44
+ delete this.#destroyers[type];
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import { twMerge } from "tailwind-merge";
3
+ import { Button, type ButtonProps } from "../button";
4
+ import { type ElementRef } from "../utils";
5
+
6
+ export type FabProps = {} & ElementRef & ButtonProps;
7
+
8
+ let {
9
+ el = $bindable(),
10
+ class: className,
11
+ icon,
12
+ size = 20,
13
+ variant = "elevated",
14
+ shape = "circle",
15
+ ...restProps
16
+ }: FabProps = $props();
17
+ </script>
18
+
19
+ <div class="grow"></div>
20
+ <Button
21
+ bind:el
22
+ class={twMerge("sticky bottom-0 ml-auto p-4 backdrop-blur-sm", className)}
23
+ {variant}
24
+ {shape}
25
+ {icon}
26
+ {size}
27
+ {...restProps}
28
+ />
@@ -0,0 +1,6 @@
1
+ import { type ButtonProps } from "../button";
2
+ import { type ElementRef } from "../utils";
3
+ export type FabProps = {} & ElementRef & ButtonProps;
4
+ declare const Fab: import("svelte").Component<FabProps, {}, "el">;
5
+ type Fab = ReturnType<typeof Fab>;
6
+ export default Fab;
@@ -0,0 +1 @@
1
+ export { default as Fab } from "./fab.svelte";
@@ -0,0 +1 @@
1
+ export { default as Fab } from "./fab.svelte";
@@ -0,0 +1,39 @@
1
+ import { EventManager } from "./event-manager";
2
+ /**
3
+ * A global event manager. Register event listeners with the `on` method.
4
+ * Listeners will execute in LIFO order. Any listener that calls
5
+ * `stopImmediatePropagation()` will cause the event manager to stop processing
6
+ * subsequent listeners.
7
+ *
8
+ * @example
9
+ * events.on("keydown", (event) => {
10
+ * console.log("keydown event:", event);
11
+ * });
12
+ */
13
+ export declare const events: EventManager;
14
+ export * from "./alert";
15
+ export * from "./autocomplete";
16
+ export * from "./avatar";
17
+ export * from "./badge";
18
+ export * from "./box";
19
+ export * from "./breadcrumbs";
20
+ export * from "./button";
21
+ export * from "./chip";
22
+ export * from "./command";
23
+ export * from "./common";
24
+ export * from "./dialog";
25
+ export * from "./fab";
26
+ export * from "./input";
27
+ export * from "./link";
28
+ export * from "./markdown";
29
+ export * from "./menu";
30
+ export * from "./modal";
31
+ export * from "./popover";
32
+ export * from "./portal";
33
+ export * from "./progress";
34
+ export * from "./shortcut";
35
+ export * from "./toggle";
36
+ export * from "./tooltip";
37
+ export * from "./base";
38
+ export * from "./merge-props";
39
+ export * from "./utils";
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ import { EventManager } from "./event-manager";
2
+ /**
3
+ * A global event manager. Register event listeners with the `on` method.
4
+ * Listeners will execute in LIFO order. Any listener that calls
5
+ * `stopImmediatePropagation()` will cause the event manager to stop processing
6
+ * subsequent listeners.
7
+ *
8
+ * @example
9
+ * events.on("keydown", (event) => {
10
+ * console.log("keydown event:", event);
11
+ * });
12
+ */
13
+ export const events = new EventManager();
14
+ export * from "./alert";
15
+ export * from "./autocomplete";
16
+ export * from "./avatar";
17
+ export * from "./badge";
18
+ export * from "./box";
19
+ export * from "./breadcrumbs";
20
+ export * from "./button";
21
+ export * from "./chip";
22
+ export * from "./command";
23
+ export * from "./common";
24
+ export * from "./dialog";
25
+ export * from "./fab";
26
+ export * from "./input";
27
+ export * from "./link";
28
+ export * from "./markdown";
29
+ export * from "./menu";
30
+ export * from "./modal";
31
+ export * from "./popover";
32
+ export * from "./portal";
33
+ export * from "./progress";
34
+ export * from "./shortcut";
35
+ export * from "./toggle";
36
+ export * from "./tooltip";
37
+ export * from "./base";
38
+ export * from "./merge-props";
39
+ export * from "./utils";
@@ -0,0 +1 @@
1
+ export { default as Input, type InputProps } from "./input.svelte";
@@ -0,0 +1 @@
1
+ export { default as Input } from "./input.svelte";
@@ -0,0 +1,41 @@
1
+ <script lang="ts" module>
2
+ import type { HTMLInputAttributes } from "svelte/elements";
3
+ import { twMerge } from "tailwind-merge";
4
+ import { baseClasses, type Variants } from "../base";
5
+ import { noop, type ClassName, type ElementRef } from "../utils";
6
+
7
+ export type InputProps = ElementRef &
8
+ ClassName &
9
+ Variants &
10
+ HTMLInputAttributes;
11
+ </script>
12
+
13
+ <script lang="ts">
14
+ let {
15
+ value = $bindable(),
16
+ el = $bindable(),
17
+ ref = noop,
18
+ class: className,
19
+ variant = "outlined",
20
+ color = "secondary",
21
+ shape = "rounded",
22
+ ...restProps
23
+ }: InputProps = $props();
24
+ </script>
25
+
26
+ <input
27
+ bind:this={el}
28
+ use:ref
29
+ bind:value
30
+ class={twMerge(
31
+ "bg-m3-surface-container",
32
+ baseClasses({ variant, color, shape, hover: true, focus: true }),
33
+
34
+ (variant === "outlined" || variant === "plain") &&
35
+ "hover:bg-m3-surface-container-low focus-visible:bg-m3-surface-container-low",
36
+
37
+ "h-9 px-3",
38
+ className,
39
+ )}
40
+ {...restProps}
41
+ />
@@ -0,0 +1,7 @@
1
+ import type { HTMLInputAttributes } from "svelte/elements";
2
+ import { type Variants } from "../base";
3
+ import { type ClassName, type ElementRef } from "../utils";
4
+ export type InputProps = ElementRef & ClassName & Variants & HTMLInputAttributes;
5
+ declare const Input: import("svelte").Component<InputProps, {}, "el" | "value">;
6
+ type Input = ReturnType<typeof Input>;
7
+ export default Input;
@@ -0,0 +1 @@
1
+ export { default as Link, type LinkProps } from "./link.svelte";
@@ -0,0 +1 @@
1
+ export { default as Link } from "./link.svelte";
@@ -0,0 +1,51 @@
1
+ <script module lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import type {
4
+ HTMLAnchorAttributes,
5
+ HTMLButtonAttributes,
6
+ } from "svelte/elements";
7
+ import { twMerge } from "tailwind-merge";
8
+ import { baseClasses, type Variants } from "../base";
9
+ import { noop, type ClassName, type ElementRef } from "../utils";
10
+
11
+ export type LinkProps = {
12
+ children: Snippet;
13
+ } & ElementRef &
14
+ ClassName &
15
+ Variants &
16
+ HTMLButtonAttributes &
17
+ HTMLAnchorAttributes;
18
+ </script>
19
+
20
+ <script lang="ts">
21
+ let {
22
+ children,
23
+ el = $bindable(),
24
+ ref = noop,
25
+ class: className,
26
+ variant = "text",
27
+ color = "primary",
28
+ shape = "rounded",
29
+ underline = "hover",
30
+ href,
31
+ ...props
32
+ }: LinkProps = $props();
33
+
34
+ const classes = twMerge(
35
+ baseClasses({ variant, color, shape, underline, hover: true, focus: true }),
36
+ variant !== "text" &&
37
+ "flex h-9 items-center justify-center gap-2 text-nowrap transition-all active:scale-95",
38
+ "cursor-pointer",
39
+ className,
40
+ );
41
+ </script>
42
+
43
+ {#if href}
44
+ <a bind:this={el} use:ref class={classes} {href} {...props}>
45
+ {@render children()}
46
+ </a>
47
+ {:else}
48
+ <button bind:this={el} use:ref class={classes} {...props}>
49
+ {@render children()}
50
+ </button>
51
+ {/if}
@@ -0,0 +1,10 @@
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLAnchorAttributes, HTMLButtonAttributes } from "svelte/elements";
3
+ import { type Variants } from "../base";
4
+ import { type ClassName, type ElementRef } from "../utils";
5
+ export type LinkProps = {
6
+ children: Snippet;
7
+ } & ElementRef & ClassName & Variants & HTMLButtonAttributes & HTMLAnchorAttributes;
8
+ declare const Link: import("svelte").Component<LinkProps, {}, "el">;
9
+ type Link = ReturnType<typeof Link>;
10
+ export default Link;
@@ -0,0 +1,25 @@
1
+ export { default as MarkdownBlockquote } from "./markdown-blockquote.svelte";
2
+ export { default as MarkdownBr } from "./markdown-br.svelte";
3
+ export { default as MarkdownCode } from "./markdown-code.svelte";
4
+ export { default as MarkdownCodespan } from "./markdown-codespan.svelte";
5
+ export { getMarkdownContext, MarkdownContext, setMarkdownContext, type MarkdownComponentProps, } from "./markdown-context.svelte";
6
+ export { default as MarkdownDef } from "./markdown-def.svelte";
7
+ export { default as MarkdownDel } from "./markdown-del.svelte";
8
+ export { default as MarkdownEm } from "./markdown-em.svelte";
9
+ export { default as MarkdownEscape } from "./markdown-escape.svelte";
10
+ export { default as MarkdownHeading } from "./markdown-heading.svelte";
11
+ export { default as MarkdownHr } from "./markdown-hr.svelte";
12
+ export { default as MarkdownHtml } from "./markdown-html.svelte";
13
+ export { default as MarkdownImage } from "./markdown-image.svelte";
14
+ export { default as MarkdownLink } from "./markdown-link.svelte";
15
+ export { default as MarkdownListItem } from "./markdown-list-item.svelte";
16
+ export { default as MarkdownList } from "./markdown-list.svelte";
17
+ export { default as MarkdownParagraph } from "./markdown-paragraph.svelte";
18
+ export { default as MarkdownSpace } from "./markdown-space.svelte";
19
+ export { default as MarkdownStrong } from "./markdown-strong.svelte";
20
+ export { default as MarkdownTableCell } from "./markdown-table-cell.svelte";
21
+ export { default as MarkdownTable } from "./markdown-table.svelte";
22
+ export { default as MarkdownText } from "./markdown-text.svelte";
23
+ export { default as MarkdownToken } from "./markdown-token.svelte";
24
+ export { default as MarkdownTokens } from "./markdown-tokens.svelte";
25
+ export { default as Markdown } from "./markdown.svelte";
@@ -0,0 +1,25 @@
1
+ export { default as MarkdownBlockquote } from "./markdown-blockquote.svelte";
2
+ export { default as MarkdownBr } from "./markdown-br.svelte";
3
+ export { default as MarkdownCode } from "./markdown-code.svelte";
4
+ export { default as MarkdownCodespan } from "./markdown-codespan.svelte";
5
+ export { getMarkdownContext, MarkdownContext, setMarkdownContext, } from "./markdown-context.svelte";
6
+ export { default as MarkdownDef } from "./markdown-def.svelte";
7
+ export { default as MarkdownDel } from "./markdown-del.svelte";
8
+ export { default as MarkdownEm } from "./markdown-em.svelte";
9
+ export { default as MarkdownEscape } from "./markdown-escape.svelte";
10
+ export { default as MarkdownHeading } from "./markdown-heading.svelte";
11
+ export { default as MarkdownHr } from "./markdown-hr.svelte";
12
+ export { default as MarkdownHtml } from "./markdown-html.svelte";
13
+ export { default as MarkdownImage } from "./markdown-image.svelte";
14
+ export { default as MarkdownLink } from "./markdown-link.svelte";
15
+ export { default as MarkdownListItem } from "./markdown-list-item.svelte";
16
+ export { default as MarkdownList } from "./markdown-list.svelte";
17
+ export { default as MarkdownParagraph } from "./markdown-paragraph.svelte";
18
+ export { default as MarkdownSpace } from "./markdown-space.svelte";
19
+ export { default as MarkdownStrong } from "./markdown-strong.svelte";
20
+ export { default as MarkdownTableCell } from "./markdown-table-cell.svelte";
21
+ export { default as MarkdownTable } from "./markdown-table.svelte";
22
+ export { default as MarkdownText } from "./markdown-text.svelte";
23
+ export { default as MarkdownToken } from "./markdown-token.svelte";
24
+ export { default as MarkdownTokens } from "./markdown-tokens.svelte";
25
+ export { default as Markdown } from "./markdown.svelte";
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ import type { Tokens } from "marked";
3
+ import type { HTMLQuoteAttributes } from "svelte/elements";
4
+ import type { MarkdownComponentProps } from ".";
5
+
6
+ let {
7
+ children,
8
+ ...restProps
9
+ }: MarkdownComponentProps<Tokens.Blockquote> & HTMLQuoteAttributes = $props();
10
+ </script>
11
+
12
+ <blockquote {...restProps}>
13
+ {@render children()}
14
+ </blockquote>
@@ -0,0 +1,7 @@
1
+ import type { Tokens } from "marked";
2
+ import type { HTMLQuoteAttributes } from "svelte/elements";
3
+ import type { MarkdownComponentProps } from ".";
4
+ type $$ComponentProps = MarkdownComponentProps<Tokens.Blockquote> & HTMLQuoteAttributes;
5
+ declare const MarkdownBlockquote: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type MarkdownBlockquote = ReturnType<typeof MarkdownBlockquote>;
7
+ export default MarkdownBlockquote;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ import type { Tokens } from "marked";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import type { MarkdownComponentProps } from ".";
5
+
6
+ let {
7
+ ...restProps
8
+ }: MarkdownComponentProps<Tokens.Br> & HTMLAttributes<HTMLBRElement> =
9
+ $props();
10
+ </script>
11
+
12
+ <br {...restProps} />
@@ -0,0 +1,7 @@
1
+ import type { Tokens } from "marked";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import type { MarkdownComponentProps } from ".";
4
+ type $$ComponentProps = MarkdownComponentProps<Tokens.Br> & HTMLAttributes<HTMLBRElement>;
5
+ declare const MarkdownBr: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type MarkdownBr = ReturnType<typeof MarkdownBr>;
7
+ export default MarkdownBr;
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ import type { Tokens } from "marked";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import type { MarkdownComponentProps } from ".";
5
+
6
+ let {
7
+ token,
8
+ ...restProps
9
+ }: MarkdownComponentProps<Tokens.Code> & HTMLAttributes<HTMLPreElement> =
10
+ $props();
11
+ </script>
12
+
13
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
14
+ <pre {...restProps}><code class={token.lang}>{@html token.text}</code></pre>
@@ -0,0 +1,7 @@
1
+ import type { Tokens } from "marked";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import type { MarkdownComponentProps } from ".";
4
+ type $$ComponentProps = MarkdownComponentProps<Tokens.Code> & HTMLAttributes<HTMLPreElement>;
5
+ declare const MarkdownCode: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type MarkdownCode = ReturnType<typeof MarkdownCode>;
7
+ export default MarkdownCode;
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import type { Tokens } from "marked";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import type { MarkdownComponentProps } from ".";
5
+
6
+ let {
7
+ token,
8
+ ...restProps
9
+ }: MarkdownComponentProps<Tokens.Codespan> & HTMLAttributes<HTMLElement> =
10
+ $props();
11
+ </script>
12
+
13
+ <code {...restProps}>
14
+ {token.raw.slice(1, token.raw.length - 1)}
15
+ </code>
@@ -0,0 +1,7 @@
1
+ import type { Tokens } from "marked";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import type { MarkdownComponentProps } from ".";
4
+ type $$ComponentProps = MarkdownComponentProps<Tokens.Codespan> & HTMLAttributes<HTMLElement>;
5
+ declare const MarkdownCodespan: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type MarkdownCodespan = ReturnType<typeof MarkdownCodespan>;
7
+ export default MarkdownCodespan;
@@ -0,0 +1,26 @@
1
+ import type { MarkedToken, Tokens } from "marked";
2
+ import { type Snippet } from "svelte";
3
+ type Token = {
4
+ [T in TokenType]: Extract<MarkedToken, {
5
+ type: T;
6
+ }>;
7
+ };
8
+ export type MarkdownComponentProps<T> = {
9
+ token: T;
10
+ children: Snippet;
11
+ };
12
+ export type TokenType = MarkedToken["type"];
13
+ type TokenRenderer<T> = Snippet<[MarkdownComponentProps<T>]>;
14
+ type Renderers = {
15
+ [T in TokenType]?: TokenRenderer<Token[T]>;
16
+ };
17
+ export declare class MarkdownContext {
18
+ #private;
19
+ constructor(renderers: Renderers, tableCellRenderer: TokenRenderer<Tokens.TableCell>);
20
+ get renderers(): Renderers;
21
+ get tableCellRenderer(): TokenRenderer<Tokens.TableCell>;
22
+ getRenderer<T extends TokenType>(type: T): TokenRenderer<Token[T]> | undefined;
23
+ }
24
+ export declare function setMarkdownContext(state: MarkdownContext): MarkdownContext;
25
+ export declare function getMarkdownContext(): MarkdownContext;
26
+ export {};
@@ -0,0 +1,30 @@
1
+ import { getContext, setContext } from "svelte";
2
+ export class MarkdownContext {
3
+ #renderers;
4
+ #tableCellRenderer;
5
+ constructor(renderers, tableCellRenderer) {
6
+ this.#renderers = renderers;
7
+ this.#tableCellRenderer = tableCellRenderer;
8
+ }
9
+ get renderers() {
10
+ return this.#renderers;
11
+ }
12
+ get tableCellRenderer() {
13
+ return this.#tableCellRenderer;
14
+ }
15
+ getRenderer(type) {
16
+ if (!this.#renderers[type]) {
17
+ console.warn("No renderer registered for", type);
18
+ }
19
+ return this.#renderers[type];
20
+ }
21
+ }
22
+ export function setMarkdownContext(state) {
23
+ return setContext(MarkdownContext, state);
24
+ }
25
+ export function getMarkdownContext() {
26
+ const ctx = getContext(MarkdownContext);
27
+ if (!ctx)
28
+ throw new Error("MarkdownContext is undefined");
29
+ return ctx;
30
+ }
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import type { Tokens } from "marked";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import type { MarkdownComponentProps } from ".";
5
+
6
+ let {
7
+ children,
8
+ ...restProps
9
+ }: MarkdownComponentProps<Tokens.Def> & HTMLAttributes<HTMLElement> =
10
+ $props();
11
+ </script>
12
+
13
+ <dfn {...restProps}>
14
+ {@render children()}
15
+ </dfn>
@@ -0,0 +1,7 @@
1
+ import type { Tokens } from "marked";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import type { MarkdownComponentProps } from ".";
4
+ type $$ComponentProps = MarkdownComponentProps<Tokens.Def> & HTMLAttributes<HTMLElement>;
5
+ declare const MarkdownDef: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type MarkdownDef = ReturnType<typeof MarkdownDef>;
7
+ export default MarkdownDef;
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ import type { Tokens } from "marked";
3
+ import type { HTMLDelAttributes } from "svelte/elements";
4
+ import type { MarkdownComponentProps } from ".";
5
+
6
+ let {
7
+ children,
8
+ ...restProps
9
+ }: MarkdownComponentProps<Tokens.Del> & HTMLDelAttributes = $props();
10
+ </script>
11
+
12
+ <del {...restProps}>
13
+ {@render children()}
14
+ </del>
@@ -0,0 +1,7 @@
1
+ import type { Tokens } from "marked";
2
+ import type { HTMLDelAttributes } from "svelte/elements";
3
+ import type { MarkdownComponentProps } from ".";
4
+ type $$ComponentProps = MarkdownComponentProps<Tokens.Del> & HTMLDelAttributes;
5
+ declare const MarkdownDel: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type MarkdownDel = ReturnType<typeof MarkdownDel>;
7
+ export default MarkdownDel;
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ import type { Tokens } from "marked";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import type { MarkdownComponentProps } from ".";
5
+
6
+ let {
7
+ children,
8
+ ...restProps
9
+ }: MarkdownComponentProps<Tokens.Em> & HTMLAttributes<HTMLElement> = $props();
10
+ </script>
11
+
12
+ <em {...restProps}>
13
+ {@render children()}
14
+ </em>
@@ -0,0 +1,7 @@
1
+ import type { Tokens } from "marked";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import type { MarkdownComponentProps } from ".";
4
+ type $$ComponentProps = MarkdownComponentProps<Tokens.Em> & HTMLAttributes<HTMLElement>;
5
+ declare const MarkdownEm: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type MarkdownEm = ReturnType<typeof MarkdownEm>;
7
+ export default MarkdownEm;
@@ -0,0 +1,8 @@
1
+ <script lang="ts">
2
+ import { type Tokens } from "marked";
3
+ import type { MarkdownComponentProps } from ".";
4
+
5
+ let { token }: MarkdownComponentProps<Tokens.Escape> = $props();
6
+ </script>
7
+
8
+ {token.text}
@@ -0,0 +1,5 @@
1
+ import { type Tokens } from "marked";
2
+ import type { MarkdownComponentProps } from ".";
3
+ declare const MarkdownEscape: import("svelte").Component<MarkdownComponentProps<Tokens.Escape>, {}, "">;
4
+ type MarkdownEscape = ReturnType<typeof MarkdownEscape>;
5
+ export default MarkdownEscape;