UNPKG

@drop-in/new

Version:

A SvelteKit Svelte 5 PocketBase Starter Kit with a CLI

534 lines (478 loc) 9.88 kB
/* Typeography */ :root { --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; --min-vw: 360; --max-vw: 800; /* Deprecated - use --fs: 1 instead */ /* Fluid Type */ --fs-xxxs: clamp(0.45rem, 0.305882vi + 0.37rem, 0.58rem); --fs-xxs: clamp(0.56rem, 0.376471vi + 0.47rem, 0.72rem); --fs-xs: clamp(0.7rem, 0.470588vi + 0.58rem, 0.9rem); --fs-base: clamp(0.88rem, 0.588235vi + 0.73rem, 1.13rem); --fs-s: clamp(1.09rem, 0.752941vi + 0.9rem, 1.41rem); --fs-m: clamp(1.37rem, 0.917647vi + 1.14rem, 1.76rem); --fs-l: clamp(1.71rem, 1.152941vi + 1.42rem, 2.2rem); --fs-xl: clamp(2.14rem, 1.435294vi + 1.78rem, 2.75rem); --fs-xxl: clamp(2.67rem, 1.788235vi + 2.22rem, 3.43rem); --fs-xxxl: clamp(3.34rem, 2.235294vi + 2.78rem, 4.29rem); --fs-xxxxl: clamp(4.17rem, 2.8vi + 3.47rem, 5.36rem); /* END Deprecated Fluid Type */ --line-height: calc(2px + 2ex + 2px); /* Vertical Spacing */ --vs-s: 0.5rem; --vs-base: 1rem; --vs-m: 1.5rem; --vs-l: 2rem; /* Border Radius */ --rad-xs: 2px; --rad-s: 4px; --rad-m: 8px; --rad-l: 16px; /* Padding */ --pad-xs: 2px; --pad-s: 6px; --pad-m: 12px; --pad-l: 25px; /* Shadow */ --shadow-color: 0deg 0% 0%; --bs-s: 0.5px 0.8px 1.1px hsl(var(--shadow-color) / 0.3), 0.8px 1.3px 1.7px -1.2px hsl(var(--shadow-color) / 0.3), 1.9px 3.1px 4.1px -2.5px hsl(var(--shadow-color) / 0.3); --bs-m: 0.5px 0.8px 1.1px hsl(var(--shadow-color) / 0.32), 1.6px 2.6px 3.4px -0.8px hsl(var(--shadow-color) / 0.32), 3.9px 6.4px 8.4px -1.7px hsl(var(--shadow-color) / 0.32), 9.6px 15.5px 20.5px -2.5px hsl(var(--shadow-color) / 0.32); --bs-l: 0.5px 0.8px 1.1px hsl(var(--shadow-color) / 0.3), 2.7px 4.4px 5.8px -0.4px hsl(var(--shadow-color) / 0.3), 4.9px 8px 10.6px -0.7px hsl(var(--shadow-color) / 0.3), 8.1px 13.1px 17.3px -1.1px hsl(var(--shadow-color) / 0.3), 12.9px 20.9px 27.6px -1.4px hsl(var(--shadow-color) / 0.3), 20.1px 32.7px 43.2px -1.8px hsl(var(--shadow-color) / 0.3), 30.6px 49.7px 65.7px -2.1px hsl(var(--shadow-color) / 0.3), 45px 73.1px 96.6px -2.5px hsl(var(--shadow-color) / 0.3); /* Default Palette */ --yellow: #ffd817; --orange: #ff9e02; --red: #ff5a00; --pink: #ff0084; --teal: #a0dcc8; --blue: #0001fb; --fg: light-dark(#000, #fff); --bg: light-dark(#fff, #000); --tint-or-shade: color-mix(in oklab, var(--fg), transparent 95%); --tint-or-shade-harder: color-mix(in oklab, var(--fg), transparent 90%); /* Fluid Type */ --font-size-min: 16; --font-size-max: 20; --font-ratio-min: 1.25; --font-ratio-max: 1.25; --font-width-min: 320; --font-width-max: 1500; color-scheme: light dark; } html { box-sizing: border-box; } html, body, body > .body-fill { height: 100%; margin: 0; } body > .body-fill { display: flex; flex-direction: column; } main { flex: 1; } header, main, footer { width: 100%; } *, *::before, *::after { box-sizing: inherit; } body { font-family: var(--font-sans); line-height: 1.5; margin: 0; min-height: 100vh; } body, h1, h2, h3, h4, h5, h6, p, li, .fluid, textarea, input, select, button, th, td { --fluid-min: calc(var(--font-size-min) * pow(var(--font-ratio-min), var(--fl, 0))); --fluid-max: calc(var(--font-size-max) * pow(var(--font-ratio-max), var(--fl, 0))); --fluid-preferred: calc( (var(--fluid-max) - var(--fluid-min)) / (var(--font-width-max) - var(--font-width-min)) ); --fluid-type: clamp( (var(--fluid-min) / 16) * 1rem, ((var(--fluid-min) / 16) * 1rem) - (((var(--fluid-preferred) * var(--font-width-min)) / 16) * 1rem) + (var(--fluid-preferred) * var(--variable-unit, 100vi)), (var(--fluid-max) / 16) * 1rem ); font-size: var(--fluid-type); margin-block: 0 var(--vs-base); } /* This makes containers, with container queries use a cqi unit instead of vi */ /* FC Fluid Container */ .fluid-text-container, .fc { container-type: inline-size; --variable-unit: 100cqi; } h1, .h1 { margin-block: 0 var(--vs-base); --fl: 5; } h2, .h2 { --fl: 4; } h3, .h3 { --fl: 3; } h4, .h4 { --fl: 2; } h5, .h5 { --fl: 1; } h6, .h6 { --fl: 0; } p, li, body, input, textarea, select { --fl: 0; } .fs-xs { --fl: -1; } .fs-base { --fl: 0; } .fs-s { --fl: 1; } .fs-m { --fl: 2; } .fs-l { --fl: 3; } .fs-xl { --fl: 4; } .fs-xxl { --fl: 5; } .fs-xxxl { --fl: 6; } img, picture, video, canvas, svg { display: block; max-width: 100%; } input, button, textarea, select { font: inherit; margin: 0; } button, .button { cursor: pointer; background: var(--bg); color: var(--fg); border: solid 1px var(--tint-or-shade); border-radius: var(--rad-s); padding: var(--pad-s) var(--pad-l); } /* UTILITIES */ .readable { max-width: 900px; width: 100%; } .flex { display: flex; gap: 10px; } .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); grid-gap: 20px; } .visually-hidden { position: absolute; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; border: 0px; } .no-list { list-style: none; margin: 0; padding: 0; li { margin: 0; padding: 0; } } .row { margin-block: var(--vs-l); } /* END UTILITIES */ /* LAYOUT */ .layout { display: grid; align-content: start; grid-template-rows: auto; --max-col-size: 100px; --min-col-size: 50px; --gcs: 12; --gg: 2.5; --gc: minmax(var(--min-col-size), var(--max-col-size)); --g-boundary: minmax(calc(var(--gg) * 1%), 1fr); --g-gutter-width: calc(var(--gg) * 1%); grid-template-columns: [start gutter] var(--g-boundary) [content] repeat(calc(var(--gcs) - 1), [col-start] var(--gc) [col-end gutter] var(--g-gutter-width)) [last-col-start col-start] var(--gc) [col-end content-end gutter] var(--g-boundary) [end]; @media (width < 1000px) { --gcs: 8; } @media (width < 500px) { --gcs: 4; } } .layout > * { grid-column: content / content-end; } .layout .sub { grid-template-columns: subgrid; display: grid; } .layout .col { grid-column: col-start round(down, mod(calc(var(--start) - 1), var(--gcs)) + 1) / span var(--span, 'end'); } /* Sidebar class (1/4 width) */ .layout .sidebar { @media (width < 700px) { grid-column: content / span 3; } @media (width < 500px) { grid-column: content / content-end; } grid-column: content / span 3; } /* Main content area class */ .layout .main { grid-column: col-start 3 / content-end; @media (width < 500px) { grid-column: content / content-end; } } /* Sidebar class (1/4 width) */ .layout .invert-sidebar { @media (width < 1000px) { --start: 7; --span: 3; } @media (width < 500px) { grid-column: content / content-end; } --start: 10; --span: 5; } /* TODO this is being overridden by specificity */ /* Main content area class */ .layout .invert-main { @media (width < 1000px) { grid-column: col-start / span 11; } @media (width < 500px) { grid-column: content / content-end; } grid-column: col-start / span 17; } .layout .full { width: 100%; grid-column: start / end; } .c-full { --start: 1; --span: calc((var(--gcs) * 2 - 1)); } .c-quarter { --start: 1; /* Always starts at column 2 */ --span: calc((var(--gcs) / 2) - 1); /* Half of the total columns, excluding the first gutter */ } .c-quarter:nth-child(2 of .c-quarter) { --start: calc((var(--gcs) / 4) + 1); } .c-quarter:nth-child(3 of .c-quarter) { --start: calc((var(--gcs) / 4) * 2 + 1); } .c-quarter:nth-child(4 of .c-quarter) { --start: calc(((var(--gcs) / 4) * 3) + 1); } .c-half { --start: 1; --span: calc((var(--gcs) - 1)); /* Half of the total columns, excluding the first gutter */ } .c-half:nth-child(2 of .c-half) { --start: calc( (var(--gcs) / 2) + 1 ); /* Starts after the first .c-half including its span and the gutter */ } :where(h1, h2, h3, h4, h5, h6) { view-transition-name: var(--transition-name); } /* END LAYOUT */ /* @drop-in/decks Specific Styles */ /* Accordion */ .di-accordion { margin-block: 0 var(--vs-base); summary { font-size: var(--base); padding: 2rem 1rem; border-block-end: solid 1px var(--tint-or-shade); } border-block-end: solid 1px var(--tint-or-shade); } /* Share */ .di-dialog { border-radius: var(--rad-m); max-width: 60ch; border: none; padding: var(--pad-m); position: relative; box-shadow: var(--bs-l); &::backdrop { background-color: rgb(0 0 0 / 0.5); backdrop-filter: blur(5px); } > *:first-child { margin-top: 0; } .share-window { display: flex; align-items: center; } a { text-decoration: none; } } .di-drawer { border: none; border-radius: var(--rad-m); padding: var(--pad-m); box-shadow: var(--bs-l); &::backdrop { background-color: rgb(0 0 0 / 0.5); backdrop-filter: blur(5px); } } .di-drawer-close-button { position: absolute; top: 10px; right: 10px; } .di-dialog-close { position: absolute; border: none; right: 10px; top: 10px; line-height: var(--fs-s); font-size: var(--fs-s); cursor: pointer; } /* Menu */ .di-menu { background: var(--bg); box-shadow: var(--bs-m); border-radius: var(--rad-m); padding: var(--pad-s); flex-direction: column; border: solid 1px var(--tint); width: 150px; z-index: 10; .di-menu-inner { gap: 10px; display: flex; flex-direction: column; } button, a { line-height: 1; background: transparent; color: var(--fg); gap: 10px; padding: var(--pad-s); align-items: center; border-radius: var(--rad-s); border: none; width: 100%; display: flex; &:hover, &:active { background: var(--tint-or-shade); } } } .di-toast-slice { background: var(--bg); box-shadow: var(--bs-m); border-radius: var(--rad-s); padding: var(--pad-m) var(--pad-l); flex-direction: column; border: solid 1px var(--tint); z-index: 10; overflow: hidden; position: relative; .progress { --info: var(--blue); --success: var(--green); --warning: var(--yellow); --error: var(--red); } }