sve-ui 0.1.2 → 0.2.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 (161) hide show
  1. package/dist/ThemeProvider.svelte +46 -0
  2. package/dist/ThemeProvider.svelte.d.ts +12 -0
  3. package/dist/ThemeProvider.svelte.d.ts.map +1 -0
  4. package/dist/components/Alert/AlertDescription.svelte +31 -0
  5. package/dist/components/Alert/AlertDescription.svelte.d.ts +10 -0
  6. package/dist/components/Alert/AlertDescription.svelte.d.ts.map +1 -0
  7. package/dist/components/Alert/AlertRoot.svelte +103 -0
  8. package/dist/components/Alert/AlertRoot.svelte.d.ts +29 -0
  9. package/dist/components/Alert/AlertRoot.svelte.d.ts.map +1 -0
  10. package/dist/components/Alert/AlertTitle.svelte +34 -0
  11. package/dist/components/Alert/AlertTitle.svelte.d.ts +12 -0
  12. package/dist/components/Alert/AlertTitle.svelte.d.ts.map +1 -0
  13. package/dist/components/Alert/index.d.ts +11 -0
  14. package/dist/components/Alert/index.d.ts.map +1 -0
  15. package/dist/components/Alert/index.js +10 -0
  16. package/dist/components/Avatar/AvatarFallback.svelte +33 -0
  17. package/dist/components/Avatar/AvatarFallback.svelte.d.ts +12 -0
  18. package/dist/components/Avatar/AvatarFallback.svelte.d.ts.map +1 -0
  19. package/dist/components/Avatar/AvatarImage.svelte +27 -0
  20. package/dist/components/Avatar/AvatarImage.svelte.d.ts +12 -0
  21. package/dist/components/Avatar/AvatarImage.svelte.d.ts.map +1 -0
  22. package/dist/components/Avatar/AvatarRoot.svelte +67 -0
  23. package/dist/components/Avatar/AvatarRoot.svelte.d.ts +16 -0
  24. package/dist/components/Avatar/AvatarRoot.svelte.d.ts.map +1 -0
  25. package/dist/components/Avatar/index.d.ts +15 -0
  26. package/dist/components/Avatar/index.d.ts.map +1 -0
  27. package/dist/components/Avatar/index.js +14 -0
  28. package/dist/components/Badge/Badge.svelte +125 -0
  29. package/dist/components/Badge/Badge.svelte.d.ts +37 -0
  30. package/dist/components/Badge/Badge.svelte.d.ts.map +1 -0
  31. package/dist/components/Button/Button.svelte +296 -112
  32. package/dist/components/Button/Button.svelte.d.ts +34 -48
  33. package/dist/components/Button/Button.svelte.d.ts.map +1 -0
  34. package/dist/components/Card/CardContent.svelte +33 -0
  35. package/dist/components/Card/CardContent.svelte.d.ts +10 -0
  36. package/dist/components/Card/CardContent.svelte.d.ts.map +1 -0
  37. package/dist/components/Card/CardFooter.svelte +33 -0
  38. package/dist/components/Card/CardFooter.svelte.d.ts +10 -0
  39. package/dist/components/Card/CardFooter.svelte.d.ts.map +1 -0
  40. package/dist/components/Card/CardHeader.svelte +33 -0
  41. package/dist/components/Card/CardHeader.svelte.d.ts +10 -0
  42. package/dist/components/Card/CardHeader.svelte.d.ts.map +1 -0
  43. package/dist/components/Card/CardRoot.svelte +91 -0
  44. package/dist/components/Card/CardRoot.svelte.d.ts +28 -0
  45. package/dist/components/Card/CardRoot.svelte.d.ts.map +1 -0
  46. package/dist/components/Card/index.d.ts +13 -0
  47. package/dist/components/Card/index.d.ts.map +1 -0
  48. package/dist/components/Card/index.js +12 -0
  49. package/dist/components/Dialog/DialogContent.svelte +47 -0
  50. package/dist/components/Dialog/DialogContent.svelte.d.ts +10 -0
  51. package/dist/components/Dialog/DialogContent.svelte.d.ts.map +1 -0
  52. package/dist/components/Dialog/DialogDescription.svelte +29 -0
  53. package/dist/components/Dialog/DialogDescription.svelte.d.ts +10 -0
  54. package/dist/components/Dialog/DialogDescription.svelte.d.ts.map +1 -0
  55. package/dist/components/Dialog/DialogOverlay.svelte +32 -0
  56. package/dist/components/Dialog/DialogOverlay.svelte.d.ts +10 -0
  57. package/dist/components/Dialog/DialogOverlay.svelte.d.ts.map +1 -0
  58. package/dist/components/Dialog/DialogTitle.svelte +30 -0
  59. package/dist/components/Dialog/DialogTitle.svelte.d.ts +10 -0
  60. package/dist/components/Dialog/DialogTitle.svelte.d.ts.map +1 -0
  61. package/dist/components/Dialog/index.d.ts +21 -0
  62. package/dist/components/Dialog/index.d.ts.map +1 -0
  63. package/dist/components/Dialog/index.js +22 -0
  64. package/dist/components/DropdownMenu/DropdownMenuContent.svelte +40 -0
  65. package/dist/components/DropdownMenu/DropdownMenuContent.svelte.d.ts +10 -0
  66. package/dist/components/DropdownMenu/DropdownMenuContent.svelte.d.ts.map +1 -0
  67. package/dist/components/DropdownMenu/DropdownMenuGroup.svelte +18 -0
  68. package/dist/components/DropdownMenu/DropdownMenuGroup.svelte.d.ts +10 -0
  69. package/dist/components/DropdownMenu/DropdownMenuGroup.svelte.d.ts.map +1 -0
  70. package/dist/components/DropdownMenu/DropdownMenuItem.svelte +40 -0
  71. package/dist/components/DropdownMenu/DropdownMenuItem.svelte.d.ts +10 -0
  72. package/dist/components/DropdownMenu/DropdownMenuItem.svelte.d.ts.map +1 -0
  73. package/dist/components/DropdownMenu/DropdownMenuLabel.svelte +34 -0
  74. package/dist/components/DropdownMenu/DropdownMenuLabel.svelte.d.ts +10 -0
  75. package/dist/components/DropdownMenu/DropdownMenuLabel.svelte.d.ts.map +1 -0
  76. package/dist/components/DropdownMenu/DropdownMenuSeparator.svelte +25 -0
  77. package/dist/components/DropdownMenu/DropdownMenuSeparator.svelte.d.ts +10 -0
  78. package/dist/components/DropdownMenu/DropdownMenuSeparator.svelte.d.ts.map +1 -0
  79. package/dist/components/DropdownMenu/index.d.ts +31 -0
  80. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  81. package/dist/components/DropdownMenu/index.js +33 -0
  82. package/dist/components/Heading/Heading.svelte +72 -0
  83. package/dist/components/Heading/Heading.svelte.d.ts +18 -0
  84. package/dist/components/Heading/Heading.svelte.d.ts.map +1 -0
  85. package/dist/components/Input/Input.svelte +151 -0
  86. package/dist/components/Input/Input.svelte.d.ts +25 -0
  87. package/dist/components/Input/Input.svelte.d.ts.map +1 -0
  88. package/dist/components/Popover/PopoverContent.svelte +40 -0
  89. package/dist/components/Popover/PopoverContent.svelte.d.ts +10 -0
  90. package/dist/components/Popover/PopoverContent.svelte.d.ts.map +1 -0
  91. package/dist/components/Popover/index.d.ts +20 -0
  92. package/dist/components/Popover/index.d.ts.map +1 -0
  93. package/dist/components/Popover/index.js +21 -0
  94. package/dist/components/Spinner/Spinner.svelte +82 -0
  95. package/dist/components/Spinner/Spinner.svelte.d.ts +13 -0
  96. package/dist/components/Spinner/Spinner.svelte.d.ts.map +1 -0
  97. package/dist/components/Text/Text.svelte +84 -45
  98. package/dist/components/Text/Text.svelte.d.ts +20 -44
  99. package/dist/components/Text/Text.svelte.d.ts.map +1 -0
  100. package/dist/components/Tooltip/TooltipContent.svelte +41 -0
  101. package/dist/components/Tooltip/TooltipContent.svelte.d.ts +10 -0
  102. package/dist/components/Tooltip/TooltipContent.svelte.d.ts.map +1 -0
  103. package/dist/components/Tooltip/index.d.ts +19 -0
  104. package/dist/components/Tooltip/index.d.ts.map +1 -0
  105. package/dist/components/Tooltip/index.js +20 -0
  106. package/dist/context.d.ts +14 -0
  107. package/dist/context.d.ts.map +1 -0
  108. package/dist/context.js +16 -0
  109. package/dist/index.d.ts +28 -26
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +43 -13
  112. package/dist/internal/variants.d.ts +44 -0
  113. package/dist/internal/variants.d.ts.map +1 -0
  114. package/dist/internal/variants.js +54 -0
  115. package/dist/theme/breakpoints.d.ts +1 -0
  116. package/dist/theme/breakpoints.d.ts.map +1 -0
  117. package/dist/theme/index.d.ts +12 -182
  118. package/dist/theme/index.d.ts.map +1 -0
  119. package/dist/theme/index.js +13 -19
  120. package/dist/theme/palette.d.ts +153 -0
  121. package/dist/theme/palette.d.ts.map +1 -0
  122. package/dist/theme/palette.js +85 -0
  123. package/dist/theme/radius.d.ts +1 -0
  124. package/dist/theme/radius.d.ts.map +1 -0
  125. package/dist/theme/sizes.d.ts +1 -0
  126. package/dist/theme/sizes.d.ts.map +1 -0
  127. package/dist/theme/spacing.d.ts +1 -0
  128. package/dist/theme/spacing.d.ts.map +1 -0
  129. package/dist/theme/theme.css +268 -0
  130. package/dist/theme/tokens.d.ts +108 -0
  131. package/dist/theme/tokens.d.ts.map +1 -0
  132. package/dist/theme/tokens.js +236 -0
  133. package/dist/theme/typography.d.ts +1 -0
  134. package/dist/theme/typography.d.ts.map +1 -0
  135. package/package.json +74 -67
  136. package/README.md +0 -94
  137. package/dist/components/Box/Box.svelte +0 -48
  138. package/dist/components/Box/Box.svelte.d.ts +0 -160
  139. package/dist/components/Center/Center.svelte +0 -15
  140. package/dist/components/Center/Center.svelte.d.ts +0 -25
  141. package/dist/components/Circle/Circle.svelte +0 -9
  142. package/dist/components/Circle/Circle.svelte.d.ts +0 -34
  143. package/dist/components/CodeExample/CodeExample.svelte +0 -128
  144. package/dist/components/CodeExample/CodeExample.svelte.d.ts +0 -46
  145. package/dist/components/Flex/Flex.svelte +0 -26
  146. package/dist/components/Flex/Flex.svelte.d.ts +0 -34
  147. package/dist/components/Grid/Grid.svelte +0 -16
  148. package/dist/components/Grid/Grid.svelte.d.ts +0 -44
  149. package/dist/components/GridItem/GridItem.svelte +0 -22
  150. package/dist/components/GridItem/GridItem.svelte.d.ts +0 -29
  151. package/dist/components/Loaders/DotPulse.svelte +0 -62
  152. package/dist/components/Loaders/DotPulse.svelte.d.ts +0 -40
  153. package/dist/components/Loaders/DotSpinner.svelte +0 -121
  154. package/dist/components/Loaders/DotSpinner.svelte.d.ts +0 -40
  155. package/dist/components/Loaders/DotWave.svelte +0 -67
  156. package/dist/components/Loaders/DotWave.svelte.d.ts +0 -40
  157. package/dist/components/Spacer/Spacer.svelte +0 -5
  158. package/dist/components/Spacer/Spacer.svelte.d.ts +0 -21
  159. package/dist/components/Square/Square.svelte +0 -17
  160. package/dist/components/Square/Square.svelte.d.ts +0 -34
  161. /package/{LICENCE → LICENSE} +0 -0
@@ -0,0 +1,125 @@
1
+ <script module lang="ts">
2
+ import { defineVariants } from '../../internal/variants';
3
+
4
+ type Variant = 'solid' | 'outline' | 'subtle';
5
+ type Color = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'default';
6
+ type Size = 'sm' | 'md' | 'lg';
7
+
8
+ export const badgeVariants = defineVariants({
9
+ base: 'sve-badge',
10
+ variants: {
11
+ variant: {
12
+ solid: 'sve-badge--solid',
13
+ outline: 'sve-badge--outline',
14
+ subtle: 'sve-badge--subtle',
15
+ },
16
+ color: {
17
+ primary: 'sve-c-primary',
18
+ secondary: 'sve-c-secondary',
19
+ success: 'sve-c-success',
20
+ warning: 'sve-c-warning',
21
+ danger: 'sve-c-danger',
22
+ default: 'sve-c-default',
23
+ },
24
+ size: {
25
+ sm: 'sve-badge--sm',
26
+ md: 'sve-badge--md',
27
+ lg: 'sve-badge--lg',
28
+ },
29
+ },
30
+ defaultVariants: {
31
+ variant: 'subtle',
32
+ color: 'default',
33
+ size: 'md',
34
+ },
35
+ });
36
+
37
+ export type { Variant, Color, Size };
38
+ </script>
39
+
40
+ <script lang="ts">
41
+ import type { HTMLAttributes } from 'svelte/elements';
42
+ import type { Snippet } from 'svelte';
43
+
44
+ interface Props extends Omit<HTMLAttributes<HTMLSpanElement>, 'class'> {
45
+ variant?: Variant;
46
+ color?: Color;
47
+ size?: Size;
48
+ class?: string;
49
+ children?: Snippet;
50
+ }
51
+
52
+ let {
53
+ variant,
54
+ color,
55
+ size,
56
+ class: cls,
57
+ children,
58
+ ...rest
59
+ }: Props = $props();
60
+
61
+ const className = $derived(
62
+ badgeVariants({ variant, color, size, class: cls })
63
+ );
64
+ </script>
65
+
66
+ <span class={className} {...rest}>
67
+ {@render children?.()}
68
+ </span>
69
+
70
+ <style>
71
+ .sve-badge {
72
+ display: inline-flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ font-family: var(--sve-font-family-sans);
76
+ font-weight: var(--sve-font-weight-medium);
77
+ line-height: var(--sve-line-height-normal);
78
+ border-radius: var(--sve-radius-full);
79
+ border: 1px solid transparent;
80
+ white-space: nowrap;
81
+ }
82
+
83
+ /* --- Sizes --- */
84
+ .sve-badge--sm {
85
+ padding: 0 var(--sve-space-2);
86
+ font-size: var(--sve-font-size-sm);
87
+ height: 1.25rem;
88
+ }
89
+
90
+ .sve-badge--md {
91
+ padding: 0 var(--sve-space-3);
92
+ font-size: var(--sve-font-size-sm);
93
+ height: 1.5rem;
94
+ }
95
+
96
+ .sve-badge--lg {
97
+ padding: 0 var(--sve-space-4);
98
+ font-size: var(--sve-font-size-md);
99
+ height: 1.75rem;
100
+ }
101
+
102
+ /* --- Solid variant --- */
103
+ .sve-badge--solid.sve-c-primary { background-color: var(--sve-color-primary); color: var(--sve-color-primary-foreground); border-color: var(--sve-color-primary); }
104
+ .sve-badge--solid.sve-c-secondary { background-color: var(--sve-color-secondary); color: var(--sve-color-secondary-foreground); border-color: var(--sve-color-secondary); }
105
+ .sve-badge--solid.sve-c-success { background-color: var(--sve-color-success); color: var(--sve-color-success-foreground); border-color: var(--sve-color-success); }
106
+ .sve-badge--solid.sve-c-warning { background-color: var(--sve-color-warning); color: var(--sve-color-warning-foreground); border-color: var(--sve-color-warning); }
107
+ .sve-badge--solid.sve-c-danger { background-color: var(--sve-color-danger); color: var(--sve-color-danger-foreground); border-color: var(--sve-color-danger); }
108
+ .sve-badge--solid.sve-c-default { background-color: var(--sve-color-default); color: var(--sve-color-default-foreground); border-color: var(--sve-color-default); }
109
+
110
+ /* --- Outline variant --- */
111
+ .sve-badge--outline.sve-c-primary { background-color: transparent; color: var(--sve-color-primary); border-color: var(--sve-color-primary-border); }
112
+ .sve-badge--outline.sve-c-secondary { background-color: transparent; color: var(--sve-color-secondary); border-color: var(--sve-color-secondary-border); }
113
+ .sve-badge--outline.sve-c-success { background-color: transparent; color: var(--sve-color-success); border-color: var(--sve-color-success-border); }
114
+ .sve-badge--outline.sve-c-warning { background-color: transparent; color: var(--sve-color-warning-foreground); border-color: var(--sve-color-warning-border); }
115
+ .sve-badge--outline.sve-c-danger { background-color: transparent; color: var(--sve-color-danger); border-color: var(--sve-color-danger-border); }
116
+ .sve-badge--outline.sve-c-default { background-color: transparent; color: var(--sve-color-default-foreground); border-color: var(--sve-color-default-border); }
117
+
118
+ /* --- Subtle variant --- */
119
+ .sve-badge--subtle.sve-c-primary { background-color: var(--sve-color-primary-surface); color: var(--sve-color-primary); border-color: transparent; }
120
+ .sve-badge--subtle.sve-c-secondary { background-color: var(--sve-color-secondary-surface); color: var(--sve-color-secondary); border-color: transparent; }
121
+ .sve-badge--subtle.sve-c-success { background-color: var(--sve-color-success-surface); color: var(--sve-color-success); border-color: transparent; }
122
+ .sve-badge--subtle.sve-c-warning { background-color: var(--sve-color-warning-surface); color: var(--sve-color-warning-foreground); border-color: transparent; }
123
+ .sve-badge--subtle.sve-c-danger { background-color: var(--sve-color-danger-surface); color: var(--sve-color-danger); border-color: transparent; }
124
+ .sve-badge--subtle.sve-c-default { background-color: var(--sve-color-default-surface); color: var(--sve-color-default-foreground); border-color: transparent; }
125
+ </style>
@@ -0,0 +1,37 @@
1
+ type Variant = 'solid' | 'outline' | 'subtle';
2
+ type Color = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'default';
3
+ type Size = 'sm' | 'md' | 'lg';
4
+ export declare const badgeVariants: (props?: import("../../internal/variants").VariantProps<{
5
+ variant: {
6
+ solid: string;
7
+ outline: string;
8
+ subtle: string;
9
+ };
10
+ color: {
11
+ primary: string;
12
+ secondary: string;
13
+ success: string;
14
+ warning: string;
15
+ danger: string;
16
+ default: string;
17
+ };
18
+ size: {
19
+ sm: string;
20
+ md: string;
21
+ lg: string;
22
+ };
23
+ }> | undefined) => string;
24
+ export type { Variant, Color, Size };
25
+ import type { HTMLAttributes } from 'svelte/elements';
26
+ import type { Snippet } from 'svelte';
27
+ interface Props extends Omit<HTMLAttributes<HTMLSpanElement>, 'class'> {
28
+ variant?: Variant;
29
+ color?: Color;
30
+ size?: Size;
31
+ class?: string;
32
+ children?: Snippet;
33
+ }
34
+ declare const Badge: import("svelte").Component<Props, {}, "">;
35
+ type Badge = ReturnType<typeof Badge>;
36
+ export default Badge;
37
+ //# sourceMappingURL=Badge.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Badge/Badge.svelte.ts"],"names":[],"mappings":"AAKE,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC9C,KAAK,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AACpF,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/B,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;yBA2BxB,CAAC;AAEH,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAM,SAAQ,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA8BH,QAAA,MAAM,KAAK,2CAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
@@ -1,120 +1,304 @@
1
- <!-- TO DO
2
- La idea seria que reciba Padding 1, 2, 3, 4
3
- Y utilizar una clase css global para que se aplique el padding
4
-
5
- ej:
6
- .padding-style-1 {
7
- padding: 2px 4px;
8
- }
9
-
10
- -->
11
-
12
- <script>export let label = "Button";
13
- export let onClick = () => {
14
- };
15
- export let color = "blue";
16
- export let size = "md";
17
- export let disabled = false;
18
- export let style = "";
19
- export let bg = "";
20
- export let p = "3";
21
- let props = { ...$$restProps };
1
+ <script module lang="ts">
2
+ import { defineVariants } from '../../internal/variants';
3
+
4
+ type Variant = 'solid' | 'outline' | 'ghost' | 'flat';
5
+ type Color = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'default';
6
+ type Size = 'sm' | 'md' | 'lg';
7
+
8
+ // Defined once at module level — not recreated per instance.
9
+ export const buttonVariants = defineVariants({
10
+ base: 'sve-button',
11
+ variants: {
12
+ variant: {
13
+ solid: 'sve-button--solid',
14
+ outline: 'sve-button--outline',
15
+ ghost: 'sve-button--ghost',
16
+ flat: 'sve-button--flat',
17
+ },
18
+ color: {
19
+ primary: 'sve-c-primary',
20
+ secondary: 'sve-c-secondary',
21
+ success: 'sve-c-success',
22
+ warning: 'sve-c-warning',
23
+ danger: 'sve-c-danger',
24
+ default: 'sve-c-default',
25
+ },
26
+ size: {
27
+ sm: 'sve-button--sm',
28
+ md: 'sve-button--md',
29
+ lg: 'sve-button--lg',
30
+ },
31
+ },
32
+ defaultVariants: {
33
+ variant: 'solid',
34
+ color: 'default',
35
+ size: 'md',
36
+ },
37
+ });
38
+
39
+ export type { Variant, Color, Size };
40
+ </script>
41
+
42
+ <script lang="ts">
43
+ import type { HTMLButtonAttributes } from 'svelte/elements';
44
+ import type { Snippet } from 'svelte';
45
+
46
+ interface Props extends Omit<HTMLButtonAttributes, 'class'> {
47
+ variant?: Variant;
48
+ color?: Color;
49
+ size?: Size;
50
+ class?: string;
51
+ children?: Snippet;
52
+ }
53
+
54
+ let {
55
+ variant,
56
+ color,
57
+ size,
58
+ disabled = false,
59
+ class: cls,
60
+ onclick,
61
+ children,
62
+ ...rest
63
+ }: Props = $props();
64
+
65
+ const className = $derived(
66
+ buttonVariants({ variant, color, size, class: cls })
67
+ );
22
68
  </script>
23
69
 
24
70
  <button
25
- class={`${props.class} button padding-${p} ${color} ${size} ${style}`}
26
- on:click={onClick}
27
- style={`background-color: ${bg}`}
28
- {disabled}
71
+ class={className}
72
+ {disabled}
73
+ onclick={disabled ? undefined : onclick}
74
+ {...rest}
29
75
  >
30
- <slot>{label}</slot>
76
+ {@render children?.()}
31
77
  </button>
32
78
 
33
79
  <style>
34
- .button {
35
- border: none;
36
- border-radius: 4px;
37
- font-size: 1rem;
38
- font-weight: bold;
39
- padding: 8px 16px;
40
- cursor: pointer;
41
- display: flex;
42
- align-items: center;
43
- justify-content: center;
44
- }
45
- .blue {
46
- background-color: #007bff;
47
- color: #fff;
48
- }
49
- .red {
50
- background-color: #dc3545;
51
- color: #fff;
52
- }
53
- .green {
54
- background-color: #28a745;
55
- color: #fff;
56
- }
57
-
58
- .xsm {
59
- font-size: 8px;
60
- padding: 2px 4px;
61
- }
62
-
63
- .sm {
64
- font-size: 12px;
65
- padding: 4px 8px;
66
- }
67
-
68
- .md {
69
- font-size: 16px;
70
- padding: 8px 16px;
71
- }
72
-
73
- .lg {
74
- font-size: 24px;
75
- padding: 12px 24px;
76
- }
77
-
78
- .xl {
79
- font-size: 32px;
80
- padding: 16px 32px;
81
- }
82
-
83
- .xxl {
84
- font-size: 48px;
85
- padding: 24px 48px;
86
- }
87
-
88
- .xxxl {
89
- font-size: 64px;
90
- padding: 32px 64px;
91
- }
92
-
93
- .button:hover {
94
- opacity: 0.94;
95
- transition: 0.2s ease-in-out;
96
- }
97
- button:disabled {
98
- cursor: not-allowed;
99
- opacity: 0.5;
100
- }
101
- button:disabled:hover {
102
- opacity: 0.5;
103
- }
104
-
105
- .padding-1 {
106
- padding: 2px 4px;
107
- }
108
-
109
- .padding-2 {
110
- padding: 4px 8px;
111
- }
112
-
113
- .padding-3 {
114
- padding: 8px 16px;
115
- }
116
-
117
- .padding-4 {
118
- padding: 16px 32px;
119
- }
80
+ .sve-button {
81
+ display: inline-flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ gap: var(--sve-space-2);
85
+ font-family: var(--sve-font-family-sans);
86
+ font-weight: var(--sve-font-weight-medium);
87
+ line-height: var(--sve-line-height-normal);
88
+ border-radius: var(--sve-radius-md);
89
+ border: 1px solid transparent;
90
+ cursor: pointer;
91
+ text-decoration: none;
92
+ transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
93
+ outline-offset: 2px;
94
+ }
95
+
96
+ /* Focus ring for accessibility */
97
+ .sve-button:focus-visible {
98
+ outline: 2px solid var(--sve-color-primary);
99
+ outline-offset: 2px;
100
+ }
101
+
102
+ /* Disabled state */
103
+ .sve-button:disabled,
104
+ .sve-button[disabled] {
105
+ cursor: not-allowed;
106
+ opacity: 0.5;
107
+ pointer-events: none;
108
+ }
109
+
110
+ /* --- Sizes --- */
111
+ .sve-button--sm {
112
+ padding: var(--sve-space-1) var(--sve-space-3);
113
+ font-size: var(--sve-font-size-sm);
114
+ }
115
+
116
+ .sve-button--md {
117
+ padding: var(--sve-space-2) var(--sve-space-4);
118
+ font-size: var(--sve-font-size-md);
119
+ }
120
+
121
+ .sve-button--lg {
122
+ padding: var(--sve-space-3) var(--sve-space-6);
123
+ font-size: var(--sve-font-size-lg);
124
+ }
125
+
126
+ /* --- Solid variant --- */
127
+ .sve-button--solid.sve-c-primary {
128
+ background-color: var(--sve-color-primary);
129
+ color: var(--sve-color-primary-foreground);
130
+ border-color: var(--sve-color-primary);
131
+ }
132
+ .sve-button--solid.sve-c-primary:hover:not(:disabled) {
133
+ background-color: var(--sve-color-primary-hover);
134
+ border-color: var(--sve-color-primary-hover);
135
+ }
136
+ .sve-button--solid.sve-c-primary:active:not(:disabled) {
137
+ background-color: var(--sve-color-primary-active);
138
+ border-color: var(--sve-color-primary-active);
139
+ }
140
+
141
+ .sve-button--solid.sve-c-secondary {
142
+ background-color: var(--sve-color-secondary);
143
+ color: var(--sve-color-secondary-foreground);
144
+ border-color: var(--sve-color-secondary);
145
+ }
146
+ .sve-button--solid.sve-c-secondary:hover:not(:disabled) {
147
+ background-color: var(--sve-color-secondary-hover);
148
+ border-color: var(--sve-color-secondary-hover);
149
+ }
150
+
151
+ .sve-button--solid.sve-c-success {
152
+ background-color: var(--sve-color-success);
153
+ color: var(--sve-color-success-foreground);
154
+ border-color: var(--sve-color-success);
155
+ }
156
+ .sve-button--solid.sve-c-success:hover:not(:disabled) {
157
+ background-color: var(--sve-color-success-hover);
158
+ border-color: var(--sve-color-success-hover);
159
+ }
160
+
161
+ .sve-button--solid.sve-c-warning {
162
+ background-color: var(--sve-color-warning);
163
+ color: var(--sve-color-warning-foreground);
164
+ border-color: var(--sve-color-warning);
165
+ }
166
+ .sve-button--solid.sve-c-warning:hover:not(:disabled) {
167
+ background-color: var(--sve-color-warning-hover);
168
+ border-color: var(--sve-color-warning-hover);
169
+ }
170
+
171
+ .sve-button--solid.sve-c-danger {
172
+ background-color: var(--sve-color-danger);
173
+ color: var(--sve-color-danger-foreground);
174
+ border-color: var(--sve-color-danger);
175
+ }
176
+ .sve-button--solid.sve-c-danger:hover:not(:disabled) {
177
+ background-color: var(--sve-color-danger-hover);
178
+ border-color: var(--sve-color-danger-hover);
179
+ }
180
+
181
+ .sve-button--solid.sve-c-default {
182
+ background-color: var(--sve-color-default);
183
+ color: var(--sve-color-default-foreground);
184
+ border-color: var(--sve-color-default);
185
+ }
186
+ .sve-button--solid.sve-c-default:hover:not(:disabled) {
187
+ background-color: var(--sve-color-default-hover);
188
+ border-color: var(--sve-color-default-hover);
189
+ }
190
+
191
+ /* --- Outline variant --- */
192
+ .sve-button--outline.sve-c-primary {
193
+ background-color: transparent;
194
+ color: var(--sve-color-primary);
195
+ border-color: var(--sve-color-primary-border);
196
+ }
197
+ .sve-button--outline.sve-c-primary:hover:not(:disabled) {
198
+ background-color: var(--sve-color-primary-surface);
199
+ }
200
+
201
+ .sve-button--outline.sve-c-secondary {
202
+ background-color: transparent;
203
+ color: var(--sve-color-secondary);
204
+ border-color: var(--sve-color-secondary-border);
205
+ }
206
+ .sve-button--outline.sve-c-secondary:hover:not(:disabled) {
207
+ background-color: var(--sve-color-secondary-surface);
208
+ }
209
+
210
+ .sve-button--outline.sve-c-danger {
211
+ background-color: transparent;
212
+ color: var(--sve-color-danger);
213
+ border-color: var(--sve-color-danger-border);
214
+ }
215
+ .sve-button--outline.sve-c-danger:hover:not(:disabled) {
216
+ background-color: var(--sve-color-danger-surface);
217
+ }
218
+
219
+ .sve-button--outline.sve-c-success {
220
+ background-color: transparent;
221
+ color: var(--sve-color-success);
222
+ border-color: var(--sve-color-success-border);
223
+ }
224
+
225
+ .sve-button--outline.sve-c-warning {
226
+ background-color: transparent;
227
+ color: var(--sve-color-warning);
228
+ border-color: var(--sve-color-warning-border);
229
+ }
230
+
231
+ .sve-button--outline.sve-c-default {
232
+ background-color: transparent;
233
+ color: var(--sve-color-default-foreground);
234
+ border-color: var(--sve-color-default-border);
235
+ }
236
+
237
+ /* --- Ghost variant --- */
238
+ .sve-button--ghost {
239
+ background-color: transparent;
240
+ border-color: transparent;
241
+ }
242
+ .sve-button--ghost.sve-c-primary {
243
+ color: var(--sve-color-primary);
244
+ }
245
+ .sve-button--ghost.sve-c-primary:hover:not(:disabled) {
246
+ background-color: var(--sve-color-primary-surface);
247
+ }
248
+ .sve-button--ghost.sve-c-secondary {
249
+ color: var(--sve-color-secondary);
250
+ }
251
+ .sve-button--ghost.sve-c-secondary:hover:not(:disabled) {
252
+ background-color: var(--sve-color-secondary-surface);
253
+ }
254
+ .sve-button--ghost.sve-c-danger {
255
+ color: var(--sve-color-danger);
256
+ }
257
+ .sve-button--ghost.sve-c-danger:hover:not(:disabled) {
258
+ background-color: var(--sve-color-danger-surface);
259
+ }
260
+ .sve-button--ghost.sve-c-success {
261
+ color: var(--sve-color-success);
262
+ }
263
+ .sve-button--ghost.sve-c-warning {
264
+ color: var(--sve-color-warning);
265
+ }
266
+ .sve-button--ghost.sve-c-default {
267
+ color: var(--sve-color-default-foreground);
268
+ }
269
+ .sve-button--ghost.sve-c-default:hover:not(:disabled) {
270
+ background-color: var(--sve-color-default-surface);
271
+ }
272
+
273
+ /* --- Flat variant --- */
274
+ .sve-button--flat {
275
+ border-color: transparent;
276
+ }
277
+ .sve-button--flat.sve-c-primary {
278
+ background-color: var(--sve-color-primary-surface);
279
+ color: var(--sve-color-primary);
280
+ }
281
+ .sve-button--flat.sve-c-primary:hover:not(:disabled) {
282
+ background-color: var(--sve-color-primary-border);
283
+ }
284
+ .sve-button--flat.sve-c-secondary {
285
+ background-color: var(--sve-color-secondary-surface);
286
+ color: var(--sve-color-secondary);
287
+ }
288
+ .sve-button--flat.sve-c-danger {
289
+ background-color: var(--sve-color-danger-surface);
290
+ color: var(--sve-color-danger);
291
+ }
292
+ .sve-button--flat.sve-c-success {
293
+ background-color: var(--sve-color-success-surface);
294
+ color: var(--sve-color-success);
295
+ }
296
+ .sve-button--flat.sve-c-warning {
297
+ background-color: var(--sve-color-warning-surface);
298
+ color: var(--sve-color-warning);
299
+ }
300
+ .sve-button--flat.sve-c-default {
301
+ background-color: var(--sve-color-default-surface);
302
+ color: var(--sve-color-default-foreground);
303
+ }
120
304
  </style>
@@ -1,52 +1,38 @@
1
- import { SvelteComponentTyped } from "svelte";
2
-
3
- export type ButtonSize = 'xsm' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';
4
- declare const __propDef: {
5
- props: {
6
- [x: string]: any;
7
-
8
- /**
9
- * The button label o title
10
- * @default "Button"
11
- */
12
- label?: string | undefined;
13
-
14
- /**
15
- * The button click handler
16
- */
17
- onClick?: (() => void) | undefined;
18
-
19
- /**
20
- * The button color
21
- */
22
- color?: string | undefined;
23
-
24
- /**
25
- * The button size (xsm, sm, md, lg, xl, xxl, xxxl)
26
- */
27
- size?: ButtonSize | undefined;
28
-
29
- /**
30
- * The button disabled state
31
- * @default false
32
- */
33
- disabled?: boolean | undefined;
1
+ type Variant = 'solid' | 'outline' | 'ghost' | 'flat';
2
+ type Color = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'default';
3
+ type Size = 'sm' | 'md' | 'lg';
4
+ export declare const buttonVariants: (props?: import("../../internal/variants").VariantProps<{
5
+ variant: {
6
+ solid: string;
7
+ outline: string;
8
+ ghost: string;
9
+ flat: string;
34
10
  };
35
- events: {
36
- [evt: string]: CustomEvent<any>;
11
+ color: {
12
+ primary: string;
13
+ secondary: string;
14
+ success: string;
15
+ warning: string;
16
+ danger: string;
17
+ default: string;
37
18
  };
38
- slots: {
39
- default: {};
19
+ size: {
20
+ sm: string;
21
+ md: string;
22
+ lg: string;
40
23
  };
41
- };
42
- export type ButtonProps = typeof __propDef.props;
43
- export type ButtonEvents = typeof __propDef.events;
44
- export type ButtonSlots = typeof __propDef.slots;
45
-
46
- /**
47
- * A button component is used to trigger an action or event, such as submitting a form, opening a dialog, canceling an action, or performing a delete operation.
48
- * @see Docs https://sveui.org/components/button
49
- */
50
- export default class Button extends SvelteComponentTyped<ButtonProps, ButtonEvents, ButtonSlots> {
24
+ }> | undefined) => string;
25
+ export type { Variant, Color, Size };
26
+ import type { HTMLButtonAttributes } from 'svelte/elements';
27
+ import type { Snippet } from 'svelte';
28
+ interface Props extends Omit<HTMLButtonAttributes, 'class'> {
29
+ variant?: Variant;
30
+ color?: Color;
31
+ size?: Size;
32
+ class?: string;
33
+ children?: Snippet;
51
34
  }
52
- export { Button, ButtonProps };
35
+ declare const Button: import("svelte").Component<Props, {}, "">;
36
+ type Button = ReturnType<typeof Button>;
37
+ export default Button;
38
+ //# sourceMappingURL=Button.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Button/Button.svelte.ts"],"names":[],"mappings":"AAKE,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACtD,KAAK,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AACpF,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAG/B,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;yBA4BzB,CAAC;AAEH,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAGvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAM,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAgCH,QAAA,MAAM,MAAM,2CAAwC,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}