negodesign 0.0.52 → 0.0.54
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/components/core/card/media/01/CardMedia01.svelte +4 -4
- package/dist/components/core/card/media/02/CardMedia02.svelte +2 -7
- package/dist/components/core/card/shared/CardButton.svelte +1 -4
- package/dist/components/core/card/shared/CardTags.svelte +1 -1
- package/dist/components/core/card/shared/CardThumbnailVideo.svelte +3 -9
- package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +54 -29
- package/dist/components/core/carousel/grid/media/types.d.ts +4 -0
- package/dist/components/core/carousel/grid/media/ui/CarouselGridMedia.svelte +12 -24
- package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +3 -3
- package/dist/components/core/carousel/types.d.ts +4 -0
- package/dist/components/core/nav/data/nav-menu.d.ts +6 -0
- package/dist/components/core/nav/ui/menu-links.svelte +37 -25
- package/dist/components/core/nav/ui/menu-links.svelte.d.ts +2 -0
- package/dist/components/core/nav/ui/nav-menu.svelte +18 -2
- package/dist/globals.css +36 -20
- package/package.json +1 -1
|
@@ -56,13 +56,13 @@
|
|
|
56
56
|
{#if title}
|
|
57
57
|
<div class="text-center font-bold text-lg">{title}</div>
|
|
58
58
|
{:else if isLoading}
|
|
59
|
-
<Skeleton class="w-40 h-5 rounded-lg bg-gray-400 mb-0.5" />
|
|
59
|
+
<Skeleton class="w-5 md:w-40 h-5 rounded-lg bg-gray-400 mb-0.5" />
|
|
60
60
|
{/if}
|
|
61
61
|
|
|
62
62
|
{#if startNumber}
|
|
63
63
|
<CardStarRating {startNumber} {startMax} {isLoading} />
|
|
64
64
|
{:else if isLoading}
|
|
65
|
-
<Skeleton class="w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
|
|
65
|
+
<Skeleton class="w-5 md:w-20 h-4 rounded-lg bg-gray-300 mt-0.5" />
|
|
66
66
|
{/if}
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
</div>
|
|
77
77
|
</div>
|
|
78
78
|
|
|
79
|
-
<div class="
|
|
79
|
+
<div class=" my-2 mb-2 md:mb-0">
|
|
80
80
|
<CardDescription
|
|
81
81
|
{content}
|
|
82
82
|
{isLoading}
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
</div>
|
|
87
87
|
|
|
88
88
|
<CardTags
|
|
89
|
-
className="
|
|
89
|
+
className="mt-1 mb-5"
|
|
90
90
|
tags={tags ?? []}
|
|
91
91
|
{isTagBorderBottom}
|
|
92
92
|
{isLoading}
|
|
@@ -74,15 +74,10 @@
|
|
|
74
74
|
{isLoading}
|
|
75
75
|
/>
|
|
76
76
|
</div>
|
|
77
|
-
<CardTags
|
|
78
|
-
className="my-2"
|
|
79
|
-
tags={tags ?? []}
|
|
80
|
-
{isTagBorderBottom}
|
|
81
|
-
{isLoading}
|
|
82
|
-
/>
|
|
77
|
+
<CardTags tags={tags ?? []} {isTagBorderBottom} {isLoading} />
|
|
83
78
|
</div>
|
|
84
79
|
|
|
85
|
-
<div class="h-
|
|
80
|
+
<div class="h-24">
|
|
86
81
|
<CardDescription
|
|
87
82
|
{content}
|
|
88
83
|
{isLoading}
|
|
@@ -29,10 +29,7 @@
|
|
|
29
29
|
class="w-full h-7.5 rounded-lg bg-gray-500/80 dark:bg-gray-500/30"
|
|
30
30
|
/>
|
|
31
31
|
{:else}
|
|
32
|
-
<Button
|
|
33
|
-
class="bg-gradient {isFlex ? 'flex-1' : ''} {className}"
|
|
34
|
-
onclick={() => onClick(id)}
|
|
35
|
-
>
|
|
32
|
+
<Button class="bg-gradient flex-1 {className}" onclick={() => onClick(id)}>
|
|
36
33
|
{#if icon}
|
|
37
34
|
{#if typeof icon === "string"}
|
|
38
35
|
<i class={icon}></i>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
let {
|
|
28
28
|
imageUrl,
|
|
29
29
|
videoUrl,
|
|
30
|
-
class: className = "h-32
|
|
30
|
+
class: className = "h-32 w-full md:h-64",
|
|
31
31
|
isImageButtonMaximized = false,
|
|
32
32
|
isVideoButtonMaximized = false,
|
|
33
33
|
isLoading = false,
|
|
@@ -130,16 +130,10 @@
|
|
|
130
130
|
loading="lazy"
|
|
131
131
|
decoding="async"
|
|
132
132
|
alt={imageUrl}
|
|
133
|
-
class="absolute inset-0 w-full
|
|
133
|
+
class="absolute inset-0 h-full w-full rounded-md object-cover transition-opacity duration-500"
|
|
134
134
|
class:opacity-0={videoUrl && showVideo}
|
|
135
135
|
onerror={(e) => ((e.target as HTMLImageElement).src = ImgPlaceholder)}
|
|
136
136
|
/>
|
|
137
|
-
{:else}
|
|
138
|
-
<img
|
|
139
|
-
src={ImgPlaceholder}
|
|
140
|
-
alt={imageUrl}
|
|
141
|
-
class="rounded-lg w-50 h-[50px] object-cover object-center"
|
|
142
|
-
/>
|
|
143
137
|
{/if}
|
|
144
138
|
|
|
145
139
|
{#if videoUrl && isVisible}
|
|
@@ -148,7 +142,7 @@
|
|
|
148
142
|
src={videoUrl}
|
|
149
143
|
preload="metadata"
|
|
150
144
|
onloadedmetadata={onLoadedMetadata}
|
|
151
|
-
class="absolute inset-0 w-full
|
|
145
|
+
class="absolute inset-0 h-full w-full rounded-md object-cover transition-opacity duration-500"
|
|
152
146
|
class:opacity-0={imageUrl && !showVideo}
|
|
153
147
|
muted
|
|
154
148
|
loop
|
|
@@ -10,16 +10,23 @@
|
|
|
10
10
|
imageClass,
|
|
11
11
|
iconClass,
|
|
12
12
|
labelClass,
|
|
13
|
-
activeClass = "bg-gradient text-white rounded-
|
|
14
|
-
isLoading = false,
|
|
13
|
+
activeClass = "bg-gradient text-white rounded-full px-3",
|
|
15
14
|
orientation = "horizontal",
|
|
15
|
+
itemStyle = "DEFAULT",
|
|
16
|
+
isBorderInline = false,
|
|
17
|
+
showButton = true,
|
|
18
|
+
isLoading = false,
|
|
19
|
+
btnNavClass,
|
|
16
20
|
itemClass,
|
|
17
21
|
onClick,
|
|
18
22
|
}: CarouselBadgeProps = $props();
|
|
19
23
|
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
24
|
+
const TOP_NAV = $derived(isBorderInline ? "top-5.5" : "top-7.5");
|
|
25
|
+
const borderB = $derived(
|
|
26
|
+
isBorderInline ? `border-b-2 ${itemStyle == "BORDER" ? "pb-2" : ""}` : "",
|
|
27
|
+
);
|
|
28
|
+
const isInlineBorder = $derived(isBorderInline && itemStyle == "INLINE");
|
|
29
|
+
const DEFAULT_IMG_OR_ICON_CLASS = "size-3 md:size-6";
|
|
23
30
|
|
|
24
31
|
const responsive = useDevice();
|
|
25
32
|
const skeletonCount = $derived(responsive.isMobile ? 2 : 8);
|
|
@@ -54,31 +61,49 @@
|
|
|
54
61
|
{/if}
|
|
55
62
|
{/snippet}
|
|
56
63
|
|
|
57
|
-
|
|
58
|
-
<Carousel.
|
|
59
|
-
{
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
{
|
|
67
|
-
|
|
68
|
-
<
|
|
69
|
-
class="
|
|
64
|
+
{#if items.length > 0}
|
|
65
|
+
<Carousel.Root>
|
|
66
|
+
<Carousel.Content class={borderB}>
|
|
67
|
+
{#if isLoading}
|
|
68
|
+
<div class="flex items-center justify-between w-full gap-1 md:gap-2">
|
|
69
|
+
{#each Array.from( { length: skeletonCount }, ) as _, i (`skeleton-${i}`)}
|
|
70
|
+
<Skeleton class="h-4 w-25 bg-gray-50/90" />
|
|
71
|
+
{/each}
|
|
72
|
+
</div>
|
|
73
|
+
{:else}
|
|
74
|
+
{#each items as item, i (`badge-${i}-${item.value ?? item.label ?? i}`)}
|
|
75
|
+
<Carousel.Item
|
|
76
|
+
class="basis-auto relative"
|
|
77
|
+
onclick={() => selectItem(item)}
|
|
78
|
+
>
|
|
79
|
+
<div
|
|
80
|
+
class="flex gap-1 mx-2 p-1 justify-center items-center cursor-pointer relative hover:text-lg hover:font-bold
|
|
81
|
+
{isSelected(item)
|
|
82
|
+
? isInlineBorder
|
|
83
|
+
? 'text-gradient font-bold'
|
|
84
|
+
: activeClass
|
|
85
|
+
: ''}
|
|
86
|
+
{itemStyle == 'BORDER' ? 'border-2 rounded-full min-w-25 px-1' : ''}
|
|
70
87
|
{orientation === 'horizontal' ? 'flex-row' : 'flex-col'}
|
|
71
|
-
{
|
|
88
|
+
{isInlineBorder ? 'pb-3' : ''}
|
|
72
89
|
{itemClass}
|
|
73
90
|
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
91
|
+
>
|
|
92
|
+
{@render itemVisual(item)}
|
|
93
|
+
<div class={labelClass}>{item.label}</div>
|
|
94
|
+
</div>
|
|
95
|
+
{#if isSelected(item) && isInlineBorder}
|
|
96
|
+
<div class="absolute pt-5 w-full h-2 bg-gradient"></div>
|
|
97
|
+
{/if}
|
|
98
|
+
</Carousel.Item>
|
|
99
|
+
{/each}
|
|
100
|
+
{/if}
|
|
101
|
+
</Carousel.Content>
|
|
102
|
+
{#if showButton}
|
|
103
|
+
{@const navClass =
|
|
104
|
+
"absolute -translate-y-1/2 z-50 bg-blue-700! text-white! cursor-pointer"}
|
|
105
|
+
<Carousel.Previous class="-left-8 {navClass} {TOP_NAV} {btnNavClass}" />
|
|
106
|
+
<Carousel.Next class="-right-8 {navClass} {TOP_NAV} {btnNavClass}" />
|
|
80
107
|
{/if}
|
|
81
|
-
</Carousel.
|
|
82
|
-
|
|
83
|
-
<Carousel.Next class="-right-8 {NAV_BUTTON_CLASS}" />
|
|
84
|
-
</Carousel.Root>
|
|
108
|
+
</Carousel.Root>
|
|
109
|
+
{/if}
|
|
@@ -22,6 +22,10 @@ export interface CarouselGridMediaProps {
|
|
|
22
22
|
items: CardMediaProps[];
|
|
23
23
|
/** Estado de carregamento (skeleton) */
|
|
24
24
|
isLoading?: boolean;
|
|
25
|
+
/** Exibe o botão de maximizar no vídeo */
|
|
26
|
+
isVideoButtonMaximized?: boolean;
|
|
27
|
+
/** Exibe o botão de maximizar na imagem */
|
|
28
|
+
isImageButtonMaximized?: boolean;
|
|
25
29
|
/** Callback acionado ao clicar no botão de favorito */
|
|
26
30
|
onFavoriteClick?: (id: string | number) => void;
|
|
27
31
|
/** Callback acionado ao clicar no botão de perfil */
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
isLoading = false,
|
|
18
18
|
isDescriptionIcon,
|
|
19
19
|
isDescriptionLabel,
|
|
20
|
+
isVideoButtonMaximized = false,
|
|
21
|
+
isImageButtonMaximized = false,
|
|
20
22
|
onFavoriteClick,
|
|
21
23
|
onButtonProfile,
|
|
22
24
|
onButtonDetails,
|
|
@@ -55,18 +57,11 @@
|
|
|
55
57
|
{variant}
|
|
56
58
|
{isDescriptionIcon}
|
|
57
59
|
{isDescriptionLabel}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
item?.onButtonProfile?.(id);
|
|
64
|
-
onButtonProfile?.(id);
|
|
65
|
-
}}
|
|
66
|
-
onButtonDetails={(id: string | number) => {
|
|
67
|
-
item?.onButtonDetails?.(id);
|
|
68
|
-
onButtonDetails?.(id);
|
|
69
|
-
}}
|
|
60
|
+
{isVideoButtonMaximized}
|
|
61
|
+
{isImageButtonMaximized}
|
|
62
|
+
{onFavoriteClick}
|
|
63
|
+
{onButtonProfile}
|
|
64
|
+
{onButtonDetails}
|
|
70
65
|
/>
|
|
71
66
|
</Carousel.Item>
|
|
72
67
|
{:else}
|
|
@@ -76,18 +71,11 @@
|
|
|
76
71
|
{variant}
|
|
77
72
|
{isDescriptionIcon}
|
|
78
73
|
{isDescriptionLabel}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
item?.onButtonProfile?.(id);
|
|
85
|
-
onButtonProfile?.(id);
|
|
86
|
-
}}
|
|
87
|
-
onButtonDetails={(id: string | number) => {
|
|
88
|
-
item?.onButtonDetails?.(id);
|
|
89
|
-
onButtonDetails?.(id);
|
|
90
|
-
}}
|
|
74
|
+
{isVideoButtonMaximized}
|
|
75
|
+
{isImageButtonMaximized}
|
|
76
|
+
{onFavoriteClick}
|
|
77
|
+
{onButtonProfile}
|
|
78
|
+
{onButtonDetails}
|
|
91
79
|
/>
|
|
92
80
|
</div>
|
|
93
81
|
{/if}
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
const { slotProps, totalItems, gridClass, children }: Props = $props();
|
|
16
16
|
|
|
17
17
|
const responsive = useDevice();
|
|
18
|
-
|
|
19
|
-
const colsClass = $derived(totalItems <= 2 ? "grid-cols-2" : "grid-cols-3");
|
|
20
18
|
</script>
|
|
21
19
|
|
|
22
20
|
{#if responsive.isMobile}
|
|
@@ -27,7 +25,9 @@
|
|
|
27
25
|
{@render children()}
|
|
28
26
|
</CarouselSlot>
|
|
29
27
|
{:else}
|
|
30
|
-
<div
|
|
28
|
+
<div
|
|
29
|
+
class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 gap-4 p-2 {gridClass}"
|
|
30
|
+
>
|
|
31
31
|
{@render children()}
|
|
32
32
|
</div>
|
|
33
33
|
{/if}
|
|
@@ -62,6 +62,10 @@ export interface CarouselBadgeProps {
|
|
|
62
62
|
/** Estado de carregamento (skeleton) */
|
|
63
63
|
isLoading?: boolean;
|
|
64
64
|
itemClass?: string;
|
|
65
|
+
btnNavClass?: string;
|
|
66
|
+
isBorderInline?: boolean;
|
|
67
|
+
showButton?: boolean;
|
|
68
|
+
itemStyle?: 'BORDER' | 'INLINE' | 'DEFAULT';
|
|
65
69
|
onClick?: (value: string | number) => void;
|
|
66
70
|
}
|
|
67
71
|
/**
|
|
@@ -18,6 +18,8 @@ export interface NavMenuLogoProps {
|
|
|
18
18
|
* Props de um link individual no menu de navegação.
|
|
19
19
|
*/
|
|
20
20
|
export interface NavMenuLinksProps {
|
|
21
|
+
/** Key menu */
|
|
22
|
+
key?: string;
|
|
21
23
|
/** URL de destino do link */
|
|
22
24
|
url?: string;
|
|
23
25
|
/** Alias de `url` — URL de destino do link (compatibilidade) */
|
|
@@ -52,6 +54,10 @@ export interface NavMenuActionsProps {
|
|
|
52
54
|
* com logo, links, ações (login/registo), language switcher e light switch.
|
|
53
55
|
*/
|
|
54
56
|
export interface NavMenuProps {
|
|
57
|
+
/** Key nav menu */
|
|
58
|
+
menuKey?: string;
|
|
59
|
+
/** Key CSS nav menu */
|
|
60
|
+
activeClass?: string;
|
|
55
61
|
/** Classe CSS adicional para o container do nav */
|
|
56
62
|
navClass?: string;
|
|
57
63
|
/** Classe CSS personalizada para cada link */
|
|
@@ -1,28 +1,40 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
type Props = {
|
|
6
|
-
links: NavMenuLinksProps[];
|
|
7
|
-
linkClass?: string;
|
|
8
|
-
groupClass?: string;
|
|
9
|
-
orientation?: "horizontal" | "vertical";
|
|
10
|
-
};
|
|
2
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
3
|
+
import type { NavMenuLinksProps } from "../data/nav-menu";
|
|
11
4
|
|
|
12
|
-
|
|
5
|
+
type Props = {
|
|
6
|
+
links: NavMenuLinksProps[];
|
|
7
|
+
linkClass?: string;
|
|
8
|
+
groupClass?: string;
|
|
9
|
+
menuKey?: string;
|
|
10
|
+
activeClass?: string;
|
|
11
|
+
orientation?: "horizontal" | "vertical";
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
links,
|
|
16
|
+
linkClass,
|
|
17
|
+
groupClass,
|
|
18
|
+
menuKey,
|
|
19
|
+
activeClass = "bg-gradient text-white",
|
|
20
|
+
orientation,
|
|
21
|
+
}: Props = $props();
|
|
13
22
|
</script>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
|
|
23
|
+
|
|
24
|
+
<ul
|
|
25
|
+
class={`flex ${orientation === "vertical" ? "flex-col" : "items-center"} gap-2 md:gap-5 lg:gap-15 ${groupClass}`}
|
|
26
|
+
>
|
|
27
|
+
{#each links as item (item.label)}
|
|
28
|
+
<li>
|
|
29
|
+
<a
|
|
30
|
+
class={`flex items-center gap-1 ${linkClass} ${item.key && menuKey === item.key ? activeClass : ""}`}
|
|
31
|
+
href={item.url ?? item.href ?? "#"}
|
|
32
|
+
>
|
|
33
|
+
{#if item.icon}
|
|
34
|
+
<HugeiconsIcon icon={item.icon} size={15} />
|
|
35
|
+
{/if}
|
|
36
|
+
{item.label}
|
|
37
|
+
</a>
|
|
38
|
+
</li>
|
|
39
|
+
{/each}
|
|
40
|
+
</ul>
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
logo,
|
|
15
15
|
links,
|
|
16
16
|
actions,
|
|
17
|
+
menuKey,
|
|
18
|
+
activeClass,
|
|
17
19
|
navClass = "w-full",
|
|
18
20
|
linkClass = "",
|
|
19
21
|
groupClass = "",
|
|
@@ -95,11 +97,25 @@
|
|
|
95
97
|
{#if responsive.isMobile}
|
|
96
98
|
<NavMenuDrawer {links} {onclickButtonLogin} {onclickButtonRegister} />
|
|
97
99
|
{:else if align === "LINK_SEPARATED_ACTIONS"}
|
|
98
|
-
<MenuLinks
|
|
100
|
+
<MenuLinks
|
|
101
|
+
{menuKey}
|
|
102
|
+
{activeClass}
|
|
103
|
+
{links}
|
|
104
|
+
{linkClass}
|
|
105
|
+
{groupClass}
|
|
106
|
+
orientation="horizontal"
|
|
107
|
+
/>
|
|
99
108
|
{@render actionButtons()}
|
|
100
109
|
{:else if align === "LINK_INTO_ACTIONS"}
|
|
101
110
|
<div class="flex items-center gap-2">
|
|
102
|
-
<MenuLinks
|
|
111
|
+
<MenuLinks
|
|
112
|
+
{menuKey}
|
|
113
|
+
{activeClass}
|
|
114
|
+
{links}
|
|
115
|
+
{linkClass}
|
|
116
|
+
{groupClass}
|
|
117
|
+
orientation="vertical"
|
|
118
|
+
/>
|
|
103
119
|
{@render actionButtons()}
|
|
104
120
|
</div>
|
|
105
121
|
{/if}
|
package/dist/globals.css
CHANGED
|
@@ -329,6 +329,12 @@
|
|
|
329
329
|
.top-4 {
|
|
330
330
|
top: calc(var(--spacing) * 4);
|
|
331
331
|
}
|
|
332
|
+
.top-5\.5 {
|
|
333
|
+
top: calc(var(--spacing) * 5.5);
|
|
334
|
+
}
|
|
335
|
+
.top-7\.5 {
|
|
336
|
+
top: calc(var(--spacing) * 7.5);
|
|
337
|
+
}
|
|
332
338
|
.top-8 {
|
|
333
339
|
top: calc(var(--spacing) * 8);
|
|
334
340
|
}
|
|
@@ -479,9 +485,6 @@
|
|
|
479
485
|
.my-2 {
|
|
480
486
|
margin-block: calc(var(--spacing) * 2);
|
|
481
487
|
}
|
|
482
|
-
.my-6 {
|
|
483
|
-
margin-block: calc(var(--spacing) * 6);
|
|
484
|
-
}
|
|
485
488
|
.my-auto {
|
|
486
489
|
margin-block: auto;
|
|
487
490
|
}
|
|
@@ -813,9 +816,6 @@
|
|
|
813
816
|
.h-75 {
|
|
814
817
|
height: calc(var(--spacing) * 75);
|
|
815
818
|
}
|
|
816
|
-
.h-\[50px\] {
|
|
817
|
-
height: 50px;
|
|
818
|
-
}
|
|
819
819
|
.h-\[65px\] {
|
|
820
820
|
height: 65px;
|
|
821
821
|
}
|
|
@@ -1231,9 +1231,6 @@
|
|
|
1231
1231
|
.grid-cols-2 {
|
|
1232
1232
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1233
1233
|
}
|
|
1234
|
-
.grid-cols-3 {
|
|
1235
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1236
|
-
}
|
|
1237
1234
|
.grid-cols-10 {
|
|
1238
1235
|
grid-template-columns: repeat(10, minmax(0, 1fr));
|
|
1239
1236
|
}
|
|
@@ -1479,6 +1476,10 @@
|
|
|
1479
1476
|
border-style: var(--tw-border-style);
|
|
1480
1477
|
border-width: 0px;
|
|
1481
1478
|
}
|
|
1479
|
+
.border-2 {
|
|
1480
|
+
border-style: var(--tw-border-style);
|
|
1481
|
+
border-width: 2px;
|
|
1482
|
+
}
|
|
1482
1483
|
.border-4 {
|
|
1483
1484
|
border-style: var(--tw-border-style);
|
|
1484
1485
|
border-width: 4px;
|
|
@@ -1716,6 +1717,12 @@
|
|
|
1716
1717
|
.bg-gray-50 {
|
|
1717
1718
|
background-color: var(--color-gray-50);
|
|
1718
1719
|
}
|
|
1720
|
+
.bg-gray-50\/90 {
|
|
1721
|
+
background-color: color-mix(in srgb, oklch(98.5% 0.002 247.839) 90%, transparent);
|
|
1722
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1723
|
+
background-color: color-mix(in oklab, var(--color-gray-50) 90%, transparent);
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1719
1726
|
.bg-gray-100 {
|
|
1720
1727
|
background-color: var(--color-gray-100);
|
|
1721
1728
|
}
|
|
@@ -1755,12 +1762,6 @@
|
|
|
1755
1762
|
background-color: color-mix(in oklab, var(--color-gray-800) 50%, transparent);
|
|
1756
1763
|
}
|
|
1757
1764
|
}
|
|
1758
|
-
.bg-gray-900\/90 {
|
|
1759
|
-
background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 90%, transparent);
|
|
1760
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1761
|
-
background-color: color-mix(in oklab, var(--color-gray-900) 90%, transparent);
|
|
1762
|
-
}
|
|
1763
|
-
}
|
|
1764
1765
|
.bg-green-500 {
|
|
1765
1766
|
background-color: var(--color-green-500);
|
|
1766
1767
|
}
|
|
@@ -1919,9 +1920,6 @@
|
|
|
1919
1920
|
.p-0 {
|
|
1920
1921
|
padding: 0px;
|
|
1921
1922
|
}
|
|
1922
|
-
.p-0\.5 {
|
|
1923
|
-
padding: calc(var(--spacing) * 0.5);
|
|
1924
|
-
}
|
|
1925
1923
|
.p-1 {
|
|
1926
1924
|
padding: var(--spacing);
|
|
1927
1925
|
}
|
|
@@ -2039,6 +2037,9 @@
|
|
|
2039
2037
|
.pt-4 {
|
|
2040
2038
|
padding-top: calc(var(--spacing) * 4);
|
|
2041
2039
|
}
|
|
2040
|
+
.pt-5 {
|
|
2041
|
+
padding-top: calc(var(--spacing) * 5);
|
|
2042
|
+
}
|
|
2042
2043
|
.pt-6 {
|
|
2043
2044
|
padding-top: calc(var(--spacing) * 6);
|
|
2044
2045
|
}
|
|
@@ -2063,6 +2064,9 @@
|
|
|
2063
2064
|
.pb-2 {
|
|
2064
2065
|
padding-bottom: calc(var(--spacing) * 2);
|
|
2065
2066
|
}
|
|
2067
|
+
.pb-3 {
|
|
2068
|
+
padding-bottom: calc(var(--spacing) * 3);
|
|
2069
|
+
}
|
|
2066
2070
|
.pb-5 {
|
|
2067
2071
|
padding-bottom: calc(var(--spacing) * 5);
|
|
2068
2072
|
}
|
|
@@ -3237,6 +3241,14 @@
|
|
|
3237
3241
|
background-color: color-mix(in oklab, var(--color-white) 90%, transparent);
|
|
3238
3242
|
}
|
|
3239
3243
|
}
|
|
3244
|
+
.hover\:text-lg:hover {
|
|
3245
|
+
font-size: var(--text-lg);
|
|
3246
|
+
line-height: var(--tw-leading, var(--text-lg--line-height));
|
|
3247
|
+
}
|
|
3248
|
+
.hover\:font-bold:hover {
|
|
3249
|
+
--tw-font-weight: var(--font-weight-bold);
|
|
3250
|
+
font-weight: var(--font-weight-bold);
|
|
3251
|
+
}
|
|
3240
3252
|
.hover\:text-foreground:hover {
|
|
3241
3253
|
color: var(--foreground);
|
|
3242
3254
|
}
|
|
@@ -4011,6 +4023,10 @@
|
|
|
4011
4023
|
.md\:aspect-auto {
|
|
4012
4024
|
aspect-ratio: auto;
|
|
4013
4025
|
}
|
|
4026
|
+
.md\:size-6 {
|
|
4027
|
+
width: calc(var(--spacing) * 6);
|
|
4028
|
+
height: calc(var(--spacing) * 6);
|
|
4029
|
+
}
|
|
4014
4030
|
.md\:h-14 {
|
|
4015
4031
|
height: calc(var(--spacing) * 14);
|
|
4016
4032
|
}
|
|
@@ -4065,8 +4081,8 @@
|
|
|
4065
4081
|
.md\:w-25 {
|
|
4066
4082
|
width: calc(var(--spacing) * 25);
|
|
4067
4083
|
}
|
|
4068
|
-
.md\:w-
|
|
4069
|
-
width: calc(var(--spacing) *
|
|
4084
|
+
.md\:w-40 {
|
|
4085
|
+
width: calc(var(--spacing) * 40);
|
|
4070
4086
|
}
|
|
4071
4087
|
.md\:w-225 {
|
|
4072
4088
|
width: calc(var(--spacing) * 225);
|