ui-svelte 0.2.10 → 0.2.12
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.
- package/dist/charts/ArcChart.svelte +9 -13
- package/dist/charts/ArcChart.svelte.d.ts +3 -3
- package/dist/charts/AreaChart.svelte +347 -118
- package/dist/charts/AreaChart.svelte.d.ts +33 -4
- package/dist/charts/BarChart.svelte +288 -66
- package/dist/charts/BarChart.svelte.d.ts +26 -1
- package/dist/charts/Candlestick.svelte +53 -50
- package/dist/charts/Candlestick.svelte.d.ts +8 -8
- package/dist/charts/LineChart.svelte +391 -91
- package/dist/charts/LineChart.svelte.d.ts +26 -3
- package/dist/charts/PieChart.svelte +333 -92
- package/dist/charts/PieChart.svelte.d.ts +33 -5
- package/dist/charts/css/arc-chart.css +3 -3
- package/dist/charts/css/area-chart.css +127 -29
- package/dist/charts/css/bar-chart.css +114 -8
- package/dist/charts/css/candlestick.css +2 -0
- package/dist/charts/css/line-chart.css +111 -13
- package/dist/charts/css/pie-chart.css +92 -20
- package/dist/control/Audio.svelte +86 -44
- package/dist/control/Audio.svelte.d.ts +4 -1
- package/dist/control/Button.svelte +18 -27
- package/dist/control/Button.svelte.d.ts +3 -2
- package/dist/control/IconButton.svelte +17 -27
- package/dist/control/IconButton.svelte.d.ts +3 -3
- package/dist/control/Image.svelte +123 -0
- package/dist/control/Image.svelte.d.ts +13 -0
- package/dist/control/Record.svelte +144 -98
- package/dist/control/Record.svelte.d.ts +2 -1
- package/dist/control/ToggleGroup.svelte +22 -8
- package/dist/control/ToggleGroup.svelte.d.ts +2 -1
- package/dist/control/ToggleTheme.svelte +13 -11
- package/dist/control/ToggleTheme.svelte.d.ts +3 -2
- package/dist/control/Video.svelte +55 -29
- package/dist/control/Video.svelte.d.ts +1 -0
- package/dist/control/css/btn.css +200 -152
- package/dist/control/css/image.css +56 -0
- package/dist/control/css/media.css +95 -30
- package/dist/control/css/toggle-group.css +269 -84
- package/dist/control/css/video.css +1 -14
- package/dist/css/animations.css +427 -2
- package/dist/css/base.css +13 -347
- package/dist/css/decorations.css +402 -0
- package/dist/css/rich-text.css +485 -0
- package/dist/css/transitions.css +158 -0
- package/dist/css/typography.css +291 -0
- package/dist/display/Accordion.svelte +28 -4
- package/dist/display/Accordion.svelte.d.ts +2 -1
- package/dist/display/Alert.svelte +32 -12
- package/dist/display/Alert.svelte.d.ts +2 -3
- package/dist/display/Avatar.svelte +54 -26
- package/dist/display/Avatar.svelte.d.ts +7 -1
- package/dist/display/AvatarGroup.svelte +26 -18
- package/dist/display/AvatarGroup.svelte.d.ts +9 -3
- package/dist/display/Badge.svelte +11 -4
- package/dist/display/Badge.svelte.d.ts +2 -1
- package/dist/display/Card.svelte +15 -14
- package/dist/display/Card.svelte.d.ts +2 -3
- package/dist/display/Carousel.svelte +130 -99
- package/dist/display/Carousel.svelte.d.ts +6 -4
- package/dist/display/ChatBox.svelte +245 -106
- package/dist/display/ChatBox.svelte.d.ts +32 -5
- package/dist/display/Chip.svelte +31 -17
- package/dist/display/Chip.svelte.d.ts +3 -2
- package/dist/display/Code.svelte +6 -3
- package/dist/display/Code.svelte.d.ts +1 -0
- package/dist/display/Collapsible.svelte +30 -4
- package/dist/display/Collapsible.svelte.d.ts +2 -1
- package/dist/display/Empty.svelte +37 -3
- package/dist/display/Empty.svelte.d.ts +3 -0
- package/dist/display/Item.svelte +31 -18
- package/dist/display/Item.svelte.d.ts +2 -2
- package/dist/display/Map.svelte +488 -0
- package/dist/display/Map.svelte.d.ts +44 -0
- package/dist/display/Section.svelte +14 -12
- package/dist/display/Section.svelte.d.ts +2 -3
- package/dist/display/Skeleton.svelte +32 -0
- package/dist/display/Skeleton.svelte.d.ts +10 -0
- package/dist/display/Table.svelte +94 -132
- package/dist/display/Table.svelte.d.ts +10 -1
- package/dist/display/css/accordion.css +349 -52
- package/dist/display/css/alert.css +18 -25
- package/dist/display/css/avatar-group.css +38 -44
- package/dist/display/css/avatar.css +152 -123
- package/dist/display/css/badge.css +50 -27
- package/dist/display/css/card.css +51 -71
- package/dist/display/css/carousel.css +25 -5
- package/dist/display/css/chat-box.css +158 -26
- package/dist/display/css/chip.css +142 -68
- package/dist/display/css/code.css +2 -6
- package/dist/display/css/collapsible.css +349 -45
- package/dist/display/css/divider.css +8 -6
- package/dist/display/css/empty.css +7 -0
- package/dist/display/css/item.css +311 -89
- package/dist/display/css/map.css +164 -0
- package/dist/display/css/section.css +78 -33
- package/dist/display/css/skeleton.css +58 -0
- package/dist/display/css/table.css +320 -189
- package/dist/form/Checkbox.svelte +11 -5
- package/dist/form/Checkbox.svelte.d.ts +2 -1
- package/dist/form/ColorField.svelte +543 -0
- package/dist/form/ColorField.svelte.d.ts +29 -0
- package/dist/form/ComboBox.svelte +24 -9
- package/dist/form/ComboBox.svelte.d.ts +2 -2
- package/dist/form/CsvField.svelte +62 -136
- package/dist/form/CsvField.svelte.d.ts +2 -2
- package/dist/form/DateField.svelte +33 -15
- package/dist/form/DateField.svelte.d.ts +2 -1
- package/dist/form/DateRange.svelte +436 -0
- package/dist/form/DateRange.svelte.d.ts +24 -0
- package/dist/form/DragDrop.svelte +348 -0
- package/dist/form/DragDrop.svelte.d.ts +32 -0
- package/dist/form/Dropzone.svelte +28 -8
- package/dist/form/Dropzone.svelte.d.ts +2 -2
- package/dist/form/Editor.svelte +626 -0
- package/dist/form/Editor.svelte.d.ts +50 -0
- package/dist/form/ImageCropper.svelte +291 -61
- package/dist/form/ImageCropper.svelte.d.ts +15 -1
- package/dist/form/PasswordField.svelte +120 -75
- package/dist/form/PasswordField.svelte.d.ts +9 -10
- package/dist/form/PhoneField.svelte +34 -16
- package/dist/form/PhoneField.svelte.d.ts +4 -3
- package/dist/form/PinField.svelte +39 -31
- package/dist/form/PinField.svelte.d.ts +3 -3
- package/dist/form/RadioGroup.svelte +4 -4
- package/dist/form/RadioGroup.svelte.d.ts +1 -1
- package/dist/form/Select.svelte +20 -19
- package/dist/form/Select.svelte.d.ts +2 -2
- package/dist/form/Slider.svelte +4 -2
- package/dist/form/Slider.svelte.d.ts +1 -0
- package/dist/form/TextField.svelte +16 -7
- package/dist/form/TextField.svelte.d.ts +2 -2
- package/dist/form/Textarea.svelte +15 -6
- package/dist/form/Textarea.svelte.d.ts +2 -2
- package/dist/form/Toggle.svelte +11 -1
- package/dist/form/Toggle.svelte.d.ts +2 -0
- package/dist/form/css/checkbox.css +18 -2
- package/dist/form/css/color-field.css +141 -0
- package/dist/form/css/control.css +193 -82
- package/dist/form/css/csv-field.css +226 -0
- package/dist/form/css/date-range.css +122 -0
- package/dist/form/css/date.css +24 -2
- package/dist/form/css/drag-drop.css +271 -0
- package/dist/form/css/dropzone.css +153 -34
- package/dist/form/css/editor.css +367 -0
- package/dist/form/css/field.css +4 -0
- package/dist/form/css/image-cropper.css +223 -22
- package/dist/form/css/password.css +1 -1
- package/dist/form/css/radio-group.css +1 -1
- package/dist/form/css/select.css +2 -2
- package/dist/form/css/slider.css +1 -0
- package/dist/form/css/textarea.css +178 -75
- package/dist/form/css/toggle.css +11 -2
- package/dist/hooks/use-table.svelte.d.ts +1 -0
- package/dist/hooks/use-table.svelte.js +6 -0
- package/dist/icons/index.d.ts +38 -2
- package/dist/icons/index.js +40 -4
- package/dist/index.css +16 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.js +10 -2
- package/dist/layout/AppBar.svelte +22 -14
- package/dist/layout/AppBar.svelte.d.ts +2 -1
- package/dist/layout/Footer.svelte +19 -11
- package/dist/layout/Footer.svelte.d.ts +2 -1
- package/dist/layout/Provider.svelte +27 -4
- package/dist/layout/Provider.svelte.d.ts +3 -1
- package/dist/layout/css/app-bar.css +63 -66
- package/dist/layout/css/footer.css +62 -65
- package/dist/navigation/BottomNav.svelte +41 -13
- package/dist/navigation/FooterGroup.svelte +1 -1
- package/dist/navigation/NavMenu.svelte +47 -23
- package/dist/navigation/NavMenu.svelte.d.ts +29 -0
- package/dist/navigation/Pagination.svelte +158 -0
- package/dist/navigation/Pagination.svelte.d.ts +18 -0
- package/dist/navigation/SideNav.svelte +30 -25
- package/dist/navigation/SideNav.svelte.d.ts +2 -3
- package/dist/navigation/Tabs.svelte +17 -7
- package/dist/navigation/Tabs.svelte.d.ts +2 -2
- package/dist/navigation/css/bottom-nav.css +279 -257
- package/dist/navigation/css/footer-group.css +1 -1
- package/dist/navigation/css/footer-nav.css +1 -1
- package/dist/navigation/css/nav-menu.css +332 -106
- package/dist/navigation/css/pagination.css +74 -0
- package/dist/navigation/css/side-nav.css +515 -75
- package/dist/navigation/css/tabs.css +246 -52
- package/dist/overlay/Command.svelte +340 -0
- package/dist/overlay/Command.svelte.d.ts +24 -25
- package/dist/overlay/Drawer.svelte +49 -21
- package/dist/overlay/Drawer.svelte.d.ts +2 -2
- package/dist/overlay/Dropdown.svelte +4 -5
- package/dist/overlay/Modal.svelte +51 -16
- package/dist/overlay/Modal.svelte.d.ts +3 -3
- package/dist/overlay/Toast.svelte +41 -17
- package/dist/overlay/Toast.svelte.d.ts +1 -1
- package/dist/overlay/Tooltip.svelte +40 -26
- package/dist/overlay/Tooltip.svelte.d.ts +2 -2
- package/dist/overlay/css/command.css +80 -0
- package/dist/overlay/css/drawer.css +63 -24
- package/dist/overlay/css/dropdown.css +1 -1
- package/dist/overlay/css/hovercard.css +1 -1
- package/dist/overlay/css/modal.css +27 -27
- package/dist/overlay/css/toast.css +17 -29
- package/dist/overlay/css/tooltip.css +83 -66
- package/dist/stores/theme.svelte.js +26 -1
- package/dist/stores/toast.svelte.d.ts +4 -4
- package/dist/stores/toast.svelte.js +2 -2
- package/package.json +1 -1
|
@@ -12,15 +12,7 @@
|
|
|
12
12
|
startClass?: string;
|
|
13
13
|
centerClass?: string;
|
|
14
14
|
endClass?: string;
|
|
15
|
-
|
|
16
|
-
isBordered?: boolean;
|
|
17
|
-
borderOnScrollOnly?: boolean;
|
|
18
|
-
hideOnScroll?: boolean;
|
|
19
|
-
solidOnScroll?: boolean;
|
|
20
|
-
isSticky?: boolean;
|
|
21
|
-
isFloating?: boolean;
|
|
22
|
-
isBoxed?: boolean;
|
|
23
|
-
variant?:
|
|
15
|
+
color?:
|
|
24
16
|
| 'primary'
|
|
25
17
|
| 'secondary'
|
|
26
18
|
| 'muted'
|
|
@@ -29,7 +21,16 @@
|
|
|
29
21
|
| 'warning'
|
|
30
22
|
| 'danger'
|
|
31
23
|
| 'surface'
|
|
32
|
-
| '
|
|
24
|
+
| 'default';
|
|
25
|
+
variant?: 'solid' | 'soft';
|
|
26
|
+
isBlurred?: boolean;
|
|
27
|
+
isBordered?: boolean;
|
|
28
|
+
borderOnScrollOnly?: boolean;
|
|
29
|
+
hideOnScroll?: boolean;
|
|
30
|
+
solidOnScroll?: boolean;
|
|
31
|
+
isSticky?: boolean;
|
|
32
|
+
isFloating?: boolean;
|
|
33
|
+
isBoxed?: boolean;
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
const {
|
|
@@ -41,12 +42,13 @@
|
|
|
41
42
|
startClass,
|
|
42
43
|
centerClass,
|
|
43
44
|
endClass,
|
|
45
|
+
color = 'default',
|
|
46
|
+
variant = 'soft',
|
|
44
47
|
isBordered,
|
|
45
48
|
borderOnScrollOnly = false,
|
|
46
49
|
isBlurred,
|
|
47
50
|
isSticky,
|
|
48
51
|
isBoxed,
|
|
49
|
-
variant = 'ghost',
|
|
50
52
|
hideOnScroll,
|
|
51
53
|
solidOnScroll = false,
|
|
52
54
|
isFloating = false
|
|
@@ -59,7 +61,7 @@
|
|
|
59
61
|
|
|
60
62
|
const scroll = useScroll();
|
|
61
63
|
|
|
62
|
-
const
|
|
64
|
+
const colors = {
|
|
63
65
|
primary: 'is-primary',
|
|
64
66
|
secondary: 'is-secondary',
|
|
65
67
|
muted: 'is-muted',
|
|
@@ -68,7 +70,12 @@
|
|
|
68
70
|
warning: 'is-warning',
|
|
69
71
|
danger: 'is-danger',
|
|
70
72
|
surface: 'is-surface',
|
|
71
|
-
|
|
73
|
+
default: 'is-default'
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const variants = {
|
|
77
|
+
solid: 'is-solid',
|
|
78
|
+
soft: 'is-soft'
|
|
72
79
|
};
|
|
73
80
|
|
|
74
81
|
$effect(() => {
|
|
@@ -108,7 +115,8 @@
|
|
|
108
115
|
bind:this={headerElement}
|
|
109
116
|
class={cn(
|
|
110
117
|
'appbar',
|
|
111
|
-
|
|
118
|
+
colors[color],
|
|
119
|
+
variants[variant],
|
|
112
120
|
shouldShowBorder && 'is-bordered',
|
|
113
121
|
shouldBlur && 'is-blurred',
|
|
114
122
|
isHidden && 'is-hidden',
|
|
@@ -8,6 +8,8 @@ type Props = {
|
|
|
8
8
|
startClass?: string;
|
|
9
9
|
centerClass?: string;
|
|
10
10
|
endClass?: string;
|
|
11
|
+
color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger' | 'surface' | 'default';
|
|
12
|
+
variant?: 'solid' | 'soft';
|
|
11
13
|
isBlurred?: boolean;
|
|
12
14
|
isBordered?: boolean;
|
|
13
15
|
borderOnScrollOnly?: boolean;
|
|
@@ -16,7 +18,6 @@ type Props = {
|
|
|
16
18
|
isSticky?: boolean;
|
|
17
19
|
isFloating?: boolean;
|
|
18
20
|
isBoxed?: boolean;
|
|
19
|
-
variant?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger' | 'surface' | 'ghost';
|
|
20
21
|
};
|
|
21
22
|
declare const AppBar: import("svelte").Component<Props, {}, "">;
|
|
22
23
|
type AppBar = ReturnType<typeof AppBar>;
|
|
@@ -12,11 +12,7 @@
|
|
|
12
12
|
startClass?: string;
|
|
13
13
|
centerClass?: string;
|
|
14
14
|
endClass?: string;
|
|
15
|
-
|
|
16
|
-
isBordered?: boolean;
|
|
17
|
-
isBoxed?: boolean;
|
|
18
|
-
hideOnScroll?: boolean;
|
|
19
|
-
variant?:
|
|
15
|
+
color?:
|
|
20
16
|
| 'primary'
|
|
21
17
|
| 'secondary'
|
|
22
18
|
| 'muted'
|
|
@@ -25,7 +21,12 @@
|
|
|
25
21
|
| 'warning'
|
|
26
22
|
| 'danger'
|
|
27
23
|
| 'surface'
|
|
28
|
-
| '
|
|
24
|
+
| 'default';
|
|
25
|
+
variant?: 'solid' | 'soft';
|
|
26
|
+
isBlurred?: boolean;
|
|
27
|
+
isBordered?: boolean;
|
|
28
|
+
isBoxed?: boolean;
|
|
29
|
+
hideOnScroll?: boolean;
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
const {
|
|
@@ -37,11 +38,12 @@
|
|
|
37
38
|
startClass,
|
|
38
39
|
centerClass,
|
|
39
40
|
endClass,
|
|
41
|
+
color = 'default',
|
|
42
|
+
variant = 'soft',
|
|
40
43
|
isBordered,
|
|
41
44
|
isBlurred,
|
|
42
45
|
isBoxed,
|
|
43
|
-
hideOnScroll
|
|
44
|
-
variant = 'ghost'
|
|
46
|
+
hideOnScroll
|
|
45
47
|
}: Props = $props();
|
|
46
48
|
|
|
47
49
|
let footerElement = $state<HTMLElement | null>(null);
|
|
@@ -51,7 +53,7 @@
|
|
|
51
53
|
|
|
52
54
|
const scroll = useScroll();
|
|
53
55
|
|
|
54
|
-
const
|
|
56
|
+
const colors = {
|
|
55
57
|
primary: 'is-primary',
|
|
56
58
|
secondary: 'is-secondary',
|
|
57
59
|
muted: 'is-muted',
|
|
@@ -60,7 +62,12 @@
|
|
|
60
62
|
warning: 'is-warning',
|
|
61
63
|
danger: 'is-danger',
|
|
62
64
|
surface: 'is-surface',
|
|
63
|
-
|
|
65
|
+
default: 'is-default'
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const variants = {
|
|
69
|
+
solid: 'is-solid',
|
|
70
|
+
soft: 'is-soft'
|
|
64
71
|
};
|
|
65
72
|
|
|
66
73
|
$effect(() => {
|
|
@@ -93,7 +100,8 @@
|
|
|
93
100
|
bind:this={footerElement}
|
|
94
101
|
class={cn(
|
|
95
102
|
'footer',
|
|
96
|
-
|
|
103
|
+
colors[color],
|
|
104
|
+
variants[variant],
|
|
97
105
|
isBordered && 'is-bordered',
|
|
98
106
|
shouldBlur && 'is-blurred',
|
|
99
107
|
isHidden && 'is-hidden',
|
|
@@ -8,11 +8,12 @@ type Props = {
|
|
|
8
8
|
startClass?: string;
|
|
9
9
|
centerClass?: string;
|
|
10
10
|
endClass?: string;
|
|
11
|
+
color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger' | 'surface' | 'default';
|
|
12
|
+
variant?: 'solid' | 'soft';
|
|
11
13
|
isBlurred?: boolean;
|
|
12
14
|
isBordered?: boolean;
|
|
13
15
|
isBoxed?: boolean;
|
|
14
16
|
hideOnScroll?: boolean;
|
|
15
|
-
variant?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger' | 'surface' | 'ghost';
|
|
16
17
|
};
|
|
17
18
|
declare const Footer: import("svelte").Component<Props, {}, "">;
|
|
18
19
|
type Footer = ReturnType<typeof Footer>;
|
|
@@ -5,22 +5,45 @@
|
|
|
5
5
|
|
|
6
6
|
type Props = {
|
|
7
7
|
children: Snippet;
|
|
8
|
-
|
|
8
|
+
toastVariant?: 'solid' | 'soft';
|
|
9
9
|
toastIcon?: boolean;
|
|
10
10
|
toastPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
11
|
+
themeTransition?: 'circle' | 'slide' | 'fade' | 'vertical' | 'none';
|
|
12
|
+
pageTransition?: 'fade' | 'slide' | 'scale' | 'none';
|
|
11
13
|
};
|
|
12
14
|
|
|
13
|
-
const {
|
|
15
|
+
const {
|
|
16
|
+
children,
|
|
17
|
+
toastVariant,
|
|
18
|
+
toastPosition,
|
|
19
|
+
toastIcon,
|
|
20
|
+
themeTransition = 'circle',
|
|
21
|
+
pageTransition = 'fade'
|
|
22
|
+
}: Props = $props();
|
|
14
23
|
|
|
15
24
|
onNavigate((navigation) => {
|
|
25
|
+
if (pageTransition === 'none') return;
|
|
16
26
|
if (!document.startViewTransition) return;
|
|
17
27
|
return new Promise((resolve) => {
|
|
18
|
-
document.
|
|
28
|
+
document.documentElement.classList.add('page-transitioning');
|
|
29
|
+
document.documentElement.setAttribute('data-page-transition', pageTransition);
|
|
30
|
+
|
|
31
|
+
const transition = document.startViewTransition(async () => {
|
|
19
32
|
resolve();
|
|
20
33
|
await navigation.complete;
|
|
21
34
|
});
|
|
35
|
+
|
|
36
|
+
transition.finished.finally(() => {
|
|
37
|
+
document.documentElement.classList.remove('page-transitioning');
|
|
38
|
+
document.documentElement.removeAttribute('data-page-transition');
|
|
39
|
+
});
|
|
22
40
|
});
|
|
23
41
|
});
|
|
42
|
+
$effect(() => {
|
|
43
|
+
if (typeof document !== 'undefined') {
|
|
44
|
+
document.documentElement.setAttribute('data-theme-transition', themeTransition);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
24
47
|
</script>
|
|
25
48
|
|
|
26
49
|
<svelte:head>
|
|
@@ -49,4 +72,4 @@
|
|
|
49
72
|
</svelte:head>
|
|
50
73
|
|
|
51
74
|
{@render children()}
|
|
52
|
-
<Toast position={toastPosition} showIcon={toastIcon}
|
|
75
|
+
<Toast position={toastPosition} showIcon={toastIcon} variant={toastVariant} />
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
2
|
type Props = {
|
|
3
3
|
children: Snippet;
|
|
4
|
-
|
|
4
|
+
toastVariant?: 'solid' | 'soft';
|
|
5
5
|
toastIcon?: boolean;
|
|
6
6
|
toastPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
7
|
+
themeTransition?: 'circle' | 'slide' | 'fade' | 'vertical' | 'none';
|
|
8
|
+
pageTransition?: 'fade' | 'slide' | 'scale' | 'none';
|
|
7
9
|
};
|
|
8
10
|
declare const Provider: import("svelte").Component<Props, {}, "">;
|
|
9
11
|
type Provider = ReturnType<typeof Provider>;
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
&.is-transparent {
|
|
22
|
-
@apply bg-transparent border-transparent shadow-none;
|
|
22
|
+
@apply bg-transparent! border-transparent shadow-none;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
&.is-floating-enabled {
|
|
26
|
-
@apply left-1/2 -translate-x-1/2;
|
|
26
|
+
@apply fixed top-0 left-1/2 -translate-x-1/2;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
&.is-floating {
|
|
30
|
-
@apply mt-4 w-[calc(100%-2rem)] rounded-
|
|
30
|
+
@apply mt-4 w-[calc(100%-2rem)] rounded-box shadow-md shadow-muted border border-muted;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
&.is-floating-enabled:not(.is-floating) {
|
|
@@ -35,6 +35,66 @@
|
|
|
35
35
|
@apply border-b border-muted;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
&.is-soft {
|
|
39
|
+
&.is-primary {
|
|
40
|
+
@apply bg-on-primary text-primary;
|
|
41
|
+
}
|
|
42
|
+
&.is-secondary {
|
|
43
|
+
@apply bg-on-secondary text-secondary;
|
|
44
|
+
}
|
|
45
|
+
&.is-muted {
|
|
46
|
+
@apply bg-muted text-on-muted;
|
|
47
|
+
}
|
|
48
|
+
&.is-success {
|
|
49
|
+
@apply bg-on-success text-success;
|
|
50
|
+
}
|
|
51
|
+
&.is-info {
|
|
52
|
+
@apply bg-on-info text-info;
|
|
53
|
+
}
|
|
54
|
+
&.is-warning {
|
|
55
|
+
@apply bg-on-warning text-warning;
|
|
56
|
+
}
|
|
57
|
+
&.is-danger {
|
|
58
|
+
@apply bg-on-danger text-danger;
|
|
59
|
+
}
|
|
60
|
+
&.is-default {
|
|
61
|
+
@apply bg-background text-on-background;
|
|
62
|
+
}
|
|
63
|
+
&.is-surface {
|
|
64
|
+
@apply bg-surface text-on-surface;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.is-solid {
|
|
69
|
+
&.is-primary {
|
|
70
|
+
@apply bg-primary text-on-primary;
|
|
71
|
+
}
|
|
72
|
+
&.is-secondary {
|
|
73
|
+
@apply bg-secondary text-on-secondary;
|
|
74
|
+
}
|
|
75
|
+
&.is-muted {
|
|
76
|
+
@apply bg-on-muted text-muted;
|
|
77
|
+
}
|
|
78
|
+
&.is-success {
|
|
79
|
+
@apply bg-success text-on-success;
|
|
80
|
+
}
|
|
81
|
+
&.is-info {
|
|
82
|
+
@apply bg-info text-on-info;
|
|
83
|
+
}
|
|
84
|
+
&.is-warning {
|
|
85
|
+
@apply bg-warning text-on-warning;
|
|
86
|
+
}
|
|
87
|
+
&.is-danger {
|
|
88
|
+
@apply bg-danger text-on-danger;
|
|
89
|
+
}
|
|
90
|
+
&.is-default {
|
|
91
|
+
@apply bg-background text-on-background;
|
|
92
|
+
}
|
|
93
|
+
&.is-surface {
|
|
94
|
+
@apply bg-surface text-on-surface;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
38
98
|
.appbar-content {
|
|
39
99
|
@apply flex flex-nowrap items-center justify-between relative;
|
|
40
100
|
@apply w-full px-2 h-full min-h-12;
|
|
@@ -52,67 +112,4 @@
|
|
|
52
112
|
}
|
|
53
113
|
}
|
|
54
114
|
}
|
|
55
|
-
.appbar.is-primary {
|
|
56
|
-
@apply bg-on-primary text-primary;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.appbar.is-primary.is-solid {
|
|
60
|
-
@apply bg-primary text-on-primary;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.appbar.is-secondary {
|
|
64
|
-
@apply bg-on-secondary text-secondary;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.appbar.is-secondary.is-solid {
|
|
68
|
-
@apply bg-secondary text-on-secondary;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.appbar.is-success {
|
|
72
|
-
@apply bg-on-success text-success;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.appbar.is-success.is-solid {
|
|
76
|
-
@apply bg-success text-on-success;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.appbar.is-info {
|
|
80
|
-
@apply bg-on-info text-info;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.appbar.is-info.is-solid {
|
|
84
|
-
@apply bg-info text-on-info;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.appbar.is-warning {
|
|
88
|
-
@apply bg-on-warning text-warning;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.appbar.is-warning.is-solid {
|
|
92
|
-
@apply bg-warning text-on-warning;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.appbar.is-danger {
|
|
96
|
-
@apply bg-on-danger text-danger;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.appbar.is-danger.is-solid {
|
|
100
|
-
@apply bg-danger text-on-danger;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.appbar.is-muted {
|
|
104
|
-
@apply bg-muted text-on-muted;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.appbar.is-muted.is-solid {
|
|
108
|
-
@apply bg-on-muted text-muted;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.appbar.is-ghost {
|
|
112
|
-
@apply bg-background text-on-background;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.appbar.is-surface {
|
|
116
|
-
@apply bg-surface text-on-surface;
|
|
117
|
-
}
|
|
118
115
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
@layer components {
|
|
2
2
|
.footer {
|
|
3
|
-
@apply w-full
|
|
3
|
+
@apply w-full mt-auto;
|
|
4
4
|
@apply transition-all duration-300 ease-in-out;
|
|
5
5
|
|
|
6
6
|
&.is-blurred {
|
|
7
|
-
@apply backdrop-blur-lg
|
|
7
|
+
@apply backdrop-blur-lg;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
&.is-bordered {
|
|
@@ -15,6 +15,66 @@
|
|
|
15
15
|
@apply translate-y-full;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
&.is-soft {
|
|
19
|
+
&.is-primary {
|
|
20
|
+
@apply bg-on-primary text-primary;
|
|
21
|
+
}
|
|
22
|
+
&.is-secondary {
|
|
23
|
+
@apply bg-on-secondary text-secondary;
|
|
24
|
+
}
|
|
25
|
+
&.is-muted {
|
|
26
|
+
@apply bg-muted text-on-muted;
|
|
27
|
+
}
|
|
28
|
+
&.is-success {
|
|
29
|
+
@apply bg-on-success text-success;
|
|
30
|
+
}
|
|
31
|
+
&.is-info {
|
|
32
|
+
@apply bg-on-info text-info;
|
|
33
|
+
}
|
|
34
|
+
&.is-warning {
|
|
35
|
+
@apply bg-on-warning text-warning;
|
|
36
|
+
}
|
|
37
|
+
&.is-danger {
|
|
38
|
+
@apply bg-on-danger text-danger;
|
|
39
|
+
}
|
|
40
|
+
&.is-default {
|
|
41
|
+
@apply bg-background text-on-background;
|
|
42
|
+
}
|
|
43
|
+
&.is-surface {
|
|
44
|
+
@apply bg-surface text-on-surface;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&.is-solid {
|
|
49
|
+
&.is-primary {
|
|
50
|
+
@apply bg-primary text-on-primary;
|
|
51
|
+
}
|
|
52
|
+
&.is-secondary {
|
|
53
|
+
@apply bg-secondary text-on-secondary;
|
|
54
|
+
}
|
|
55
|
+
&.is-muted {
|
|
56
|
+
@apply bg-on-muted text-muted;
|
|
57
|
+
}
|
|
58
|
+
&.is-success {
|
|
59
|
+
@apply bg-success text-on-success;
|
|
60
|
+
}
|
|
61
|
+
&.is-info {
|
|
62
|
+
@apply bg-info text-on-info;
|
|
63
|
+
}
|
|
64
|
+
&.is-warning {
|
|
65
|
+
@apply bg-warning text-on-warning;
|
|
66
|
+
}
|
|
67
|
+
&.is-danger {
|
|
68
|
+
@apply bg-danger text-on-danger;
|
|
69
|
+
}
|
|
70
|
+
&.is-default {
|
|
71
|
+
@apply bg-background text-on-background;
|
|
72
|
+
}
|
|
73
|
+
&.is-surface {
|
|
74
|
+
@apply bg-surface text-on-surface;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
18
78
|
.footer-content {
|
|
19
79
|
@apply column md:row flex-nowrap items-center justify-between relative;
|
|
20
80
|
@apply w-full px-2 h-full min-h-12;
|
|
@@ -32,67 +92,4 @@
|
|
|
32
92
|
}
|
|
33
93
|
}
|
|
34
94
|
}
|
|
35
|
-
.footer.is-primary {
|
|
36
|
-
@apply bg-on-primary text-primary;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.footer.is-primary.is-solid {
|
|
40
|
-
@apply bg-primary text-on-primary;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.footer.is-secondary {
|
|
44
|
-
@apply bg-on-secondary text-secondary;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.footer.is-secondary.is-solid {
|
|
48
|
-
@apply bg-secondary text-on-secondary;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.footer.is-success {
|
|
52
|
-
@apply bg-on-success text-success;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.footer.is-success.is-solid {
|
|
56
|
-
@apply bg-success text-on-success;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.footer.is-info {
|
|
60
|
-
@apply bg-on-info text-info;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.footer.is-info.is-solid {
|
|
64
|
-
@apply bg-info text-on-info;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.footer.is-warning {
|
|
68
|
-
@apply bg-on-warning text-warning;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.footer.is-warning.is-solid {
|
|
72
|
-
@apply bg-warning text-on-warning;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.footer.is-danger {
|
|
76
|
-
@apply bg-on-danger text-danger;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.footer.is-danger.is-solid {
|
|
80
|
-
@apply bg-danger text-on-danger;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.footer.is-muted {
|
|
84
|
-
@apply bg-muted text-on-muted;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.footer.is-muted.is-solid {
|
|
88
|
-
@apply bg-on-muted text-muted;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.footer.is-ghost {
|
|
92
|
-
@apply bg-background text-on-background;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.footer.is-surface {
|
|
96
|
-
@apply bg-surface text-on-surface;
|
|
97
|
-
}
|
|
98
95
|
}
|
|
@@ -16,27 +16,56 @@
|
|
|
16
16
|
|
|
17
17
|
type Props = {
|
|
18
18
|
items: BottomNavItem[];
|
|
19
|
-
|
|
19
|
+
color?:
|
|
20
|
+
| 'primary'
|
|
21
|
+
| 'secondary'
|
|
22
|
+
| 'muted'
|
|
23
|
+
| 'success'
|
|
24
|
+
| 'info'
|
|
25
|
+
| 'warning'
|
|
26
|
+
| 'danger'
|
|
27
|
+
| 'surface'
|
|
28
|
+
| 'default';
|
|
29
|
+
variant?: 'solid' | 'soft' | 'blur';
|
|
30
|
+
activeStyle?: 'line' | 'pill';
|
|
20
31
|
size?: 'sm' | 'md' | 'lg';
|
|
21
|
-
isSolid?: boolean;
|
|
22
32
|
isBlock?: boolean;
|
|
33
|
+
isBordered?: boolean;
|
|
23
34
|
class?: string;
|
|
24
35
|
};
|
|
25
36
|
|
|
26
37
|
const {
|
|
27
38
|
items = [],
|
|
28
39
|
class: className,
|
|
29
|
-
|
|
40
|
+
color = 'primary',
|
|
41
|
+
variant = 'soft',
|
|
42
|
+
activeStyle = 'line',
|
|
30
43
|
size = 'md',
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
isBlock = false,
|
|
45
|
+
isBordered = true
|
|
33
46
|
}: Props = $props();
|
|
34
47
|
|
|
35
|
-
const
|
|
48
|
+
const colors = {
|
|
36
49
|
primary: 'is-primary',
|
|
37
50
|
secondary: 'is-secondary',
|
|
38
|
-
|
|
39
|
-
|
|
51
|
+
muted: 'is-muted',
|
|
52
|
+
success: 'is-success',
|
|
53
|
+
info: 'is-info',
|
|
54
|
+
warning: 'is-warning',
|
|
55
|
+
danger: 'is-danger',
|
|
56
|
+
surface: 'is-surface',
|
|
57
|
+
default: 'is-default'
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const variants = {
|
|
61
|
+
solid: 'is-solid',
|
|
62
|
+
soft: 'is-soft',
|
|
63
|
+
blur: 'is-blur'
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const activeStyles = {
|
|
67
|
+
line: 'active-line',
|
|
68
|
+
pill: 'active-pill'
|
|
40
69
|
};
|
|
41
70
|
|
|
42
71
|
const sizeClasses = {
|
|
@@ -45,13 +74,10 @@
|
|
|
45
74
|
lg: 'is-lg'
|
|
46
75
|
};
|
|
47
76
|
|
|
48
|
-
// Determine if any item has a label
|
|
49
77
|
const hasLabels = $derived(items.some((item) => item.label));
|
|
50
78
|
|
|
51
79
|
function isItemActive(item: BottomNavItem): boolean {
|
|
52
|
-
// If item has explicit isActive, use that
|
|
53
80
|
if (item.isActive !== undefined) return item.isActive;
|
|
54
|
-
// Otherwise check against current URL
|
|
55
81
|
if (!item.href) return false;
|
|
56
82
|
return page.url.pathname === item.href || page.url.pathname.startsWith(item.href + '/');
|
|
57
83
|
}
|
|
@@ -66,11 +92,13 @@
|
|
|
66
92
|
<nav
|
|
67
93
|
class={cn(
|
|
68
94
|
'bottomnav',
|
|
69
|
-
|
|
95
|
+
colors[color],
|
|
96
|
+
variants[variant],
|
|
97
|
+
activeStyles[activeStyle],
|
|
70
98
|
sizeClasses[size],
|
|
71
|
-
isSolid && 'is-solid',
|
|
72
99
|
!hasLabels && 'is-icon-only',
|
|
73
100
|
!isBlock && 'is-fixed',
|
|
101
|
+
isBordered && 'is-bordered',
|
|
74
102
|
className
|
|
75
103
|
)}
|
|
76
104
|
>
|