diff --git a/daemon/web/src/lib/components/ManifestTable.svelte b/daemon/web/src/lib/components/ManifestTable.svelte index b9c47c3..b8c93f6 100644 --- a/daemon/web/src/lib/components/ManifestTable.svelte +++ b/daemon/web/src/lib/components/ManifestTable.svelte @@ -1,6 +1,7 @@ - - - - - - - - - - - - - - {#each entries as entry, i} - +{#if $screenIsLgUp} + + + + + + + + + + + + + + {#each entries as entry, i} + + {/each} + +
IDStartedLast MessageSizeDownloadAnalysis
+{:else} + +
+ {#each entries as entry} + {/each} - - - -
- {#each entries as entry} - - {/each} -
+
+{/if} diff --git a/daemon/web/src/lib/stores/breakpoint.ts b/daemon/web/src/lib/stores/breakpoint.ts new file mode 100644 index 0000000..288f6b7 --- /dev/null +++ b/daemon/web/src/lib/stores/breakpoint.ts @@ -0,0 +1,29 @@ +// stores/breakpoint.ts +import { readable, type Readable } from 'svelte/store'; +import { breakpoints } from '../../theme'; + +type Breakpoint = keyof typeof breakpoints; + +// Store that tracks if a specific breakpoint matches +export function createBreakpointStore(breakpoint: Breakpoint): Readable { + return readable(false, (set) => { + const width = breakpoints[breakpoint]; + const mediaQuery = window.matchMedia(`(min-width: ${width})`); + + // Set initial value + set(mediaQuery.matches); + + // Update on change + const handler = (e: MediaQueryListEvent) => set(e.matches); + mediaQuery.addEventListener('change', handler); + + // Cleanup + return () => mediaQuery.removeEventListener('change', handler); + }); +} + +// Create stores for each breakpoint +export const screenIsSmUp: Readable = createBreakpointStore('sm'); +export const screenIsMdUp: Readable = createBreakpointStore('md'); +export const screenIsLgUp: Readable = createBreakpointStore('lg'); +export const screenIsXlUp: Readable = createBreakpointStore('xl'); diff --git a/daemon/web/src/theme.ts b/daemon/web/src/theme.ts new file mode 100644 index 0000000..a6258dc --- /dev/null +++ b/daemon/web/src/theme.ts @@ -0,0 +1,11 @@ +/** These are the default Tailwind CSS breakpoints. + * We're defining them here so they can be referenced + * programmatically in other parts of the application. + */ +export const breakpoints = { + sm: '640px', + md: '768px', + lg: '1024px', + xl: '1280px', + '2xl': '1536px', +} as const; diff --git a/daemon/web/tailwind.config.ts b/daemon/web/tailwind.config.ts index d9bf9e9..7773cb2 100644 --- a/daemon/web/tailwind.config.ts +++ b/daemon/web/tailwind.config.ts @@ -1,4 +1,5 @@ import type { Config } from 'tailwindcss'; +import { breakpoints } from './src/theme'; export default { content: ['./src/**/*.{html,js,svelte,ts}'], @@ -10,6 +11,7 @@ export default { 'rayhunter-dark-blue': '#3f3da0', 'rayhunter-green': '#94ea18', }, + screens: breakpoints, }, },