@mrintel/villain-ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/components/buttons/Button.svelte +33 -0
  2. package/dist/components/buttons/Button.svelte.d.ts +11 -0
  3. package/dist/components/buttons/ButtonGroup.svelte +30 -0
  4. package/dist/components/buttons/ButtonGroup.svelte.d.ts +8 -0
  5. package/dist/components/buttons/FloatingActionButton.svelte +44 -0
  6. package/dist/components/buttons/FloatingActionButton.svelte.d.ts +11 -0
  7. package/dist/components/buttons/IconButton.svelte +53 -0
  8. package/dist/components/buttons/IconButton.svelte.d.ts +13 -0
  9. package/dist/components/buttons/LinkButton.svelte +37 -0
  10. package/dist/components/buttons/LinkButton.svelte.d.ts +12 -0
  11. package/dist/components/buttons/buttonClasses.d.ts +10 -0
  12. package/dist/components/buttons/buttonClasses.js +10 -0
  13. package/dist/components/buttons/index.d.ts +5 -0
  14. package/dist/components/buttons/index.js +5 -0
  15. package/dist/components/cards/Card.svelte +46 -0
  16. package/dist/components/cards/Card.svelte.d.ts +11 -0
  17. package/dist/components/cards/Container.svelte +33 -0
  18. package/dist/components/cards/Container.svelte.d.ts +10 -0
  19. package/dist/components/cards/Divider.svelte +52 -0
  20. package/dist/components/cards/Divider.svelte.d.ts +9 -0
  21. package/dist/components/cards/Grid.svelte +44 -0
  22. package/dist/components/cards/Grid.svelte.d.ts +10 -0
  23. package/dist/components/cards/Panel.svelte +32 -0
  24. package/dist/components/cards/Panel.svelte.d.ts +10 -0
  25. package/dist/components/cards/SectionHeader.svelte +38 -0
  26. package/dist/components/cards/SectionHeader.svelte.d.ts +11 -0
  27. package/dist/components/cards/index.d.ts +6 -0
  28. package/dist/components/cards/index.js +6 -0
  29. package/dist/components/data/Avatar.svelte +67 -0
  30. package/dist/components/data/Avatar.svelte.d.ts +10 -0
  31. package/dist/components/data/Badge.svelte +32 -0
  32. package/dist/components/data/Badge.svelte.d.ts +8 -0
  33. package/dist/components/data/CodeBlock.svelte +121 -0
  34. package/dist/components/data/CodeBlock.svelte.d.ts +32 -0
  35. package/dist/components/data/List.svelte +64 -0
  36. package/dist/components/data/List.svelte.d.ts +8 -0
  37. package/dist/components/data/Pagination.svelte +123 -0
  38. package/dist/components/data/Pagination.svelte.d.ts +9 -0
  39. package/dist/components/data/Stat.svelte +103 -0
  40. package/dist/components/data/Stat.svelte.d.ts +11 -0
  41. package/dist/components/data/Table.svelte +76 -0
  42. package/dist/components/data/Table.svelte.d.ts +9 -0
  43. package/dist/components/data/Tag.svelte +53 -0
  44. package/dist/components/data/Tag.svelte.d.ts +9 -0
  45. package/dist/components/data/index.d.ts +8 -0
  46. package/dist/components/data/index.js +8 -0
  47. package/dist/components/forms/Checkbox.svelte +51 -0
  48. package/dist/components/forms/Checkbox.svelte.d.ts +10 -0
  49. package/dist/components/forms/FileUpload.svelte +164 -0
  50. package/dist/components/forms/FileUpload.svelte.d.ts +22 -0
  51. package/dist/components/forms/Input.svelte +57 -0
  52. package/dist/components/forms/Input.svelte.d.ts +13 -0
  53. package/dist/components/forms/InputGroup.svelte +7 -0
  54. package/dist/components/forms/InputGroup.svelte.d.ts +20 -0
  55. package/dist/components/forms/RadioGroup.svelte +87 -0
  56. package/dist/components/forms/RadioGroup.svelte.d.ts +15 -0
  57. package/dist/components/forms/RangeSlider.svelte +116 -0
  58. package/dist/components/forms/RangeSlider.svelte.d.ts +14 -0
  59. package/dist/components/forms/Select.svelte +71 -0
  60. package/dist/components/forms/Select.svelte.d.ts +16 -0
  61. package/dist/components/forms/Switch.svelte +56 -0
  62. package/dist/components/forms/Switch.svelte.d.ts +10 -0
  63. package/dist/components/forms/Textarea.svelte +57 -0
  64. package/dist/components/forms/Textarea.svelte.d.ts +13 -0
  65. package/dist/components/forms/index.d.ts +9 -0
  66. package/dist/components/forms/index.js +9 -0
  67. package/dist/components/navigation/Breadcrumbs.svelte +59 -0
  68. package/dist/components/navigation/Breadcrumbs.svelte.d.ts +14 -0
  69. package/dist/components/navigation/ContextMenu.svelte +83 -0
  70. package/dist/components/navigation/ContextMenu.svelte.d.ts +11 -0
  71. package/dist/components/navigation/DropdownMenu.svelte +80 -0
  72. package/dist/components/navigation/DropdownMenu.svelte.d.ts +10 -0
  73. package/dist/components/navigation/Menu.svelte +48 -0
  74. package/dist/components/navigation/Menu.svelte.d.ts +15 -0
  75. package/dist/components/navigation/Navbar.svelte +32 -0
  76. package/dist/components/navigation/Navbar.svelte.d.ts +9 -0
  77. package/dist/components/navigation/Sidebar.svelte +35 -0
  78. package/dist/components/navigation/Sidebar.svelte.d.ts +10 -0
  79. package/dist/components/navigation/Tabs.svelte +54 -0
  80. package/dist/components/navigation/Tabs.svelte.d.ts +15 -0
  81. package/dist/components/navigation/index.d.ts +7 -0
  82. package/dist/components/navigation/index.js +7 -0
  83. package/dist/components/overlays/Alert.svelte +99 -0
  84. package/dist/components/overlays/Alert.svelte.d.ts +11 -0
  85. package/dist/components/overlays/CommandPalette.svelte +217 -0
  86. package/dist/components/overlays/CommandPalette.svelte.d.ts +16 -0
  87. package/dist/components/overlays/Drawer.svelte +167 -0
  88. package/dist/components/overlays/Drawer.svelte.d.ts +14 -0
  89. package/dist/components/overlays/Dropdown.svelte +30 -0
  90. package/dist/components/overlays/Dropdown.svelte.d.ts +9 -0
  91. package/dist/components/overlays/Modal.svelte +130 -0
  92. package/dist/components/overlays/Modal.svelte.d.ts +13 -0
  93. package/dist/components/overlays/Popover.svelte +131 -0
  94. package/dist/components/overlays/Popover.svelte.d.ts +11 -0
  95. package/dist/components/overlays/ProgressBar.svelte +45 -0
  96. package/dist/components/overlays/ProgressBar.svelte.d.ts +10 -0
  97. package/dist/components/overlays/SkeletonLoader.svelte +82 -0
  98. package/dist/components/overlays/SkeletonLoader.svelte.d.ts +9 -0
  99. package/dist/components/overlays/Spinner.svelte +43 -0
  100. package/dist/components/overlays/Spinner.svelte.d.ts +7 -0
  101. package/dist/components/overlays/Toast.svelte +140 -0
  102. package/dist/components/overlays/Toast.svelte.d.ts +13 -0
  103. package/dist/components/overlays/Tooltip.svelte +115 -0
  104. package/dist/components/overlays/Tooltip.svelte.d.ts +10 -0
  105. package/dist/components/overlays/index.d.ts +11 -0
  106. package/dist/components/overlays/index.js +11 -0
  107. package/dist/components/typography/Code.svelte +14 -0
  108. package/dist/components/typography/Code.svelte.d.ts +6 -0
  109. package/dist/components/typography/Heading.svelte +22 -0
  110. package/dist/components/typography/Heading.svelte.d.ts +9 -0
  111. package/dist/components/typography/Text.svelte +24 -0
  112. package/dist/components/typography/Text.svelte.d.ts +9 -0
  113. package/dist/components/typography/index.d.ts +3 -0
  114. package/dist/components/typography/index.js +3 -0
  115. package/dist/components/utilities/Accordion.svelte +67 -0
  116. package/dist/components/utilities/Accordion.svelte.d.ts +14 -0
  117. package/dist/components/utilities/Carousel.svelte +152 -0
  118. package/dist/components/utilities/Carousel.svelte.d.ts +16 -0
  119. package/dist/components/utilities/Collapse.svelte +60 -0
  120. package/dist/components/utilities/Collapse.svelte.d.ts +10 -0
  121. package/dist/components/utilities/Portal.svelte +72 -0
  122. package/dist/components/utilities/Portal.svelte.d.ts +21 -0
  123. package/dist/components/utilities/ScrollArea.svelte +41 -0
  124. package/dist/components/utilities/ScrollArea.svelte.d.ts +8 -0
  125. package/dist/components/utilities/index.d.ts +5 -0
  126. package/dist/components/utilities/index.js +5 -0
  127. package/dist/index.d.ts +15 -175
  128. package/dist/index.js +24 -4560
  129. package/dist/lib/internal/id.d.ts +12 -0
  130. package/dist/lib/internal/id.js +15 -0
  131. package/dist/theme.css +218 -0
  132. package/package.json +14 -7
  133. package/dist/index.css +0 -1
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ import { variantClasses, sizeClasses } from './buttonClasses';
3
+
4
+ interface Props {
5
+ variant?: 'primary' | 'secondary' | 'ghost';
6
+ size?: 'sm' | 'md' | 'lg';
7
+ disabled?: boolean;
8
+ type?: 'button' | 'submit' | 'reset';
9
+ onclick?: (event: MouseEvent) => void;
10
+ children?: import('svelte').Snippet;
11
+ }
12
+
13
+ let {
14
+ variant = 'primary',
15
+ size = 'md',
16
+ disabled = false,
17
+ type = 'button',
18
+ onclick,
19
+ children
20
+ }: Props = $props();
21
+
22
+ const baseClasses = 'inline-flex items-center justify-center rounded-[var(--radius-lg)] font-[var(--font-body)] transition-all duration-300 ease-[var(--ease-luxe)] cursor-pointer';
23
+ const disabledClasses = 'opacity-50 cursor-not-allowed pointer-events-none';
24
+ </script>
25
+
26
+ <button
27
+ {type}
28
+ {disabled}
29
+ onclick={onclick}
30
+ class="{baseClasses} {variantClasses[variant]} {sizeClasses[size]} {disabled ? disabledClasses : ''}"
31
+ >
32
+ {@render children?.()}
33
+ </button>
@@ -0,0 +1,11 @@
1
+ interface Props {
2
+ variant?: 'primary' | 'secondary' | 'ghost';
3
+ size?: 'sm' | 'md' | 'lg';
4
+ disabled?: boolean;
5
+ type?: 'button' | 'submit' | 'reset';
6
+ onclick?: (event: MouseEvent) => void;
7
+ children?: import('svelte').Snippet;
8
+ }
9
+ declare const Button: import("svelte").Component<Props, {}, "">;
10
+ type Button = ReturnType<typeof Button>;
11
+ export default Button;
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ orientation?: 'horizontal' | 'vertical';
4
+ spacing?: boolean;
5
+ children?: import('svelte').Snippet;
6
+ }
7
+
8
+ let {
9
+ orientation = 'horizontal',
10
+ spacing = false,
11
+ children
12
+ }: Props = $props();
13
+
14
+ const orientationClasses = {
15
+ horizontal: 'flex-row',
16
+ vertical: 'flex-col'
17
+ };
18
+
19
+ const mergedBorderClasses = {
20
+ horizontal: '[&>*:not(:first-child)]:ml-[-1px] [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-l-none',
21
+ vertical: '[&>*:not(:first-child)]:mt-[-1px] [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:first-child]:rounded-b-none [&>*:last-child]:rounded-t-none'
22
+ };
23
+
24
+ const spacingClasses = 'gap-2';
25
+ const baseClasses = 'flex bg-transparent';
26
+ </script>
27
+
28
+ <div class="{baseClasses} {orientationClasses[orientation]} {spacing ? spacingClasses : mergedBorderClasses[orientation]}">
29
+ {@render children?.()}
30
+ </div>
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ orientation?: 'horizontal' | 'vertical';
3
+ spacing?: boolean;
4
+ children?: import('svelte').Snippet;
5
+ }
6
+ declare const ButtonGroup: import("svelte").Component<Props, {}, "">;
7
+ type ButtonGroup = ReturnType<typeof ButtonGroup>;
8
+ export default ButtonGroup;
@@ -0,0 +1,44 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
4
+ size?: 'md' | 'lg';
5
+ disabled?: boolean;
6
+ ariaLabel: string;
7
+ onclick?: (event: MouseEvent) => void;
8
+ children?: import('svelte').Snippet;
9
+ }
10
+
11
+ let {
12
+ position = 'bottom-right',
13
+ size = 'lg',
14
+ disabled = false,
15
+ ariaLabel,
16
+ onclick,
17
+ children
18
+ }: Props = $props();
19
+
20
+ const positionClasses = {
21
+ 'bottom-right': 'bottom-6 right-6',
22
+ 'bottom-left': 'bottom-6 left-6',
23
+ 'top-right': 'top-6 right-6',
24
+ 'top-left': 'top-6 left-6'
25
+ };
26
+
27
+ const sizeClasses = {
28
+ md: 'w-14 h-14 text-base',
29
+ lg: 'w-16 h-16 text-lg'
30
+ };
31
+
32
+ const baseClasses = 'fixed z-50 flex items-center justify-center rounded-[var(--radius-pill)] bg-[var(--color-accent)] text-[var(--color-text)] accent-glow hover-lift shadow-[var(--shadow-deep)] transition-all duration-300 ease-[var(--ease-luxe)] cursor-pointer animate-[glow-pulse_3s_ease-in-out_infinite] hover:scale-110';
33
+ const disabledClasses = 'opacity-50 cursor-not-allowed pointer-events-none';
34
+ </script>
35
+
36
+ <button
37
+ type="button"
38
+ {disabled}
39
+ aria-label={ariaLabel}
40
+ onclick={onclick}
41
+ class="{baseClasses} {positionClasses[position]} {sizeClasses[size]} {disabled ? disabledClasses : ''}"
42
+ >
43
+ {@render children?.()}
44
+ </button>
@@ -0,0 +1,11 @@
1
+ interface Props {
2
+ position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
3
+ size?: 'md' | 'lg';
4
+ disabled?: boolean;
5
+ ariaLabel: string;
6
+ onclick?: (event: MouseEvent) => void;
7
+ children?: import('svelte').Snippet;
8
+ }
9
+ declare const FloatingActionButton: import("svelte").Component<Props, {}, "">;
10
+ type FloatingActionButton = ReturnType<typeof FloatingActionButton>;
11
+ export default FloatingActionButton;
@@ -0,0 +1,53 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ variant?: 'primary' | 'secondary' | 'ghost';
4
+ size?: 'sm' | 'md' | 'lg';
5
+ shape?: 'circle' | 'square';
6
+ disabled?: boolean;
7
+ type?: 'button' | 'submit' | 'reset';
8
+ ariaLabel: string;
9
+ onclick?: (event: MouseEvent) => void;
10
+ children?: import('svelte').Snippet;
11
+ }
12
+
13
+ let {
14
+ variant = 'ghost',
15
+ size = 'md',
16
+ shape = 'circle',
17
+ disabled = false,
18
+ type = 'button',
19
+ ariaLabel,
20
+ onclick,
21
+ children
22
+ }: Props = $props();
23
+
24
+ const variantClasses = {
25
+ primary: 'bg-[var(--color-accent)] text-[var(--color-text)] accent-glow',
26
+ secondary: 'bg-transparent text-[var(--color-text)] border border-[var(--color-border-strong)] hover:border-[var(--color-accent)]',
27
+ ghost: 'bg-transparent text-[var(--color-text)] hover:bg-[var(--color-base-2)]'
28
+ };
29
+
30
+ const sizeClasses = {
31
+ sm: 'w-8 h-8 text-sm',
32
+ md: 'w-10 h-10 text-base',
33
+ lg: 'w-12 h-12 text-lg'
34
+ };
35
+
36
+ const shapeClasses = {
37
+ circle: 'rounded-[var(--radius-pill)]',
38
+ square: 'rounded-[var(--radius-lg)]'
39
+ };
40
+
41
+ const baseClasses = 'inline-flex items-center justify-center font-[var(--font-body)] transition-all duration-300 ease-[var(--ease-luxe)] cursor-pointer hover-lift';
42
+ const disabledClasses = 'opacity-50 cursor-not-allowed pointer-events-none';
43
+ </script>
44
+
45
+ <button
46
+ {type}
47
+ {disabled}
48
+ aria-label={ariaLabel}
49
+ onclick={onclick}
50
+ class="{baseClasses} {variantClasses[variant]} {sizeClasses[size]} {shapeClasses[shape]} {disabled ? disabledClasses : ''}"
51
+ >
52
+ {@render children?.()}
53
+ </button>
@@ -0,0 +1,13 @@
1
+ interface Props {
2
+ variant?: 'primary' | 'secondary' | 'ghost';
3
+ size?: 'sm' | 'md' | 'lg';
4
+ shape?: 'circle' | 'square';
5
+ disabled?: boolean;
6
+ type?: 'button' | 'submit' | 'reset';
7
+ ariaLabel: string;
8
+ onclick?: (event: MouseEvent) => void;
9
+ children?: import('svelte').Snippet;
10
+ }
11
+ declare const IconButton: import("svelte").Component<Props, {}, "">;
12
+ type IconButton = ReturnType<typeof IconButton>;
13
+ export default IconButton;
@@ -0,0 +1,37 @@
1
+ <script lang="ts">
2
+ import { variantClasses, sizeClasses } from './buttonClasses';
3
+
4
+ interface Props {
5
+ href: string;
6
+ variant?: 'primary' | 'secondary' | 'ghost';
7
+ size?: 'sm' | 'md' | 'lg';
8
+ disabled?: boolean;
9
+ target?: '_self' | '_blank' | '_parent' | '_top';
10
+ rel?: string;
11
+ children?: import('svelte').Snippet;
12
+ }
13
+
14
+ let {
15
+ href,
16
+ variant = 'primary',
17
+ size = 'md',
18
+ disabled = false,
19
+ target,
20
+ rel,
21
+ children
22
+ }: Props = $props();
23
+
24
+ const baseClasses = 'inline-flex items-center justify-center rounded-[var(--radius-lg)] font-[var(--font-body)] transition-all duration-300 ease-[var(--ease-luxe)] no-underline';
25
+ const disabledClasses = 'opacity-50 pointer-events-none';
26
+
27
+ const computedRel = $derived(target === '_blank' ? (rel || 'noopener noreferrer') : rel);
28
+ </script>
29
+
30
+ <a
31
+ href={disabled ? undefined : href}
32
+ {target}
33
+ rel={computedRel}
34
+ class="{baseClasses} {variantClasses[variant]} {sizeClasses[size]} {disabled ? disabledClasses : ''}"
35
+ >
36
+ {@render children?.()}
37
+ </a>
@@ -0,0 +1,12 @@
1
+ interface Props {
2
+ href: string;
3
+ variant?: 'primary' | 'secondary' | 'ghost';
4
+ size?: 'sm' | 'md' | 'lg';
5
+ disabled?: boolean;
6
+ target?: '_self' | '_blank' | '_parent' | '_top';
7
+ rel?: string;
8
+ children?: import('svelte').Snippet;
9
+ }
10
+ declare const LinkButton: import("svelte").Component<Props, {}, "">;
11
+ type LinkButton = ReturnType<typeof LinkButton>;
12
+ export default LinkButton;
@@ -0,0 +1,10 @@
1
+ export declare const variantClasses: {
2
+ primary: string;
3
+ secondary: string;
4
+ ghost: string;
5
+ };
6
+ export declare const sizeClasses: {
7
+ sm: string;
8
+ md: string;
9
+ lg: string;
10
+ };
@@ -0,0 +1,10 @@
1
+ export const variantClasses = {
2
+ primary: 'bg-[var(--color-accent)] text-[var(--color-text)] accent-glow hover-lift',
3
+ secondary: 'bg-transparent text-[var(--color-text)] border border-[var(--color-border-strong)] hover:border-[var(--color-accent)] hover-lift',
4
+ ghost: 'bg-transparent text-[var(--color-text)] hover:bg-[var(--color-base-2)] hover-lift'
5
+ };
6
+ export const sizeClasses = {
7
+ sm: 'px-3 py-1.5 text-sm',
8
+ md: 'px-4 py-2 text-base',
9
+ lg: 'px-6 py-3 text-lg'
10
+ };
@@ -0,0 +1,5 @@
1
+ export { default as Button } from './Button.svelte';
2
+ export { default as IconButton } from './IconButton.svelte';
3
+ export { default as ButtonGroup } from './ButtonGroup.svelte';
4
+ export { default as LinkButton } from './LinkButton.svelte';
5
+ export { default as FloatingActionButton } from './FloatingActionButton.svelte';
@@ -0,0 +1,5 @@
1
+ export { default as Button } from './Button.svelte';
2
+ export { default as IconButton } from './IconButton.svelte';
3
+ export { default as ButtonGroup } from './ButtonGroup.svelte';
4
+ export { default as LinkButton } from './LinkButton.svelte';
5
+ export { default as FloatingActionButton } from './FloatingActionButton.svelte';
@@ -0,0 +1,46 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ padding?: 'none' | 'sm' | 'md' | 'lg';
6
+ hoverable?: boolean;
7
+ children?: Snippet;
8
+ header?: Snippet;
9
+ footer?: Snippet;
10
+ }
11
+
12
+ let {
13
+ padding = 'md',
14
+ hoverable = false,
15
+ children,
16
+ header,
17
+ footer
18
+ }: Props = $props();
19
+
20
+ const paddingClasses = {
21
+ none: 'p-0',
22
+ sm: 'p-4',
23
+ md: 'p-6',
24
+ lg: 'p-8'
25
+ };
26
+
27
+ const baseClasses = 'glass-panel rounded-xl transition-all duration-300 ease-[var(--ease-luxe)]';
28
+ </script>
29
+
30
+ <div class="{baseClasses} {hoverable ? 'hover-lift' : ''} {paddingClasses[padding]}">
31
+ {#if header}
32
+ <div class="pb-4 mb-4 border-b border-border">
33
+ {@render header()}
34
+ </div>
35
+ {/if}
36
+
37
+ <div>
38
+ {@render children?.()}
39
+ </div>
40
+
41
+ {#if footer}
42
+ <div class="pt-4 mt-4 border-t border-border">
43
+ {@render footer()}
44
+ </div>
45
+ {/if}
46
+ </div>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ padding?: 'none' | 'sm' | 'md' | 'lg';
4
+ hoverable?: boolean;
5
+ children?: Snippet;
6
+ header?: Snippet;
7
+ footer?: Snippet;
8
+ }
9
+ declare const Card: import("svelte").Component<Props, {}, "">;
10
+ type Card = ReturnType<typeof Card>;
11
+ export default Card;
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
6
+ centered?: boolean;
7
+ padding?: boolean;
8
+ children?: Snippet;
9
+ }
10
+
11
+ let {
12
+ size = 'lg',
13
+ centered = true,
14
+ padding = true,
15
+ children
16
+ }: Props = $props();
17
+
18
+ const sizeClasses = {
19
+ sm: 'max-w-screen-sm',
20
+ md: 'max-w-screen-md',
21
+ lg: 'max-w-screen-lg',
22
+ xl: 'max-w-screen-xl',
23
+ full: 'max-w-full'
24
+ };
25
+
26
+ const centeredClasses = centered ? 'mx-auto' : '';
27
+ const paddingClasses = padding ? 'px-4 md:px-6 lg:px-8' : '';
28
+ const baseClasses = 'w-full';
29
+ </script>
30
+
31
+ <div class="{baseClasses} {sizeClasses[size]} {centeredClasses} {paddingClasses}">
32
+ {@render children?.()}
33
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
4
+ centered?: boolean;
5
+ padding?: boolean;
6
+ children?: Snippet;
7
+ }
8
+ declare const Container: import("svelte").Component<Props, {}, "">;
9
+ type Container = ReturnType<typeof Container>;
10
+ export default Container;
@@ -0,0 +1,52 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ orientation?: 'horizontal' | 'vertical';
4
+ spacing?: 'none' | 'sm' | 'md' | 'lg';
5
+ thickness?: 'thin' | 'normal' | 'thick';
6
+ variant?: 'default' | 'strong';
7
+ }
8
+
9
+ let {
10
+ orientation = 'horizontal',
11
+ spacing = 'md',
12
+ thickness = 'normal',
13
+ variant = 'default'
14
+ }: Props = $props();
15
+
16
+ const horizontalThicknessMap = {
17
+ thin: 'border-t-[1px]',
18
+ normal: 'border-t-[1px]',
19
+ thick: 'border-t-[2px]'
20
+ };
21
+
22
+ const verticalThicknessMap = {
23
+ thin: 'border-l-[1px]',
24
+ normal: 'border-l-[1px]',
25
+ thick: 'border-l-[2px]'
26
+ };
27
+
28
+ const horizontalSpacing = {
29
+ none: 'my-0',
30
+ sm: 'my-2',
31
+ md: 'my-4',
32
+ lg: 'my-6'
33
+ };
34
+
35
+ const verticalSpacing = {
36
+ none: 'mx-0',
37
+ sm: 'mx-2',
38
+ md: 'mx-4',
39
+ lg: 'mx-6'
40
+ };
41
+
42
+ const borderColor = variant === 'strong' ? 'border-[var(--color-border-strong)]' : 'border-[var(--color-border)]';
43
+
44
+ const horizontalClasses = `w-full ${horizontalThicknessMap[thickness]} ${borderColor} ${horizontalSpacing[spacing]}`;
45
+ const verticalClasses = `h-full ${verticalThicknessMap[thickness]} ${borderColor} ${verticalSpacing[spacing]}`;
46
+ </script>
47
+
48
+ {#if orientation === 'horizontal'}
49
+ <hr class={horizontalClasses} />
50
+ {:else}
51
+ <div class={verticalClasses}></div>
52
+ {/if}
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ orientation?: 'horizontal' | 'vertical';
3
+ spacing?: 'none' | 'sm' | 'md' | 'lg';
4
+ thickness?: 'thin' | 'normal' | 'thick';
5
+ variant?: 'default' | 'strong';
6
+ }
7
+ declare const Divider: import("svelte").Component<Props, {}, "">;
8
+ type Divider = ReturnType<typeof Divider>;
9
+ export default Divider;
@@ -0,0 +1,44 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ cols?: 1 | 2 | 3 | 4 | 6 | 12;
6
+ gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
7
+ responsive?: boolean;
8
+ children?: Snippet;
9
+ }
10
+
11
+ let {
12
+ cols = 3,
13
+ gap = 'md',
14
+ responsive = true,
15
+ children
16
+ }: Props = $props();
17
+
18
+ const colsClasses = {
19
+ 1: 'grid-cols-1',
20
+ 2: 'grid-cols-2',
21
+ 3: 'grid-cols-3',
22
+ 4: 'grid-cols-4',
23
+ 6: 'grid-cols-6',
24
+ 12: 'grid-cols-12'
25
+ };
26
+
27
+ const gapClasses = {
28
+ none: 'gap-0',
29
+ sm: 'gap-2',
30
+ md: 'gap-4',
31
+ lg: 'gap-6',
32
+ xl: 'gap-8'
33
+ };
34
+
35
+ const responsiveClasses = responsive
36
+ ? `grid-cols-1 ${cols >= 2 ? 'md:grid-cols-2' : ''} lg:${colsClasses[cols]}`
37
+ : colsClasses[cols];
38
+
39
+ const baseClasses = 'grid w-full';
40
+ </script>
41
+
42
+ <div class="{baseClasses} {responsiveClasses} {gapClasses[gap]}">
43
+ {@render children?.()}
44
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ cols?: 1 | 2 | 3 | 4 | 6 | 12;
4
+ gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
5
+ responsive?: boolean;
6
+ children?: Snippet;
7
+ }
8
+ declare const Grid: import("svelte").Component<Props, {}, "">;
9
+ type Grid = ReturnType<typeof Grid>;
10
+ export default Grid;
@@ -0,0 +1,32 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ padding?: 'none' | 'sm' | 'md' | 'lg';
6
+ rounded?: boolean;
7
+ glass?: boolean;
8
+ children?: Snippet;
9
+ }
10
+
11
+ let {
12
+ padding = 'md',
13
+ rounded = true,
14
+ glass = true,
15
+ children
16
+ }: Props = $props();
17
+
18
+ const paddingClasses = {
19
+ none: 'p-0',
20
+ sm: 'p-4',
21
+ md: 'p-6',
22
+ lg: 'p-8'
23
+ };
24
+
25
+ const glassClasses = glass ? 'glass-panel' : 'bg-[var(--color-panel)]';
26
+ const roundedClasses = rounded ? 'rounded-[var(--radius-lg)]' : '';
27
+ const baseClasses = 'transition-all duration-300 ease-[var(--ease-luxe)]';
28
+ </script>
29
+
30
+ <div class="{baseClasses} {glassClasses} {roundedClasses} {paddingClasses[padding]}">
31
+ {@render children?.()}
32
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ padding?: 'none' | 'sm' | 'md' | 'lg';
4
+ rounded?: boolean;
5
+ glass?: boolean;
6
+ children?: Snippet;
7
+ }
8
+ declare const Panel: import("svelte").Component<Props, {}, "">;
9
+ type Panel = ReturnType<typeof Panel>;
10
+ export default Panel;
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
6
+ glow?: boolean;
7
+ subtitle?: string;
8
+ align?: 'left' | 'center' | 'right';
9
+ children?: Snippet;
10
+ }
11
+
12
+ let {
13
+ level = 2,
14
+ glow = true,
15
+ subtitle,
16
+ align = 'left',
17
+ children
18
+ }: Props = $props();
19
+
20
+ const headingTag = `h${level}`;
21
+ const glowClasses = glow ? 'text-glow' : '';
22
+ const alignClasses = `text-${align}`;
23
+
24
+ const headingClasses = `font-[var(--font-heading)] text-[length:var(--text-h${level}-size)] font-[number:var(--text-h${level}-weight)] leading-[var(--text-h${level}-line-height)] text-[var(--color-text)] ${glowClasses} ${alignClasses}`;
25
+ const subtitleClasses = `mt-2 font-[var(--font-body)] text-[length:var(--text-body-size)] text-[var(--color-text-soft)] ${alignClasses}`;
26
+ </script>
27
+
28
+ <div class="mb-8">
29
+ <svelte:element this={headingTag} class={headingClasses}>
30
+ {@render children?.()}
31
+ </svelte:element>
32
+
33
+ {#if subtitle}
34
+ <p class={subtitleClasses}>
35
+ {subtitle}
36
+ </p>
37
+ {/if}
38
+ </div>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
4
+ glow?: boolean;
5
+ subtitle?: string;
6
+ align?: 'left' | 'center' | 'right';
7
+ children?: Snippet;
8
+ }
9
+ declare const SectionHeader: import("svelte").Component<Props, {}, "">;
10
+ type SectionHeader = ReturnType<typeof SectionHeader>;
11
+ export default SectionHeader;
@@ -0,0 +1,6 @@
1
+ export { default as Card } from './Card.svelte';
2
+ export { default as Panel } from './Panel.svelte';
3
+ export { default as Grid } from './Grid.svelte';
4
+ export { default as Container } from './Container.svelte';
5
+ export { default as SectionHeader } from './SectionHeader.svelte';
6
+ export { default as Divider } from './Divider.svelte';
@@ -0,0 +1,6 @@
1
+ export { default as Card } from './Card.svelte';
2
+ export { default as Panel } from './Panel.svelte';
3
+ export { default as Grid } from './Grid.svelte';
4
+ export { default as Container } from './Container.svelte';
5
+ export { default as SectionHeader } from './SectionHeader.svelte';
6
+ export { default as Divider } from './Divider.svelte';