Skip to content

Commit c3a7f04

Browse files
Merge branch 'main' into dynamic-og-images
2 parents 0f0929d + fce6d69 commit c3a7f04

29 files changed

+593
-247
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"@shikijs/rehype": "^3.12.2",
2828
"@shikijs/themes": "^3.12.2",
2929
"@sveltejs/adapter-vercel": "^5.10.2",
30-
"@sveltejs/kit": "^2.33.1",
30+
"@sveltejs/kit": "^2.37.1",
3131
"@sveltejs/vite-plugin-svelte": "^6.1.4",
3232
"@tailwindcss/typography": "^0.5.16",
3333
"@tailwindcss/vite": "^4.1.13",
@@ -42,7 +42,7 @@
4242
"clsx": "^2.1.1",
4343
"eslint": "^9.35.0",
4444
"eslint-config-prettier": "^10.1.8",
45-
"eslint-plugin-svelte": "^3.12.1",
45+
"eslint-plugin-svelte": "^3.12.2",
4646
"feed": "^5.1.0",
4747
"globals": "^16.3.0",
4848
"marked": "^16.2.1",

pnpm-lock.yaml

Lines changed: 19 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import Root from "./toggle-group.svelte";
2+
import Item from "./toggle-group-item.svelte";
3+
4+
export {
5+
Root,
6+
Item,
7+
//
8+
Root as ToggleGroup,
9+
Item as ToggleGroupItem,
10+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<script lang="ts">
2+
import { ToggleGroup as ToggleGroupPrimitive } from "bits-ui";
3+
import { getToggleGroupCtx } from "./toggle-group.svelte";
4+
import { cn } from "$lib/utils.js";
5+
import { type ToggleVariants, toggleVariants } from "$lib/components/ui/toggle/index.js";
6+
7+
let {
8+
ref = $bindable(null),
9+
value = $bindable(),
10+
class: className,
11+
size,
12+
variant,
13+
...restProps
14+
}: ToggleGroupPrimitive.ItemProps & ToggleVariants = $props();
15+
16+
const ctx = getToggleGroupCtx();
17+
</script>
18+
19+
<ToggleGroupPrimitive.Item
20+
bind:ref
21+
data-slot="toggle-group-item"
22+
data-variant={ctx.variant || variant}
23+
data-size={ctx.size || size}
24+
class={cn(
25+
toggleVariants({
26+
variant: ctx.variant || variant,
27+
size: ctx.size || size,
28+
}),
29+
"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l",
30+
className
31+
)}
32+
{value}
33+
{...restProps}
34+
/>
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<script lang="ts" module>
2+
import { getContext, setContext } from "svelte";
3+
import type { ToggleVariants } from "$lib/components/ui/toggle/index.js";
4+
export function setToggleGroupCtx(props: ToggleVariants) {
5+
setContext("toggleGroup", props);
6+
}
7+
8+
export function getToggleGroupCtx() {
9+
return getContext<ToggleVariants>("toggleGroup");
10+
}
11+
</script>
12+
13+
<script lang="ts">
14+
import { ToggleGroup as ToggleGroupPrimitive } from "bits-ui";
15+
import { cn } from "$lib/utils.js";
16+
17+
let {
18+
ref = $bindable(null),
19+
value = $bindable(),
20+
class: className,
21+
size = "default",
22+
variant = "default",
23+
...restProps
24+
}: ToggleGroupPrimitive.RootProps & ToggleVariants = $props();
25+
26+
setToggleGroupCtx({
27+
variant,
28+
size,
29+
});
30+
</script>
31+
32+
<!--
33+
Discriminated Unions + Destructing (required for bindable) do not
34+
get along, so we shut typescript up by casting `value` to `never`.
35+
-->
36+
<ToggleGroupPrimitive.Root
37+
bind:value={value as never}
38+
bind:ref
39+
data-slot="toggle-group"
40+
data-variant={variant}
41+
data-size={size}
42+
class={cn(
43+
"group/toggle-group data-[variant=outline]:shadow-xs flex w-fit items-center rounded-md",
44+
className
45+
)}
46+
{...restProps}
47+
/>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Root from "./toggle.svelte";
2+
export {
3+
toggleVariants,
4+
type ToggleSize,
5+
type ToggleVariant,
6+
type ToggleVariants,
7+
} from "./toggle.svelte";
8+
9+
export {
10+
Root,
11+
//
12+
Root as Toggle,
13+
};
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<script lang="ts" module>
2+
import { type VariantProps, tv } from "tailwind-variants";
3+
4+
export const toggleVariants = tv({
5+
base: "hover:bg-muted hover:text-muted-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
6+
variants: {
7+
variant: {
8+
default: "bg-transparent",
9+
outline:
10+
"border-input shadow-xs hover:bg-accent hover:text-accent-foreground border bg-transparent",
11+
},
12+
size: {
13+
default: "h-9 min-w-9 px-2",
14+
sm: "h-8 min-w-8 px-1.5",
15+
lg: "h-10 min-w-10 px-2.5",
16+
},
17+
},
18+
defaultVariants: {
19+
variant: "default",
20+
size: "default",
21+
},
22+
});
23+
24+
export type ToggleVariant = VariantProps<typeof toggleVariants>["variant"];
25+
export type ToggleSize = VariantProps<typeof toggleVariants>["size"];
26+
export type ToggleVariants = VariantProps<typeof toggleVariants>;
27+
</script>
28+
29+
<script lang="ts">
30+
import { Toggle as TogglePrimitive } from "bits-ui";
31+
import { cn } from "$lib/utils.js";
32+
33+
let {
34+
ref = $bindable(null),
35+
pressed = $bindable(false),
36+
class: className,
37+
size = "default",
38+
variant = "default",
39+
...restProps
40+
}: TogglePrimitive.RootProps & {
41+
variant?: ToggleVariant;
42+
size?: ToggleSize;
43+
} = $props();
44+
</script>
45+
46+
<TogglePrimitive.Root
47+
bind:ref
48+
bind:pressed
49+
data-slot="toggle"
50+
class={cn(toggleVariants({ variant, size }), className)}
51+
{...restProps}
52+
/>

src/lib/types.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,12 @@ export type BranchCommit = {
118118
* The slug name for all the packages
119119
*/
120120
export const ALL_SLUG = "all";
121+
122+
/**
123+
* A package's local visibility settings
124+
*/
125+
export type PackageSettings = {
126+
showPrereleases: boolean;
127+
releasesType: Lowercase<(typeof releasesTypes)[number]>;
128+
};
129+
export const releasesTypes = ["All", "Major", "Minor", "Patch"] as const;

src/routes/+layout.svelte

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
onNavigate(({ complete }) => {
2626
if (!document.startViewTransition) return;
2727
28-
return new Promise(resolve => {
28+
return new Promise(resolve =>
2929
document.startViewTransition(async () => {
3030
resolve();
3131
await complete;
32-
});
33-
});
32+
})
33+
);
3434
});
3535
3636
// SEO
@@ -127,22 +127,22 @@
127127
alt="Svelte"
128128
class="size-8"
129129
/>
130-
{#if !page.route.id?.startsWith("/devlog")}
130+
{#if !page.route.id?.startsWith(resolve("/devlog"))}
131131
<span class="hidden text-xl font-semibold text-shadow-xs/10 xs:inline-block">
132132
<span class="font-display">Svelte</span>
133133
<span class="text-primary">Changelog</span>
134134
</span>
135135
{/if}
136136
</a>
137-
{#if page.route.id?.startsWith("/devlog")}
137+
{#if page.route.id?.startsWith(resolve("/devlog"))}
138138
<div class="mx-4 h-8 w-0.5 rotate-25 rounded-full bg-muted-foreground/40"></div>
139139
<span class="text-xl font-semibold">Blog</span>
140140
{/if}
141141

142142
<!-- Navigation -->
143-
{#if !page.route.id?.startsWith("/devlog")}
143+
{#if !page.route.id?.startsWith(resolve("/devlog"))}
144144
<ul class="ml-6 hidden sm:flex">
145-
{#each [{ link: "/packages", title: "Packages" }, { link: "/tracker", title: "Tracker" }, { link: "/devlog", title: "Devlog" }] as { link, title } (link)}
145+
{#each [{ link: resolve("/packages"), title: "Packages" }, { link: resolve("/tracker"), title: "Tracker" }, { link: resolve("/devlog"), title: "Devlog" }] as { link, title } (link)}
146146
{@const disabled = page.url.pathname.startsWith(link)}
147147
<li>
148148
<Button

src/routes/+page.server.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { redirect } from "@sveltejs/kit";
2+
import { resolve } from "$app/paths";
23

34
export async function load({ parent }) {
45
const { displayablePackages } = await parent();
56
const firstCategory = displayablePackages[0];
6-
if (!firstCategory) redirect(307, "/packages");
7+
if (!firstCategory) redirect(307, resolve("/packages"));
78
const firstPackage = firstCategory.packages[0];
8-
if (!firstPackage) redirect(307, "/packages");
9-
redirect(307, `/package/${firstPackage.pkg.name}`);
9+
if (!firstPackage) redirect(307, resolve("/packages"));
10+
redirect(307, resolve("/package/[...package]", { package: firstPackage.pkg.name }));
1011
}

0 commit comments

Comments
 (0)