tera-system-ui 0.0.2 → 0.0.5

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/actions/clickOutside.d.ts +6 -0
  2. package/dist/{components/side-navigation → actions}/clickOutside.js +3 -2
  3. package/dist/components/button/Button.d.ts +2 -2
  4. package/dist/components/button/Button.js +5 -5
  5. package/dist/components/button/Button.svelte +10 -8
  6. package/dist/components/button/Button.svelte.d.ts +3 -1
  7. package/dist/components/combobox/Combobox.d.ts +8 -0
  8. package/dist/components/combobox/Combobox.js +7 -0
  9. package/dist/components/combobox/Combobox.svelte +8 -0
  10. package/dist/components/combobox/Combobox.svelte.d.ts +3 -0
  11. package/dist/components/combobox/index.d.ts +1 -0
  12. package/dist/components/combobox/index.js +1 -0
  13. package/dist/components/command/command.d.ts +33 -0
  14. package/dist/components/command/command.js +512 -0
  15. package/dist/components/command/command.scss +73 -0
  16. package/dist/components/command/components/Command.svelte +120 -0
  17. package/dist/components/command/components/Command.svelte.d.ts +3 -0
  18. package/dist/components/command/components/CommandEmpty.svelte +30 -0
  19. package/dist/components/command/components/CommandEmpty.svelte.d.ts +3 -0
  20. package/dist/components/command/components/CommandGroup.svelte +110 -0
  21. package/dist/components/command/components/CommandGroup.svelte.d.ts +3 -0
  22. package/dist/components/command/components/CommandInput.svelte +93 -0
  23. package/dist/components/command/components/CommandInput.svelte.d.ts +7 -0
  24. package/dist/components/command/components/CommandItem.svelte +110 -0
  25. package/dist/components/command/components/CommandItem.svelte.d.ts +3 -0
  26. package/dist/components/command/components/CommandList.svelte +56 -0
  27. package/dist/components/command/components/CommandList.svelte.d.ts +5 -0
  28. package/dist/components/command/components/CommandLoading.svelte +29 -0
  29. package/dist/components/command/components/CommandLoading.svelte.d.ts +8 -0
  30. package/dist/components/command/components/CommandSeparator.svelte +21 -0
  31. package/dist/components/command/components/CommandSeparator.svelte.d.ts +3 -0
  32. package/dist/components/command/index.d.ts +12 -0
  33. package/dist/components/command/index.js +19 -0
  34. package/dist/components/command/types.d.ts +227 -0
  35. package/dist/components/command/types.js +1 -0
  36. package/dist/components/dialog/Dialog.d.ts +52 -0
  37. package/dist/components/dialog/Dialog.js +6 -0
  38. package/dist/components/dialog/Dialog.svelte +71 -118
  39. package/dist/components/dialog/Dialog.svelte.d.ts +2 -8
  40. package/dist/components/dialog/dialog.scss +78 -0
  41. package/dist/components/icons/IconArrowBigRightFilled.svelte +10 -0
  42. package/dist/components/icons/IconArrowBigRightFilled.svelte.d.ts +4 -0
  43. package/dist/components/icons/IconBookmarkPlus.svelte +10 -0
  44. package/dist/components/icons/IconBookmarkPlus.svelte.d.ts +4 -0
  45. package/dist/components/icons/IconChevronDown.svelte +10 -0
  46. package/dist/components/icons/IconChevronDown.svelte.d.ts +4 -0
  47. package/dist/components/icons/IconCopy.svelte +10 -0
  48. package/dist/components/icons/IconCopy.svelte.d.ts +4 -0
  49. package/dist/components/icons/IconCopyCheckFilled.svelte +10 -0
  50. package/dist/components/icons/IconCopyCheckFilled.svelte.d.ts +4 -0
  51. package/dist/components/icons/IconLoader2.svelte +10 -0
  52. package/dist/components/icons/IconLoader2.svelte.d.ts +4 -0
  53. package/dist/components/icons/IconPointFilled.svelte +10 -0
  54. package/dist/components/icons/IconPointFilled.svelte.d.ts +4 -0
  55. package/dist/components/icons/IconSearch.svelte +10 -0
  56. package/dist/components/icons/IconSearch.svelte.d.ts +4 -0
  57. package/dist/components/icons/IconSwitchHorizontal.svelte +10 -0
  58. package/dist/components/icons/IconSwitchHorizontal.svelte.d.ts +4 -0
  59. package/dist/components/icons/IconSwitchVertical.svelte +10 -0
  60. package/dist/components/icons/IconSwitchVertical.svelte.d.ts +4 -0
  61. package/dist/components/icons/index.d.ts +17 -0
  62. package/dist/components/icons/index.js +17 -0
  63. package/dist/components/input/Input.d.ts +116 -0
  64. package/dist/components/input/Input.js +36 -0
  65. package/dist/components/input/Input.svelte +19 -8
  66. package/dist/components/input/Input.svelte.d.ts +2 -22
  67. package/dist/components/language-picker-button/LanguagePickerButton.svelte +13 -10
  68. package/dist/components/language-picker-button/LanguagePickerButton.svelte.d.ts +0 -2
  69. package/dist/components/light-dark-toggle/LightDarkToggle.svelte +10 -10
  70. package/dist/components/popover/Popover.d.ts +15 -0
  71. package/dist/components/popover/Popover.js +8 -0
  72. package/dist/components/popover/Popover.svelte +137 -0
  73. package/dist/components/popover/Popover.svelte.d.ts +3 -0
  74. package/dist/components/popover/index.d.ts +1 -0
  75. package/dist/components/popover/index.js +1 -0
  76. package/dist/components/popover-responsive/PopoverResponsive.d.ts +8 -0
  77. package/dist/components/popover-responsive/PopoverResponsive.js +7 -0
  78. package/dist/components/popover-responsive/PopoverResponsive.svelte +87 -0
  79. package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +11 -0
  80. package/dist/components/popover-responsive/index.d.ts +1 -0
  81. package/dist/components/popover-responsive/index.js +1 -0
  82. package/dist/components/side-navigation/SideNavigation.d.ts +2 -1
  83. package/dist/components/side-navigation/SideNavigation.js +8 -6
  84. package/dist/components/side-navigation/SideNavigation.svelte +44 -24
  85. package/dist/components/tera-ui-context/TeraUiContext.d.ts +11 -0
  86. package/dist/components/tera-ui-context/TeraUiContext.js +1 -0
  87. package/dist/components/tera-ui-context/TeraUiContext.svelte +21 -0
  88. package/dist/components/tera-ui-context/TeraUiContext.svelte.d.ts +3 -0
  89. package/dist/components/tera-ui-context/global-context.d.ts +3 -0
  90. package/dist/components/tera-ui-context/global-context.js +15 -0
  91. package/dist/components/tera-ui-context/index.d.ts +1 -0
  92. package/dist/components/tera-ui-context/index.js +1 -0
  93. package/dist/i18n/index.d.ts +1 -0
  94. package/dist/i18n/index.js +1 -0
  95. package/dist/i18n/language.d.ts +2 -0
  96. package/dist/i18n/language.js +10 -0
  97. package/dist/i18n.d.ts +1 -0
  98. package/dist/i18n.js +4 -0
  99. package/dist/index.d.ts +14 -1
  100. package/dist/index.js +14 -2
  101. package/dist/internal/command-score.d.ts +1 -0
  102. package/dist/internal/command-score.js +119 -0
  103. package/dist/internal/helpers/callbacks.d.ts +12 -0
  104. package/dist/internal/helpers/callbacks.js +15 -0
  105. package/dist/internal/helpers/event.d.ts +14 -0
  106. package/dist/internal/helpers/event.js +17 -0
  107. package/dist/internal/helpers/id.d.ts +1 -0
  108. package/dist/internal/helpers/id.js +4 -0
  109. package/dist/internal/helpers/index.d.ts +8 -0
  110. package/dist/internal/helpers/index.js +8 -0
  111. package/dist/internal/helpers/is.d.ts +4 -0
  112. package/dist/internal/helpers/is.js +10 -0
  113. package/dist/internal/helpers/kbd.d.ts +35 -0
  114. package/dist/internal/helpers/kbd.js +35 -0
  115. package/dist/internal/helpers/object.d.ts +2 -0
  116. package/dist/internal/helpers/object.js +19 -0
  117. package/dist/internal/helpers/sleep.d.ts +1 -0
  118. package/dist/internal/helpers/sleep.js +3 -0
  119. package/dist/internal/helpers/store.d.ts +29 -0
  120. package/dist/internal/helpers/store.js +80 -0
  121. package/dist/internal/helpers/style.d.ts +12 -0
  122. package/dist/internal/helpers/style.js +18 -0
  123. package/dist/internal/index.d.ts +3 -0
  124. package/dist/internal/index.js +3 -0
  125. package/dist/internal/types.d.ts +18 -0
  126. package/dist/internal/types.js +1 -0
  127. package/dist/themes/scrollbar.scss +37 -0
  128. package/dist/themes/tera-ui-base.css +25 -0
  129. package/package.json +39 -18
  130. package/scripts/generate-ts-index.js +137 -0
  131. package/dist/components/input/input.d.ts +0 -49
  132. package/dist/components/input/input.js +0 -14
  133. package/dist/components/side-navigation/clickOutside.d.ts +0 -4
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconChevronDown } from "@tabler/icons-svelte";
3
+ declare const IconChevronDown: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconChevronDown;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import {type IconsProps, styles} from "./Icons";
3
+ import {IconCopy} from "@tabler/icons-svelte";
4
+
5
+ let {children, ...props}: IconsProps = $props();
6
+
7
+ </script>
8
+
9
+ <IconCopy class={styles({...props})}/>
10
+
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconCopy } from "@tabler/icons-svelte";
3
+ declare const IconCopy: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconCopy;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import {type IconsProps, styles} from "./Icons";
3
+ import {IconCopyCheckFilled} from "@tabler/icons-svelte";
4
+
5
+ let {children, ...props}: IconsProps = $props();
6
+
7
+ </script>
8
+
9
+ <IconCopyCheckFilled class={styles({...props})}/>
10
+
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconCopyCheckFilled } from "@tabler/icons-svelte";
3
+ declare const IconCopyCheckFilled: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconCopyCheckFilled;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import {type IconsProps, styles} from "./Icons";
3
+ import {IconLoader2} from "@tabler/icons-svelte";
4
+
5
+ let {children, ...props}: IconsProps = $props();
6
+
7
+ </script>
8
+
9
+ <IconLoader2 class={styles({...props})}/>
10
+
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconLoader2 } from "@tabler/icons-svelte";
3
+ declare const IconLoader2: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconLoader2;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import {type IconsProps, styles} from "./Icons";
3
+ import {IconPointFilled} from "@tabler/icons-svelte";
4
+
5
+ let {children, ...props}: IconsProps = $props();
6
+
7
+ </script>
8
+
9
+ <IconPointFilled class={styles({...props})}/>
10
+
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconPointFilled } from "@tabler/icons-svelte";
3
+ declare const IconPointFilled: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconPointFilled;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import {type IconsProps, styles} from "./Icons";
3
+ import {IconSearch} from "@tabler/icons-svelte";
4
+
5
+ let {children, ...props}: IconsProps = $props();
6
+
7
+ </script>
8
+
9
+ <IconSearch class={styles({...props})}/>
10
+
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconSearch } from "@tabler/icons-svelte";
3
+ declare const IconSearch: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconSearch;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import {type IconsProps, styles} from "./Icons";
3
+ import {IconSwitchHorizontal} from "@tabler/icons-svelte";
4
+
5
+ let {children, ...props}: IconsProps = $props();
6
+
7
+ </script>
8
+
9
+ <IconSwitchHorizontal class={styles({...props})}/>
10
+
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconSwitchHorizontal } from "@tabler/icons-svelte";
3
+ declare const IconSwitchHorizontal: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconSwitchHorizontal;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import {type IconsProps, styles} from "./Icons";
3
+ import {IconSwitchVertical} from "@tabler/icons-svelte";
4
+
5
+ let {children, ...props}: IconsProps = $props();
6
+
7
+ </script>
8
+
9
+ <IconSwitchVertical class={styles({...props})}/>
10
+
@@ -0,0 +1,4 @@
1
+ import { type IconsProps } from "./Icons";
2
+ import { IconSwitchVertical } from "@tabler/icons-svelte";
3
+ declare const IconSwitchVertical: import("svelte").Component<IconsProps, {}, "">;
4
+ export default IconSwitchVertical;
@@ -1,2 +1,19 @@
1
+ export { default as IconArrowBigRightFilled } from './IconArrowBigRightFilled.svelte';
2
+ export { default as IconBook } from './IconBook.svelte';
3
+ export { default as IconBookmarkPlus } from './IconBookmarkPlus.svelte';
4
+ export { default as IconCalculator } from './IconCalculator.svelte';
5
+ export { default as IconCheck } from './IconCheck.svelte';
6
+ export { default as IconChevronDown } from './IconChevronDown.svelte';
7
+ export { default as IconCopy } from './IconCopy.svelte';
8
+ export { default as IconCopyCheckFilled } from './IconCopyCheckFilled.svelte';
1
9
  export { default as IconHamburger } from './IconHamburger.svelte';
2
10
  export { default as IconLanguage } from './IconLanguage.svelte';
11
+ export { default as IconLoader2 } from './IconLoader2.svelte';
12
+ export { default as IconMoon } from './IconMoon.svelte';
13
+ export { default as IconPointFilled } from './IconPointFilled.svelte';
14
+ export { default as IconSearch } from './IconSearch.svelte';
15
+ export { default as IconSun } from './IconSun.svelte';
16
+ export { default as IconSwitchHorizontal } from './IconSwitchHorizontal.svelte';
17
+ export { default as IconSwitchVertical } from './IconSwitchVertical.svelte';
18
+ export { default as IconTransform } from './IconTransform.svelte';
19
+ export { default as IconX } from './IconX.svelte';
@@ -1,2 +1,19 @@
1
+ export { default as IconArrowBigRightFilled } from './IconArrowBigRightFilled.svelte';
2
+ export { default as IconBook } from './IconBook.svelte';
3
+ export { default as IconBookmarkPlus } from './IconBookmarkPlus.svelte';
4
+ export { default as IconCalculator } from './IconCalculator.svelte';
5
+ export { default as IconCheck } from './IconCheck.svelte';
6
+ export { default as IconChevronDown } from './IconChevronDown.svelte';
7
+ export { default as IconCopy } from './IconCopy.svelte';
8
+ export { default as IconCopyCheckFilled } from './IconCopyCheckFilled.svelte';
1
9
  export { default as IconHamburger } from './IconHamburger.svelte';
2
10
  export { default as IconLanguage } from './IconLanguage.svelte';
11
+ export { default as IconLoader2 } from './IconLoader2.svelte';
12
+ export { default as IconMoon } from './IconMoon.svelte';
13
+ export { default as IconPointFilled } from './IconPointFilled.svelte';
14
+ export { default as IconSearch } from './IconSearch.svelte';
15
+ export { default as IconSun } from './IconSun.svelte';
16
+ export { default as IconSwitchHorizontal } from './IconSwitchHorizontal.svelte';
17
+ export { default as IconSwitchVertical } from './IconSwitchVertical.svelte';
18
+ export { default as IconTransform } from './IconTransform.svelte';
19
+ export { default as IconX } from './IconX.svelte';
@@ -0,0 +1,116 @@
1
+ import { type VariantProps } from "tailwind-variants";
2
+ export declare const styles: import("tailwind-variants").TVReturnType<{
3
+ variant: {
4
+ outlined: string;
5
+ filled: string;
6
+ borderless: string;
7
+ };
8
+ disabled: {
9
+ true: string;
10
+ false: string;
11
+ };
12
+ size: {
13
+ sm: string;
14
+ md: string;
15
+ lg: string;
16
+ };
17
+ }, undefined, "relative w-full inline-flex items-center justify-center rounded outline-none transition-all duration-element-react ring-primary-token-5/50", import("tailwind-variants/dist/config").TVConfig<{
18
+ variant: {
19
+ outlined: string;
20
+ filled: string;
21
+ borderless: string;
22
+ };
23
+ disabled: {
24
+ true: string;
25
+ false: string;
26
+ };
27
+ size: {
28
+ sm: string;
29
+ md: string;
30
+ lg: string;
31
+ };
32
+ }, {
33
+ variant: {
34
+ outlined: string;
35
+ filled: string;
36
+ borderless: string;
37
+ };
38
+ disabled: {
39
+ true: string;
40
+ false: string;
41
+ };
42
+ size: {
43
+ sm: string;
44
+ md: string;
45
+ lg: string;
46
+ };
47
+ }>, {
48
+ variant: {
49
+ outlined: string;
50
+ filled: string;
51
+ borderless: string;
52
+ };
53
+ disabled: {
54
+ true: string;
55
+ false: string;
56
+ };
57
+ size: {
58
+ sm: string;
59
+ md: string;
60
+ lg: string;
61
+ };
62
+ }, undefined, import("tailwind-variants").TVReturnType<{
63
+ variant: {
64
+ outlined: string;
65
+ filled: string;
66
+ borderless: string;
67
+ };
68
+ disabled: {
69
+ true: string;
70
+ false: string;
71
+ };
72
+ size: {
73
+ sm: string;
74
+ md: string;
75
+ lg: string;
76
+ };
77
+ }, undefined, "relative w-full inline-flex items-center justify-center rounded outline-none transition-all duration-element-react ring-primary-token-5/50", import("tailwind-variants/dist/config").TVConfig<{
78
+ variant: {
79
+ outlined: string;
80
+ filled: string;
81
+ borderless: string;
82
+ };
83
+ disabled: {
84
+ true: string;
85
+ false: string;
86
+ };
87
+ size: {
88
+ sm: string;
89
+ md: string;
90
+ lg: string;
91
+ };
92
+ }, {
93
+ variant: {
94
+ outlined: string;
95
+ filled: string;
96
+ borderless: string;
97
+ };
98
+ disabled: {
99
+ true: string;
100
+ false: string;
101
+ };
102
+ size: {
103
+ sm: string;
104
+ md: string;
105
+ lg: string;
106
+ };
107
+ }>, unknown, unknown, undefined>>;
108
+ type InputVariants = VariantProps<typeof styles>;
109
+ export interface InputProps extends InputVariants {
110
+ children?: any;
111
+ class?: string;
112
+ value?: string;
113
+ ref?: HTMLInputElement;
114
+ prefix?: any;
115
+ }
116
+ export {};
@@ -0,0 +1,36 @@
1
+ import { tv } from "tailwind-variants";
2
+ export const styles = tv({
3
+ base: 'relative w-full inline-flex items-center justify-center rounded outline-none transition-all duration-element-react ring-primary-token-5/50',
4
+ variants: {
5
+ variant: {
6
+ outlined: 'border border-neutral-token-5 bg-transparent focus:border-primary-token-6 hover:border-primary-token-5 focus-visible:ring-2',
7
+ filled: 'bg-neutral-token-3 border border-neutral-token-3 focus:bg-transparent focus:border-primary-token-6 hover:bg-neutral-token-4 focus-visible:ring-2',
8
+ borderless: 'bg-transparent border-0',
9
+ },
10
+ disabled: {
11
+ true: 'cursor-not-allowed opacity-70 text-neutral-token-10',
12
+ false: 'cursor-text',
13
+ },
14
+ size: {
15
+ sm: 'h-6 px-2 text-sm',
16
+ md: 'h-8 px-3 text-base',
17
+ lg: 'h-10 px-3 text-lg',
18
+ },
19
+ },
20
+ compoundVariants: [
21
+ {
22
+ variant: 'outlined',
23
+ disabled: true,
24
+ class: 'hover:border-neutral-token-5'
25
+ },
26
+ {
27
+ variant: 'filled',
28
+ disabled: true,
29
+ class: 'hover:bg-neutral-token-3'
30
+ }
31
+ ],
32
+ defaultVariants: {
33
+ variant: 'outlined',
34
+ size: 'md'
35
+ },
36
+ });
@@ -1,14 +1,25 @@
1
1
  <script lang="ts">
2
- import {type InputProps, styles} from "./input";
2
+ import {type InputProps, styles} from "./Input";
3
+
4
+ let {
5
+ children,
6
+ class: className,
7
+ value = $bindable(),
8
+ ref = $bindable(),
9
+ size,
10
+ disabled,
11
+ variant = 'outlined',
12
+ prefix,
13
+ ...props
14
+ }: InputProps = $props();
3
15
 
4
- // Define component props with inferred types
5
- export let size: InputProps['size'] = 'md';
6
- export let placeholder: string = '';
7
- export let value: string = '';
8
16
  </script>
9
17
 
10
18
  <input
11
- class={styles({ size })}
12
- placeholder={placeholder}
19
+ type="text"
20
+ bind:this={ref}
21
+ class={styles({ variant, disabled , size, className})}
22
+ {disabled}
23
+ {...props}
13
24
  bind:value
14
- />
25
+ />
@@ -1,23 +1,3 @@
1
- import { type InputProps } from "./input";
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- declare const Input: $$__sveltets_2_IsomorphicComponent<{
16
- size?: InputProps["size"];
17
- placeholder?: string;
18
- value?: string;
19
- }, {
20
- [evt: string]: CustomEvent<any>;
21
- }, {}, {}, string>;
22
- type Input = InstanceType<typeof Input>;
1
+ import { type InputProps } from "./Input";
2
+ declare const Input: import("svelte").Component<InputProps, {}, "ref" | "value">;
23
3
  export default Input;
@@ -3,19 +3,19 @@
3
3
  import {IconLanguage} from "../icons";
4
4
  import {Dialog} from "../dialog";
5
5
  import IconCheck from "../icons/IconCheck.svelte";
6
+ import {getGlobalContext} from "../tera-ui-context/global-context";
6
7
 
7
8
  let {
8
9
  children,
9
- currentLangCode = 'en',
10
10
  onLangSelect,
11
- supportedLanguages = ['en'],
12
11
  ...props
13
12
  }: LanguagePickerButtonProps & {
14
- currentLangCode: string,
15
- supportedLanguages: string[],
16
13
  onLangSelect: (langCode: string) => void
17
14
  } = $props();
18
15
 
16
+ let context = getGlobalContext()
17
+
18
+
19
19
  const LANGUAGE_LIST = [
20
20
  {
21
21
  code: "en",
@@ -57,15 +57,18 @@
57
57
  label: "Tiếng Việt",
58
58
  flag: 'vietnam'
59
59
  }
60
- ].filter(lang => supportedLanguages.includes(lang.code))
60
+ // @ts-ignore
61
+ ].filter(lang => context.supportLanguages!.includes(lang.code))
62
+
63
+
64
+ let currentLangItem = $derived(LANGUAGE_LIST.find(l => l.code === context.language)!)
61
65
 
62
- let currentLangItem = $derived(LANGUAGE_LIST.find(l => l.code === currentLangCode)!)
63
66
 
64
67
  function getFlagUrl(flag: string) {
65
68
  if (flag === 'spain') {
66
- return `/world-flags/${flag}.png`
69
+ return `${context.basePath ?? ''}/world-flags/${flag}.png`
67
70
  }
68
- return `/world-flags/${flag}.svg`
71
+ return `${context.basePath ?? ''}/world-flags/${flag}.svg`
69
72
  }
70
73
 
71
74
  let openDialog = $state(false)
@@ -89,9 +92,9 @@
89
92
  onLangSelect?.(lang.code)
90
93
  openDialog = false
91
94
  }}
92
- data-selected={lang.code === currentLangCode ? '' : undefined}>
95
+ data-selected={lang.code === context.language ? '' : undefined}>
93
96
  <div class="flex items-center gap-2">
94
- <img class="size-12 flag-img" src={getFlagUrl(lang.flag)} alt={currentLangItem.flag} loading="lazy">
97
+ <img class="size-8 flag-img" src={getFlagUrl(lang.flag)} alt={currentLangItem.flag} loading="lazy">
95
98
  {lang.label}
96
99
  </div>
97
100
  <div class="check">
@@ -1,7 +1,5 @@
1
1
  import { type LanguagePickerButtonProps } from "./LanguagePickerButton";
2
2
  declare const LanguagePickerButton: import("svelte").Component<LanguagePickerButtonProps & {
3
- currentLangCode: string;
4
- supportedLanguages: string[];
5
3
  onLangSelect: (langCode: string) => void;
6
4
  }, {}, "">;
7
5
  export default LanguagePickerButton;
@@ -6,16 +6,16 @@
6
6
 
7
7
  let {children, ...props}: LightDarkToggleProps = $props();
8
8
 
9
- $effect(() => {
10
- const htmlElement = document.documentElement;
11
- // Check for saved theme preference
12
- const currentTheme = localStorage.getItem('theme');
13
- if (currentTheme === 'dark') {
14
- htmlElement.classList.add('dark');
15
- } else {
16
- htmlElement.classList.remove('dark');
17
- }
18
- })
9
+ // $effect(() => {
10
+ // const htmlElement = document.documentElement;
11
+ // // Check for saved theme preference
12
+ // const currentTheme = localStorage.getItem('theme');
13
+ // if (currentTheme === 'dark') {
14
+ // htmlElement.classList.add('dark');
15
+ // } else {
16
+ // htmlElement.classList.remove('dark');
17
+ // }
18
+ // })
19
19
 
20
20
  function toggleLightDarkTheme() {
21
21
  const htmlElement = document.documentElement;
@@ -0,0 +1,15 @@
1
+ import { type VariantProps } from "tailwind-variants";
2
+ export declare const styles: import("tailwind-variants").TVReturnType<{}, undefined, "", import("tailwind-variants/dist/config").TVConfig<{}, {}>, {}, undefined, import("tailwind-variants").TVReturnType<{}, undefined, "", import("tailwind-variants/dist/config").TVConfig<{}, {}>, unknown, unknown, undefined>>;
3
+ type PopoverVariants = VariantProps<typeof styles>;
4
+ export interface PopoverProps extends PopoverVariants {
5
+ children?: any;
6
+ class?: string;
7
+ triggerRef: any;
8
+ offset?: number;
9
+ padding?: number;
10
+ open?: boolean;
11
+ focusTriggerAfterClose?: boolean;
12
+ flip?: boolean;
13
+ autoTrigger?: boolean;
14
+ }
15
+ export {};
@@ -0,0 +1,8 @@
1
+ import { tv } from "tailwind-variants";
2
+ import { shift } from "@floating-ui/dom";
3
+ export const styles = tv({
4
+ base: '',
5
+ variants: {},
6
+ compoundVariants: [],
7
+ defaultVariants: {},
8
+ });
@@ -0,0 +1,137 @@
1
+ <script lang="ts">
2
+ import {type PopoverProps} from "./Popover";
3
+ import {arrow, autoUpdate, computePosition, flip, offset, shift, size} from "@floating-ui/dom";
4
+ import {cn} from "../../utils/utils";
5
+
6
+ import {clickOutside} from "../../actions/clickOutside"
7
+ import {onDestroy, onMount} from "svelte";
8
+
9
+ let {
10
+ children,
11
+ triggerRef,
12
+ class: className,
13
+ open = $bindable(),
14
+ offset: offsetAmount = 3,
15
+ padding: paddingAmount = 12,
16
+ focusTriggerAfterClose = true,
17
+ flip: enableFlip = false,
18
+ autoTrigger = true,
19
+ ...props
20
+ }: PopoverProps = $props();
21
+
22
+ let hasOpenedYet = $state(false)
23
+
24
+ function togglePopover() {
25
+ open = !open;
26
+ }
27
+
28
+
29
+ function handleClickOutside(e) {
30
+ open = false
31
+ }
32
+
33
+ let popover = $state();
34
+ let arrowElement = $state();
35
+
36
+
37
+ function updatePosition() {
38
+ computePosition(triggerRef, popover, {
39
+ placement: 'bottom',
40
+ middleware: [
41
+ offset(offsetAmount),
42
+ size({
43
+ apply({rects, elements}) {
44
+ Object.assign(elements.floating.style, {
45
+ minWidth: `${rects.reference.width}px`,
46
+ });
47
+ },
48
+ }),
49
+ enableFlip ? flip() : undefined,
50
+ shift({padding: paddingAmount}),
51
+ arrow({element: arrowElement}),
52
+ ],
53
+ }).then(({x, y, placement, middlewareData}) => {
54
+ Object.assign(popover.style, {
55
+ left: `${x}px`,
56
+ top: `${y}px`,
57
+ });
58
+ //
59
+ // // Accessing the data
60
+ // const {x: arrowX, y: arrowY} = middlewareData.arrow;
61
+ //
62
+ // const staticSide = {
63
+ // top: 'bottom',
64
+ // right: 'left',
65
+ // bottom: 'top',
66
+ // left: 'right',
67
+ // }[placement.split('-')[0]];
68
+ //
69
+ // Object.assign(arrowElement.style, {
70
+ // left: arrowX != null ? `${arrowX}px` : '',
71
+ // top: arrowY != null ? `${arrowY}px` : '',
72
+ // right: '',
73
+ // bottom: '',
74
+ // [staticSide]: '-4px',
75
+ // });
76
+ });
77
+ }
78
+
79
+ onMount(() => {
80
+ if (autoTrigger)
81
+ triggerRef?.addEventListener("click", togglePopover);
82
+
83
+ })
84
+
85
+ onDestroy(() => {
86
+ if (autoTrigger)
87
+ triggerRef?.removeEventListener("click", togglePopover);
88
+
89
+ })
90
+
91
+ $effect(() => {
92
+ let cleanup: any
93
+
94
+ if (open) {
95
+ hasOpenedYet = true
96
+ updatePosition()
97
+
98
+ // Start auto updates.
99
+ cleanup = autoUpdate(
100
+ triggerRef,
101
+ popover,
102
+ updatePosition,
103
+ );
104
+ } else {
105
+ cleanup?.()
106
+ if (focusTriggerAfterClose && hasOpenedYet) {
107
+ try {
108
+ triggerRef.focus()
109
+ } catch (e) {
110
+ console.warn('Trigger element focus after close Popover error', e)
111
+ }
112
+ }
113
+ }
114
+
115
+ return () => {
116
+ cleanup?.()
117
+ }
118
+ })
119
+ </script>
120
+
121
+ <!-- Popover Content -->
122
+ {#if open}
123
+ <div bind:this={popover}
124
+ class={cn("overflow-hidden absolute z-10 bg-neutral-token-1 shadow-2xl rounded-container border border-neutral-token-5", className)}
125
+ use:clickOutside={{exceptElement: triggerRef}}
126
+ onclick_outside={handleClickOutside}
127
+ {...props}
128
+ >
129
+ <!-- <div bind:this={arrowElement} class="size-2 absolute rotate-45 bg-inherit"></div>-->
130
+ {@render children?.()}
131
+ </div>
132
+ {/if}
133
+
134
+
135
+ <style>
136
+
137
+ </style>
@@ -0,0 +1,3 @@
1
+ import { type PopoverProps } from "./Popover";
2
+ declare const Popover: import("svelte").Component<PopoverProps, {}, "open">;
3
+ export default Popover;
@@ -0,0 +1 @@
1
+ export { default as Popover } from './Popover.svelte';
@@ -0,0 +1 @@
1
+ export { default as Popover } from './Popover.svelte';