diff --git a/repub/components.py b/repub/components.py index 035b74c..af9e631 100644 --- a/repub/components.py +++ b/repub/components.py @@ -391,13 +391,14 @@ def toggle_field( "data-class:bg-amber-500": f"${signal_name}", "data-class:bg-slate-200": f"!${signal_name}", }, - class_="group relative inline-flex w-11 shrink-0 rounded-full p-0.5 outline-offset-2 outline-amber-500 transition", + class_="group relative inline-flex w-11 shrink-0 rounded-full bg-slate-200 p-0.5 outline-offset-2 outline-amber-500 transition", )[ h.span( { "data-class:translate-x-5": f"${signal_name}", + "data-class:translate-x-0": f"!${signal_name}", }, - class_="size-5 rounded-full bg-white shadow-xs ring-1 ring-slate-900/5 transition-transform", + class_="size-5 translate-x-0 rounded-full bg-white shadow-xs ring-1 ring-slate-900/5 transition-transform", ), h.input( {"data-bind": signal_name}, diff --git a/repub/config.py b/repub/config.py index e9e86b3..e14e0d2 100644 --- a/repub/config.py +++ b/repub/config.py @@ -212,7 +212,6 @@ def build_feed_settings( "format": "rss", "postprocessing": [], "feed_name": feed_slug, - "overwrite": True, } }, "ITEM_PIPELINES": item_pipelines, diff --git a/repub/pages/settings.py b/repub/pages/settings.py index d2730c0..aa9bdbc 100644 --- a/repub/pages/settings.py +++ b/repub/pages/settings.py @@ -40,7 +40,7 @@ def settings_page( ), "data-on:submit": f"@post('{action_path}')", }, - class_="space-y-6", + class_="space-y-6 rounded-[1.5rem] bg-white p-6 shadow-sm ring-1 ring-slate-200", )[ h.div[ h.p( @@ -60,16 +60,16 @@ def settings_page( }, class_="rounded-2xl bg-rose-50 px-4 py-3 text-sm font-medium text-rose-800", ), - h.div(class_="rounded-[1.5rem] bg-stone-50 p-5")[ - input_field( - label="Max concurrent jobs", - field_id="max-concurrent-jobs", - value=_value(settings, "max_concurrent_jobs", "1"), - help_text="Must be an integer greater than or equal to 1.", - signal_name="maxConcurrentJobs", - ), - ], - h.div(class_="flex flex-wrap justify-end gap-3 pt-2")[ + input_field( + label="Max concurrent jobs", + field_id="max-concurrent-jobs", + value=_value(settings, "max_concurrent_jobs", "1"), + help_text="Must be an integer greater than or equal to 1.", + signal_name="maxConcurrentJobs", + ), + h.div( + class_="flex flex-wrap justify-end gap-3 border-t border-slate-200 pt-6" + )[ muted_action_link(href="/", label="Back to dashboard"), h.button( type="submit", diff --git a/repub/static/app.css b/repub/static/app.css index 9bb5f7e..0a0f270 100644 --- a/repub/static/app.css +++ b/repub/static/app.css @@ -1,4 +1,8 @@ /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */ +@view-transition { + navigation: auto; +} + @layer properties; @layer theme, base, components, utilities; @layer theme { @@ -9,6 +13,7 @@ monospace; --color-orange-100: oklch(95.4% 0.038 75.164); --color-amber-50: oklch(98.7% 0.022 95.277); + --color-amber-100: oklch(96.2% 0.059 95.617); --color-amber-200: oklch(92.4% 0.12 95.746); --color-amber-300: oklch(87.9% 0.169 91.605); --color-amber-400: oklch(82.8% 0.189 84.429); @@ -43,6 +48,7 @@ --color-white: #fff; --spacing: 0.25rem; --container-sm: 24rem; + --container-2xl: 42rem; --container-3xl: 48rem; --container-7xl: 80rem; --text-xs: 0.75rem; @@ -57,7 +63,6 @@ --text-xl--line-height: calc(1.75 / 1.25); --text-3xl: 1.875rem; --text-3xl--line-height: calc(2.25 / 1.875); - --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-black: 900; @@ -65,7 +70,6 @@ --radius-xl: 0.75rem; --radius-2xl: 1rem; --radius-3xl: 1.5rem; - --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; --default-transition-duration: 150ms; --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); --default-font-family: var(--font-sans); @@ -221,6 +225,9 @@ } } @layer utilities { + .visible { + visibility: visible; + } .sr-only { position: absolute; width: 1px; @@ -289,6 +296,9 @@ .mt-5 { margin-top: calc(var(--spacing) * 5); } + .mt-6 { + margin-top: calc(var(--spacing) * 6); + } .mt-10 { margin-top: calc(var(--spacing) * 10); } @@ -310,6 +320,9 @@ .hidden { display: none; } + .inline { + display: inline; + } .inline-flex { display: inline-flex; } @@ -324,12 +337,6 @@ width: calc(var(--spacing) * 11); height: calc(var(--spacing) * 11); } - .h-5 { - height: calc(var(--spacing) * 5); - } - .h-12 { - height: calc(var(--spacing) * 12); - } .h-40 { height: calc(var(--spacing) * 40); } @@ -342,12 +349,12 @@ .w-11 { width: calc(var(--spacing) * 11); } - .w-40 { - width: calc(var(--spacing) * 40); - } .w-full { width: 100%; } + .max-w-2xl { + max-width: var(--container-2xl); + } .max-w-3xl { max-width: var(--container-3xl); } @@ -369,9 +376,6 @@ .min-w-56 { min-width: calc(var(--spacing) * 56); } - .min-w-64 { - min-width: calc(var(--spacing) * 64); - } .min-w-\[70rem\] { min-width: 70rem; } @@ -384,13 +388,14 @@ .table-auto { table-layout: auto; } + .translate-x-0 { + --tw-translate-x: calc(var(--spacing) * 0); + translate: var(--tw-translate-x) var(--tw-translate-y); + } .translate-x-5 { --tw-translate-x: calc(var(--spacing) * 5); translate: var(--tw-translate-x) var(--tw-translate-y); } - .animate-pulse { - animation: var(--animate-pulse); - } .cursor-not-allowed { cursor: not-allowed; } @@ -519,12 +524,21 @@ .border-slate-200 { border-color: var(--color-slate-200); } + .border-white\/10 { + border-color: color-mix(in srgb, #fff 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + border-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } .border-white\/15 { border-color: color-mix(in srgb, #fff 15%, transparent); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-white) 15%, transparent); } } + .bg-amber-100 { + background-color: var(--color-amber-100); + } .bg-amber-200 { background-color: var(--color-amber-200); } @@ -631,9 +645,6 @@ .p-5 { padding: calc(var(--spacing) * 5); } - .p-6 { - padding: calc(var(--spacing) * 6); - } .px-2 { padding-inline: calc(var(--spacing) * 2); } @@ -676,9 +687,6 @@ .py-8 { padding-block: calc(var(--spacing) * 8); } - .pt-2 { - padding-top: calc(var(--spacing) * 2); - } .pt-6 { padding-top: calc(var(--spacing) * 6); } @@ -688,9 +696,6 @@ .pl-4 { padding-left: calc(var(--spacing) * 4); } - .text-center { - text-align: center; - } .text-left { text-align: left; } @@ -739,10 +744,6 @@ --tw-font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium); } - .font-normal { - --tw-font-weight: var(--font-weight-normal); - font-weight: var(--font-weight-normal); - } .font-semibold { --tw-font-weight: var(--font-weight-semibold); font-weight: var(--font-weight-semibold); @@ -778,6 +779,9 @@ .text-amber-700 { color: var(--color-amber-700); } + .text-amber-800 { + color: var(--color-amber-800); + } .text-amber-950 { color: var(--color-amber-950); } @@ -995,6 +999,12 @@ } } } + .data-class\:translate-x-0 { + &[data-class] { + --tw-translate-x: calc(var(--spacing) * 0); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + } .data-class\:translate-x-5 { &[data-class] { --tw-translate-x: calc(var(--spacing) * 5); @@ -1041,11 +1051,6 @@ padding-inline: calc(var(--spacing) * 5); } } - .sm\:px-6 { - @media (width >= 40rem) { - padding-inline: calc(var(--spacing) * 6); - } - } .sm\:pl-4 { @media (width >= 40rem) { padding-left: calc(var(--spacing) * 4); @@ -1357,11 +1362,6 @@ syntax: "*"; inherits: false; } -@keyframes pulse { - 50% { - opacity: 0.5; - } -} @layer properties { @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { *, ::before, ::after, ::backdrop { diff --git a/tests/test_config.py b/tests/test_config.py index cc59799..f7430ba 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -158,7 +158,6 @@ def test_build_feed_settings_derives_output_paths_from_feed_slug( "format": "rss", "postprocessing": [], "feed_name": "info-marti", - "overwrite": True, } }