@foxui/core 0.4.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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/components/accordion/accordion-content.svelte +22 -0
  4. package/dist/components/accordion/accordion-content.svelte.d.ts +4 -0
  5. package/dist/components/accordion/accordion-item.svelte +35 -0
  6. package/dist/components/accordion/accordion-item.svelte.d.ts +9 -0
  7. package/dist/components/accordion/accordion-trigger.svelte +40 -0
  8. package/dist/components/accordion/accordion-trigger.svelte.d.ts +7 -0
  9. package/dist/components/accordion/index.d.ts +6 -0
  10. package/dist/components/accordion/index.js +6 -0
  11. package/dist/components/alert/alert-description.svelte +16 -0
  12. package/dist/components/alert/alert-description.svelte.d.ts +5 -0
  13. package/dist/components/alert/alert-title.svelte +25 -0
  14. package/dist/components/alert/alert-title.svelte.d.ts +8 -0
  15. package/dist/components/alert/alert.svelte +122 -0
  16. package/dist/components/alert/alert.svelte.d.ts +79 -0
  17. package/dist/components/alert/index.d.ts +5 -0
  18. package/dist/components/alert/index.js +5 -0
  19. package/dist/components/avatar/Avatar.svelte +73 -0
  20. package/dist/components/avatar/Avatar.svelte.d.ts +14 -0
  21. package/dist/components/avatar/AvatarGroup.svelte +43 -0
  22. package/dist/components/avatar/AvatarGroup.svelte.d.ts +16 -0
  23. package/dist/components/avatar/index.d.ts +3 -0
  24. package/dist/components/avatar/index.js +3 -0
  25. package/dist/components/badge/Badge.svelte +80 -0
  26. package/dist/components/badge/Badge.svelte.d.ts +100 -0
  27. package/dist/components/badge/index.d.ts +1 -0
  28. package/dist/components/badge/index.js +1 -0
  29. package/dist/components/box/Box.svelte +23 -0
  30. package/dist/components/box/Box.svelte.d.ts +5 -0
  31. package/dist/components/box/index.d.ts +1 -0
  32. package/dist/components/box/index.js +1 -0
  33. package/dist/components/button/Button.svelte +103 -0
  34. package/dist/components/button/Button.svelte.d.ts +110 -0
  35. package/dist/components/button/index.d.ts +1 -0
  36. package/dist/components/button/index.js +1 -0
  37. package/dist/components/card/ImageCard.svelte +62 -0
  38. package/dist/components/card/ImageCard.svelte.d.ts +12 -0
  39. package/dist/components/card/index.d.ts +1 -0
  40. package/dist/components/card/index.js +1 -0
  41. package/dist/components/chat-bubble/ChatBubble.svelte +96 -0
  42. package/dist/components/chat-bubble/ChatBubble.svelte.d.ts +95 -0
  43. package/dist/components/chat-bubble/index.d.ts +1 -0
  44. package/dist/components/chat-bubble/index.js +1 -0
  45. package/dist/components/checkbox/checkbox.svelte +91 -0
  46. package/dist/components/checkbox/checkbox.svelte.d.ts +42 -0
  47. package/dist/components/checkbox/index.d.ts +1 -0
  48. package/dist/components/checkbox/index.js +1 -0
  49. package/dist/components/copy-code-button/AddCopyCodeButtons.svelte +35 -0
  50. package/dist/components/copy-code-button/AddCopyCodeButtons.svelte.d.ts +6 -0
  51. package/dist/components/copy-code-button/CopyCodeButton.svelte +69 -0
  52. package/dist/components/copy-code-button/CopyCodeButton.svelte.d.ts +7 -0
  53. package/dist/components/copy-code-button/index.d.ts +2 -0
  54. package/dist/components/copy-code-button/index.js +2 -0
  55. package/dist/components/head/Head.svelte +49 -0
  56. package/dist/components/head/Head.svelte.d.ts +10 -0
  57. package/dist/components/head/index.d.ts +1 -0
  58. package/dist/components/head/index.js +1 -0
  59. package/dist/components/heading/Heading.svelte +24 -0
  60. package/dist/components/heading/Heading.svelte.d.ts +8 -0
  61. package/dist/components/heading/Subheading.svelte +24 -0
  62. package/dist/components/heading/Subheading.svelte.d.ts +8 -0
  63. package/dist/components/heading/index.d.ts +3 -0
  64. package/dist/components/heading/index.js +3 -0
  65. package/dist/components/image/Image.svelte +80 -0
  66. package/dist/components/image/Image.svelte.d.ts +12 -0
  67. package/dist/components/image/index.d.ts +2 -0
  68. package/dist/components/image/index.js +1 -0
  69. package/dist/components/image-container/ImageContainer.svelte +15 -0
  70. package/dist/components/image-container/ImageContainer.svelte.d.ts +4 -0
  71. package/dist/components/image-container/index.d.ts +1 -0
  72. package/dist/components/image-container/index.js +1 -0
  73. package/dist/components/index.d.ts +34 -0
  74. package/dist/components/index.js +34 -0
  75. package/dist/components/input/Input.svelte +60 -0
  76. package/dist/components/input/Input.svelte.d.ts +46 -0
  77. package/dist/components/input/index.d.ts +2 -0
  78. package/dist/components/input/index.js +2 -0
  79. package/dist/components/label/Label.svelte +19 -0
  80. package/dist/components/label/Label.svelte.d.ts +4 -0
  81. package/dist/components/label/index.d.ts +1 -0
  82. package/dist/components/label/index.js +1 -0
  83. package/dist/components/modal/Modal.svelte +167 -0
  84. package/dist/components/modal/Modal.svelte.d.ts +33 -0
  85. package/dist/components/modal/index.d.ts +2 -0
  86. package/dist/components/modal/index.js +1 -0
  87. package/dist/components/navbar/Navbar.svelte +63 -0
  88. package/dist/components/navbar/Navbar.svelte.d.ts +8 -0
  89. package/dist/components/navbar/index.d.ts +1 -0
  90. package/dist/components/navbar/index.js +1 -0
  91. package/dist/components/number-input/NumberInput.svelte +201 -0
  92. package/dist/components/number-input/NumberInput.svelte.d.ts +98 -0
  93. package/dist/components/number-input/index.d.ts +2 -0
  94. package/dist/components/number-input/index.js +1 -0
  95. package/dist/components/paragraph/Paragraph.svelte +20 -0
  96. package/dist/components/paragraph/Paragraph.svelte.d.ts +5 -0
  97. package/dist/components/paragraph/index.d.ts +2 -0
  98. package/dist/components/paragraph/index.js +2 -0
  99. package/dist/components/popover/Popover.svelte +63 -0
  100. package/dist/components/popover/Popover.svelte.d.ts +14 -0
  101. package/dist/components/popover/index.d.ts +8 -0
  102. package/dist/components/popover/index.js +7 -0
  103. package/dist/components/popover/popover-content.svelte +28 -0
  104. package/dist/components/popover/popover-content.svelte.d.ts +7 -0
  105. package/dist/components/prose/Prose.svelte +107 -0
  106. package/dist/components/prose/Prose.svelte.d.ts +35 -0
  107. package/dist/components/prose/ProseCopyButton.svelte +12 -0
  108. package/dist/components/prose/ProseCopyButton.svelte.d.ts +8 -0
  109. package/dist/components/prose/index.d.ts +4 -0
  110. package/dist/components/prose/index.js +2 -0
  111. package/dist/components/scroll-area/BodyScrollArea.svelte +3 -0
  112. package/dist/components/scroll-area/BodyScrollArea.svelte.d.ts +19 -0
  113. package/dist/components/scroll-area/ScrollArea.svelte +71 -0
  114. package/dist/components/scroll-area/ScrollArea.svelte.d.ts +8 -0
  115. package/dist/components/scroll-area/index.d.ts +1 -0
  116. package/dist/components/scroll-area/index.js +1 -0
  117. package/dist/components/scroll-area/style.css +41 -0
  118. package/dist/components/select/Select.svelte +88 -0
  119. package/dist/components/select/Select.svelte.d.ts +13 -0
  120. package/dist/components/select/SelectChildren.svelte +29 -0
  121. package/dist/components/select/SelectChildren.svelte.d.ts +8 -0
  122. package/dist/components/select/SelectItem.svelte +31 -0
  123. package/dist/components/select/SelectItem.svelte.d.ts +4 -0
  124. package/dist/components/select/index.d.ts +3 -0
  125. package/dist/components/select/index.js +3 -0
  126. package/dist/components/select-2/Select.svelte +46 -0
  127. package/dist/components/select-2/Select.svelte.d.ts +12 -0
  128. package/dist/components/select-2/index.d.ts +1 -0
  129. package/dist/components/select-2/index.js +1 -0
  130. package/dist/components/sidebar/Sidebar.svelte +69 -0
  131. package/dist/components/sidebar/Sidebar.svelte.d.ts +9 -0
  132. package/dist/components/sidebar/index.d.ts +1 -0
  133. package/dist/components/sidebar/index.js +1 -0
  134. package/dist/components/slider/Slider.svelte +65 -0
  135. package/dist/components/slider/Slider.svelte.d.ts +4 -0
  136. package/dist/components/slider/SliderNumber.svelte +40 -0
  137. package/dist/components/slider/SliderNumber.svelte.d.ts +4 -0
  138. package/dist/components/slider/index.d.ts +3 -0
  139. package/dist/components/slider/index.js +3 -0
  140. package/dist/components/sonner/Toaster.svelte +73 -0
  141. package/dist/components/sonner/Toaster.svelte.d.ts +10 -0
  142. package/dist/components/sonner/index.d.ts +2 -0
  143. package/dist/components/sonner/index.js +2 -0
  144. package/dist/components/switch/index.d.ts +2 -0
  145. package/dist/components/switch/index.js +2 -0
  146. package/dist/components/switch/switch.svelte +27 -0
  147. package/dist/components/switch/switch.svelte.d.ts +4 -0
  148. package/dist/components/tabs/TabItem.svelte +56 -0
  149. package/dist/components/tabs/TabItem.svelte.d.ts +9 -0
  150. package/dist/components/tabs/Tabs.svelte +29 -0
  151. package/dist/components/tabs/Tabs.svelte.d.ts +12 -0
  152. package/dist/components/tabs/index.d.ts +2 -0
  153. package/dist/components/tabs/index.js +2 -0
  154. package/dist/components/textarea/index.d.ts +19 -0
  155. package/dist/components/textarea/index.js +2 -0
  156. package/dist/components/textarea/textarea.svelte +57 -0
  157. package/dist/components/textarea/textarea.svelte.d.ts +47 -0
  158. package/dist/components/theme-toggle/ThemeToggle.svelte +105 -0
  159. package/dist/components/theme-toggle/ThemeToggle.svelte.d.ts +7 -0
  160. package/dist/components/theme-toggle/index.d.ts +2 -0
  161. package/dist/components/theme-toggle/index.js +2 -0
  162. package/dist/components/toggle/index.d.ts +3 -0
  163. package/dist/components/toggle/index.js +3 -0
  164. package/dist/components/toggle/toggle.svelte +49 -0
  165. package/dist/components/toggle/toggle.svelte.d.ts +40 -0
  166. package/dist/components/toggle-group/index.d.ts +3 -0
  167. package/dist/components/toggle-group/index.js +3 -0
  168. package/dist/components/toggle-group/toggle-group-item.svelte +30 -0
  169. package/dist/components/toggle-group/toggle-group-item.svelte.d.ts +6 -0
  170. package/dist/components/toggle-group/toggle-group.svelte +41 -0
  171. package/dist/components/toggle-group/toggle-group.svelte.d.ts +8 -0
  172. package/dist/components/tooltip/index.d.ts +7 -0
  173. package/dist/components/tooltip/index.js +9 -0
  174. package/dist/components/tooltip/tooltip-content.svelte +21 -0
  175. package/dist/components/tooltip/tooltip-content.svelte.d.ts +4 -0
  176. package/dist/components/tooltip/tooltip.svelte +62 -0
  177. package/dist/components/tooltip/tooltip.svelte.d.ts +12 -0
  178. package/dist/index.d.ts +2 -0
  179. package/dist/index.js +3 -0
  180. package/dist/types.d.ts +1 -0
  181. package/dist/utils.d.ts +2 -0
  182. package/dist/utils.js +5 -0
  183. package/package.json +82 -0
@@ -0,0 +1,95 @@
1
+ import { type VariantProps } from 'tailwind-variants';
2
+ export declare const badgeVariants: import("tailwind-variants").TVReturnType<{
3
+ variant: {
4
+ primary: string;
5
+ secondary: string;
6
+ red: string;
7
+ yellow: string;
8
+ green: string;
9
+ blue: string;
10
+ indigo: string;
11
+ violet: string;
12
+ purple: string;
13
+ fuchsia: string;
14
+ pink: string;
15
+ rose: string;
16
+ orange: string;
17
+ amber: string;
18
+ lime: string;
19
+ emerald: string;
20
+ teal: string;
21
+ cyan: string;
22
+ sky: string;
23
+ };
24
+ size: {
25
+ sm: string;
26
+ md: string;
27
+ lg: string;
28
+ };
29
+ }, undefined, "inline-flex items-center flex-col justify-start items-start whitespace-nowrap rounded-2xl text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 duration-300 active:duration-100 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
30
+ variant: {
31
+ primary: string;
32
+ secondary: string;
33
+ red: string;
34
+ yellow: string;
35
+ green: string;
36
+ blue: string;
37
+ indigo: string;
38
+ violet: string;
39
+ purple: string;
40
+ fuchsia: string;
41
+ pink: string;
42
+ rose: string;
43
+ orange: string;
44
+ amber: string;
45
+ lime: string;
46
+ emerald: string;
47
+ teal: string;
48
+ cyan: string;
49
+ sky: string;
50
+ };
51
+ size: {
52
+ sm: string;
53
+ md: string;
54
+ lg: string;
55
+ };
56
+ }, undefined, import("tailwind-variants").TVReturnType<{
57
+ variant: {
58
+ primary: string;
59
+ secondary: string;
60
+ red: string;
61
+ yellow: string;
62
+ green: string;
63
+ blue: string;
64
+ indigo: string;
65
+ violet: string;
66
+ purple: string;
67
+ fuchsia: string;
68
+ pink: string;
69
+ rose: string;
70
+ orange: string;
71
+ amber: string;
72
+ lime: string;
73
+ emerald: string;
74
+ teal: string;
75
+ cyan: string;
76
+ sky: string;
77
+ };
78
+ size: {
79
+ sm: string;
80
+ md: string;
81
+ lg: string;
82
+ };
83
+ }, undefined, "inline-flex items-center flex-col justify-start items-start whitespace-nowrap rounded-2xl text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 duration-300 active:duration-100 [&_svg]:pointer-events-none [&_svg]:shrink-0", unknown, unknown, undefined>>;
84
+ export type BadgeVariant = VariantProps<typeof badgeVariants>['variant'];
85
+ export type BadgeSize = VariantProps<typeof badgeVariants>['size'];
86
+ import type { WithElementRef } from 'bits-ui';
87
+ import type { HTMLAttributes } from 'svelte/elements';
88
+ type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLSpanElement>> & {
89
+ variant?: BadgeVariant;
90
+ size?: BadgeSize;
91
+ side?: 'left' | 'right';
92
+ };
93
+ declare const ChatBubble: import("svelte").Component<$$ComponentProps, {}, "ref">;
94
+ type ChatBubble = ReturnType<typeof ChatBubble>;
95
+ export default ChatBubble;
@@ -0,0 +1 @@
1
+ export { default as ChatBubble } from './ChatBubble.svelte';
@@ -0,0 +1 @@
1
+ export { default as ChatBubble } from './ChatBubble.svelte';
@@ -0,0 +1,91 @@
1
+ <script lang="ts" module>
2
+ import { Checkbox as CheckboxPrimitive, type WithoutChildrenOrChild } from 'bits-ui';
3
+ import { type VariantProps, tv } from 'tailwind-variants';
4
+ import { cn } from '../../utils';
5
+
6
+ export const checkboxVariants = tv({
7
+ base: 'peer cursor-pointer box-content size-4 shrink-0 inline-flex items-center justify-center rounded-2xl border outline-offset-2 focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent-500 focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50',
8
+ variants: {
9
+ variant: {
10
+ primary:
11
+ 'border-accent-200 bg-accent-100 focus-visible:outline-accent-500 data-[state=checked]:border-accent-300 data-[state=checked]:bg-accent-200 data-[state=checked]:text-accent-600 dark:border-accent-500/20 dark:bg-accent-500/5 dark:text-accent-500 dark:data-[state=checked]:border-accent-500/30 dark:data-[state=checked]:bg-accent-500/20 dark:data-[state=checked]:text-accent-500',
12
+ secondary:
13
+ 'border-base-300 bg-base-100 focus-visible:outline-base-900 dark:focus-visible:outline-base-100 data-[state=checked]:border-base-400 data-[state=checked]:bg-base-200 data-[state=checked]:text-base-900 dark:border-base-700 dark:bg-base-900 dark:text-base-50 dark:data-[state=checked]:border-base-500/80 dark:data-[state=checked]:bg-base-500/30 dark:data-[state=checked]:text-base-100'
14
+ },
15
+ sizeVariant: {
16
+ default: 'size-5',
17
+ sm: 'size-4',
18
+ lg: 'size-6'
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ variant: 'primary',
23
+ sizeVariant: 'default'
24
+ }
25
+ });
26
+
27
+ export type CheckboxVariant = VariantProps<typeof checkboxVariants>['variant'];
28
+ export type CheckboxSize = VariantProps<typeof checkboxVariants>['sizeVariant'];
29
+
30
+ export type CheckboxProps = WithoutChildrenOrChild<CheckboxPrimitive.RootProps> & {
31
+ variant?: CheckboxVariant;
32
+ sizeVariant?: CheckboxSize;
33
+ };
34
+ </script>
35
+
36
+ <script lang="ts">
37
+ let {
38
+ ref = $bindable(null),
39
+ checked = $bindable(false),
40
+ indeterminate = $bindable(false),
41
+ variant = $bindable('primary'),
42
+ sizeVariant = $bindable('default'),
43
+ class: className,
44
+ ...restProps
45
+ }: CheckboxProps = $props();
46
+ </script>
47
+
48
+ <CheckboxPrimitive.Root
49
+ bind:ref
50
+ class={cn(checkboxVariants({ variant, sizeVariant }), className)}
51
+ bind:checked
52
+ bind:indeterminate
53
+ {...restProps}
54
+ >
55
+ {#snippet children({ checked, indeterminate })}
56
+ <div class="flex size-4 items-center justify-center text-current">
57
+ {#if indeterminate}
58
+ <svg
59
+ xmlns="http://www.w3.org/2000/svg"
60
+ fill="none"
61
+ viewBox="0 0 24 24"
62
+ stroke-width="2.5"
63
+ stroke="currentColor"
64
+ class={[
65
+ sizeVariant === 'sm' && 'size-3.5',
66
+ sizeVariant === 'default' && 'size-4',
67
+ sizeVariant === 'lg' && 'size-4.5'
68
+ ]}
69
+ >
70
+ <path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14" />
71
+ </svg>
72
+ {:else}
73
+ <svg
74
+ xmlns="http://www.w3.org/2000/svg"
75
+ fill="none"
76
+ viewBox="0 0 24 24"
77
+ stroke-width="2.5"
78
+ stroke="currentColor"
79
+ class={[
80
+ sizeVariant === 'sm' && 'size-3.5',
81
+ sizeVariant === 'default' && 'size-4',
82
+ sizeVariant === 'lg' && 'size-4.5',
83
+ !checked && 'text-transparent'
84
+ ]}
85
+ >
86
+ <path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5" />
87
+ </svg>
88
+ {/if}
89
+ </div>
90
+ {/snippet}
91
+ </CheckboxPrimitive.Root>
@@ -0,0 +1,42 @@
1
+ import { Checkbox as CheckboxPrimitive, type WithoutChildrenOrChild } from 'bits-ui';
2
+ import { type VariantProps } from 'tailwind-variants';
3
+ export declare const checkboxVariants: import("tailwind-variants").TVReturnType<{
4
+ variant: {
5
+ primary: string;
6
+ secondary: string;
7
+ };
8
+ sizeVariant: {
9
+ default: string;
10
+ sm: string;
11
+ lg: string;
12
+ };
13
+ }, undefined, "peer cursor-pointer box-content size-4 shrink-0 inline-flex items-center justify-center rounded-2xl border outline-offset-2 focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent-500 focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50", {
14
+ variant: {
15
+ primary: string;
16
+ secondary: string;
17
+ };
18
+ sizeVariant: {
19
+ default: string;
20
+ sm: string;
21
+ lg: string;
22
+ };
23
+ }, undefined, import("tailwind-variants").TVReturnType<{
24
+ variant: {
25
+ primary: string;
26
+ secondary: string;
27
+ };
28
+ sizeVariant: {
29
+ default: string;
30
+ sm: string;
31
+ lg: string;
32
+ };
33
+ }, undefined, "peer cursor-pointer box-content size-4 shrink-0 inline-flex items-center justify-center rounded-2xl border outline-offset-2 focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent-500 focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50", unknown, unknown, undefined>>;
34
+ export type CheckboxVariant = VariantProps<typeof checkboxVariants>['variant'];
35
+ export type CheckboxSize = VariantProps<typeof checkboxVariants>['sizeVariant'];
36
+ export type CheckboxProps = WithoutChildrenOrChild<CheckboxPrimitive.RootProps> & {
37
+ variant?: CheckboxVariant;
38
+ sizeVariant?: CheckboxSize;
39
+ };
40
+ declare const Checkbox: import("svelte").Component<CheckboxProps, {}, "ref" | "variant" | "sizeVariant" | "checked" | "indeterminate">;
41
+ type Checkbox = ReturnType<typeof Checkbox>;
42
+ export default Checkbox;
@@ -0,0 +1 @@
1
+ export { default as Checkbox } from './checkbox.svelte';
@@ -0,0 +1 @@
1
+ export { default as Checkbox } from './checkbox.svelte';
@@ -0,0 +1,35 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import CopyCodeButton from './CopyCodeButton.svelte';
4
+
5
+ onMount(() => {
6
+ addButton?.();
7
+ });
8
+
9
+ let { addButton = $bindable(() => {}) }: { addButton?: () => void } = $props();
10
+
11
+ let codeblocks: { element: HTMLElement; text?: string }[] = $state([]);
12
+
13
+ addButton = () => {
14
+ const preElements = Array.from(document.querySelectorAll('pre'));
15
+ for (let pre of preElements) {
16
+ if (pre.classList.contains('wrapped')) continue;
17
+
18
+ pre.classList.add('wrapped');
19
+
20
+ const wrapper = document.createElement('div');
21
+ wrapper.classList.add('relative', 'group');
22
+ const clone = pre.cloneNode(true);
23
+
24
+ wrapper.appendChild(clone);
25
+
26
+ pre.parentNode?.replaceChild(wrapper, pre);
27
+
28
+ codeblocks.push({ element: wrapper, text: pre.innerText });
29
+ }
30
+ };
31
+ </script>
32
+
33
+ {#each codeblocks as codeblock}
34
+ <CopyCodeButton element={codeblock.element} text={codeblock.text} />
35
+ {/each}
@@ -0,0 +1,6 @@
1
+ type $$ComponentProps = {
2
+ addButton?: () => void;
3
+ };
4
+ declare const AddCopyCodeButtons: import("svelte").Component<$$ComponentProps, {}, "addButton">;
5
+ type AddCopyCodeButtons = ReturnType<typeof AddCopyCodeButtons>;
6
+ export default AddCopyCodeButtons;
@@ -0,0 +1,69 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils';
3
+ import { Portal } from 'bits-ui';
4
+
5
+ let { element, text }: { element: HTMLElement; text?: string } = $props();
6
+
7
+ let copied = $state(false);
8
+
9
+ async function clickedCopy() {
10
+ if (!text) {
11
+ text = element.innerText;
12
+ }
13
+
14
+ await navigator.clipboard.writeText(text);
15
+
16
+ copied = true;
17
+ setTimeout(() => {
18
+ copied = false;
19
+ }, 2000);
20
+ }
21
+ </script>
22
+
23
+ <Portal to={element}>
24
+ {#if !copied}
25
+ <button
26
+ class={cn(
27
+ 'not-prose focus-visible:outline-base-600 dark:focus-visible:outline-base-400 cursor-pointer focus-visible:opacity-100 focus-visible:outline-2 focus-visible:outline-offset-2',
28
+ 'bg-base-200 inline-flex size-8 items-center justify-center p-1 transition-opacity duration-150 group-hover:opacity-100 [@media(pointer:fine)]:opacity-0',
29
+ 'dark:bg-base-800 border-base-400 dark:border-base-700 dark:hover:bg-base-700 hover:bg-base-300 absolute top-3 right-3 rounded-2xl border'
30
+ )}
31
+ onclick={clickedCopy}
32
+ >
33
+ <svg
34
+ xmlns="http://www.w3.org/2000/svg"
35
+ fill="none"
36
+ viewBox="0 0 24 24"
37
+ stroke-width="1.5"
38
+ stroke="currentColor"
39
+ class="size-4.5"
40
+ >
41
+ <path
42
+ stroke-linecap="round"
43
+ stroke-linejoin="round"
44
+ d="M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z"
45
+ />
46
+ </svg>
47
+
48
+ <span class="sr-only">copy code</span>
49
+ </button>
50
+ {:else}
51
+ <div
52
+ class={cn(
53
+ 'bg-accent-500/10 border-accent-500/20 text-accent-600 dark:text-accent-400 absolute top-3 right-3',
54
+ 'inline-flex size-8 items-center justify-center rounded-2xl border p-1 transition-opacity duration-500'
55
+ )}
56
+ >
57
+ <svg
58
+ xmlns="http://www.w3.org/2000/svg"
59
+ fill="none"
60
+ viewBox="0 0 24 24"
61
+ stroke-width="1.5"
62
+ stroke="currentColor"
63
+ class="size-4.5"
64
+ >
65
+ <path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5" />
66
+ </svg>
67
+ </div>
68
+ {/if}
69
+ </Portal>
@@ -0,0 +1,7 @@
1
+ type $$ComponentProps = {
2
+ element: HTMLElement;
3
+ text?: string;
4
+ };
5
+ declare const CopyCodeButton: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type CopyCodeButton = ReturnType<typeof CopyCodeButton>;
7
+ export default CopyCodeButton;
@@ -0,0 +1,2 @@
1
+ export { default as AddCopyCodeButtons } from './AddCopyCodeButtons.svelte';
2
+ export { default as CopyCodeButton } from './CopyCodeButton.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as AddCopyCodeButtons } from './AddCopyCodeButtons.svelte';
2
+ export { default as CopyCodeButton } from './CopyCodeButton.svelte';
@@ -0,0 +1,49 @@
1
+ <script lang="ts">
2
+ const {
3
+ title,
4
+ description,
5
+ image,
6
+ url,
7
+ emojiFavicon
8
+ }: {
9
+ title?: string;
10
+ description?: string;
11
+ image?: string;
12
+ url?: string;
13
+ emojiFavicon?: string;
14
+ } = $props();
15
+ </script>
16
+
17
+ <svelte:head>
18
+ {#if emojiFavicon}
19
+ <link
20
+ rel="icon"
21
+ href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>{emojiFavicon}</text></svg>"
22
+ />
23
+ {/if}
24
+
25
+ <meta property="og:type" content="website" />
26
+
27
+ {#if description}
28
+ <meta name="description" content={description} />
29
+ <meta property="og:description" content={description} />
30
+ <meta name="twitter:description" content={description} />
31
+ {/if}
32
+
33
+ {#if title}
34
+ <title>{title}</title>
35
+ <meta property="og:title" content={title} />
36
+ <meta name="twitter:title" content={title} />
37
+ {/if}
38
+
39
+ {#if image}
40
+ <meta property="og:image" content={image} />
41
+ <meta name="twitter:image" content={image} />
42
+ <meta name="twitter:card" content="summary_large_image" />
43
+ {/if}
44
+
45
+ {#if url}
46
+ <meta property="twitter:domain" content={new URL(url).hostname} />
47
+ <meta property="twitter:url" content={url} />
48
+ {/if}
49
+ </svelte:head>
@@ -0,0 +1,10 @@
1
+ type $$ComponentProps = {
2
+ title?: string;
3
+ description?: string;
4
+ image?: string;
5
+ url?: string;
6
+ emojiFavicon?: string;
7
+ };
8
+ declare const Head: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type Head = ReturnType<typeof Head>;
10
+ export default Head;
@@ -0,0 +1 @@
1
+ export { default as Head } from './Head.svelte';
@@ -0,0 +1 @@
1
+ export { default as Head } from './Head.svelte';
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import type { WithElementRef } from 'bits-ui';
3
+ import type { HTMLBaseAttributes } from 'svelte/elements';
4
+ import { cn } from '../../utils';
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ level = 1,
10
+ children,
11
+ ...restProps
12
+ }: WithElementRef<HTMLBaseAttributes> & {
13
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
14
+ } = $props();
15
+ </script>
16
+
17
+ <svelte:element
18
+ this={'h' + level}
19
+ bind:this={ref}
20
+ class={cn('text-base-900 dark:text-base-50 text-2xl font-semibold', className)}
21
+ {...restProps}
22
+ >
23
+ {@render children?.()}
24
+ </svelte:element>
@@ -0,0 +1,8 @@
1
+ import type { WithElementRef } from 'bits-ui';
2
+ import type { HTMLBaseAttributes } from 'svelte/elements';
3
+ type $$ComponentProps = WithElementRef<HTMLBaseAttributes> & {
4
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
5
+ };
6
+ declare const Heading: import("svelte").Component<$$ComponentProps, {}, "ref">;
7
+ type Heading = ReturnType<typeof Heading>;
8
+ export default Heading;
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import type { WithElementRef } from 'bits-ui';
3
+ import type { HTMLBaseAttributes } from 'svelte/elements';
4
+ import { cn } from '../../utils';
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ level = 2,
10
+ children,
11
+ ...restProps
12
+ }: WithElementRef<HTMLBaseAttributes> & {
13
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
14
+ } = $props();
15
+ </script>
16
+
17
+ <svelte:element
18
+ this={'h' + level}
19
+ bind:this={ref}
20
+ class={cn('text-base-900 dark:text-base-50 text-base font-semibold sm:text-lg', className)}
21
+ {...restProps}
22
+ >
23
+ {@render children?.()}
24
+ </svelte:element>
@@ -0,0 +1,8 @@
1
+ import type { WithElementRef } from 'bits-ui';
2
+ import type { HTMLBaseAttributes } from 'svelte/elements';
3
+ type $$ComponentProps = WithElementRef<HTMLBaseAttributes> & {
4
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
5
+ };
6
+ declare const Subheading: import("svelte").Component<$$ComponentProps, {}, "ref">;
7
+ type Subheading = ReturnType<typeof Subheading>;
8
+ export default Subheading;
@@ -0,0 +1,3 @@
1
+ import Heading from './Heading.svelte';
2
+ import Subheading from './Subheading.svelte';
3
+ export { Heading, Subheading };
@@ -0,0 +1,3 @@
1
+ import Heading from './Heading.svelte';
2
+ import Subheading from './Subheading.svelte';
3
+ export { Heading, Subheading };
@@ -0,0 +1,80 @@
1
+ <script lang="ts" module>
2
+ import { cn } from '../../utils';
3
+ import type { HTMLImgAttributes } from 'svelte/elements';
4
+ import type { WithElementRef, WithoutChildrenOrChild } from 'bits-ui';
5
+
6
+ export type ImageProps = WithoutChildrenOrChild<
7
+ WithElementRef<HTMLImgAttributes, HTMLImageElement>
8
+ > & {
9
+ useThemeColor?: boolean;
10
+ containerClasses?: string;
11
+ blur?: boolean;
12
+ showNormalOnHover?: boolean;
13
+ alt: string;
14
+ };
15
+ </script>
16
+
17
+ <script lang="ts">
18
+ import { onMount } from 'svelte';
19
+
20
+ let loaded = $state(false);
21
+
22
+ onMount(() => {
23
+ if (ref?.complete) loaded = true;
24
+ });
25
+ let {
26
+ ref = $bindable(null),
27
+ src,
28
+ alt,
29
+ class: className,
30
+ containerClasses,
31
+ useThemeColor = false,
32
+ showNormalOnHover = false,
33
+ blur = true,
34
+ ...restProps
35
+ }: ImageProps = $props();
36
+ </script>
37
+
38
+ <div class={cn('group relative h-fit w-fit', containerClasses)}>
39
+ {#if useThemeColor}
40
+ <div
41
+ class={[
42
+ 'bg-accent-500/30 pointer-events-none absolute inset-0 z-20 size-full',
43
+ showNormalOnHover ? 'transition-all duration-300 ease-in-out group-hover:opacity-0' : ''
44
+ ]}
45
+ ></div>
46
+ {/if}
47
+
48
+ <img
49
+ {src}
50
+ bind:this={ref}
51
+ {alt}
52
+ class={cn(
53
+ useThemeColor ? 'brightness-125 grayscale' : '',
54
+ showNormalOnHover ? 'transition-all duration-300 ease-in-out group-hover:filter-none' : '',
55
+ className
56
+ )}
57
+ {...restProps}
58
+ onload={(evt) => {
59
+ loaded = true;
60
+ if (restProps.onload) {
61
+ restProps.onload(evt);
62
+ }
63
+ }}
64
+ />
65
+
66
+ {#if !(typeof src === 'string') && blur}
67
+ <div
68
+ class="image-blur pointer-events-none absolute inset-0 rounded-2xl backdrop-blur-md data-[loaded=true]:hidden"
69
+ data-loaded={loaded}
70
+ ></div>
71
+ {/if}
72
+ </div>
73
+
74
+ <noscript>
75
+ <style>
76
+ .image-blur {
77
+ display: none;
78
+ }
79
+ </style>
80
+ </noscript>
@@ -0,0 +1,12 @@
1
+ import type { HTMLImgAttributes } from 'svelte/elements';
2
+ import type { WithElementRef, WithoutChildrenOrChild } from 'bits-ui';
3
+ export type ImageProps = WithoutChildrenOrChild<WithElementRef<HTMLImgAttributes, HTMLImageElement>> & {
4
+ useThemeColor?: boolean;
5
+ containerClasses?: string;
6
+ blur?: boolean;
7
+ showNormalOnHover?: boolean;
8
+ alt: string;
9
+ };
10
+ declare const Image: import("svelte").Component<ImageProps, {}, "ref">;
11
+ type Image = ReturnType<typeof Image>;
12
+ export default Image;
@@ -0,0 +1,2 @@
1
+ export { default as Image } from './Image.svelte';
2
+ export type { ImageProps } from './Image.svelte';
@@ -0,0 +1 @@
1
+ export { default as Image } from './Image.svelte';
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils';
3
+ import { Image, type ImageProps } from '../image';
4
+
5
+ let { ref = $bindable(null), containerClasses, ...restProps }: ImageProps = $props();
6
+ </script>
7
+
8
+ <Image
9
+ bind:ref
10
+ {...restProps}
11
+ containerClasses={cn(
12
+ 'border-base-300 dark:border-base-700 overflow-hidden rounded-2xl border',
13
+ containerClasses
14
+ )}
15
+ />
@@ -0,0 +1,4 @@
1
+ import { type ImageProps } from '../image';
2
+ declare const ImageContainer: import("svelte").Component<ImageProps, {}, "ref">;
3
+ type ImageContainer = ReturnType<typeof ImageContainer>;
4
+ export default ImageContainer;
@@ -0,0 +1 @@
1
+ export { default as ImageContainer } from './ImageContainer.svelte';
@@ -0,0 +1 @@
1
+ export { default as ImageContainer } from './ImageContainer.svelte';