diff --git a/src/client/public/css/tailwind.css b/src/client/public/css/tailwind.css index e3aeeae..66d4cb1 100644 --- a/src/client/public/css/tailwind.css +++ b/src/client/public/css/tailwind.css @@ -799,6 +799,10 @@ select { pointer-events: none; } +.pointer-events-auto { + pointer-events: auto; +} + .invisible { visibility: hidden; } @@ -849,6 +853,10 @@ select { inset-inline-end: 0px; } +.end-3 { + inset-inline-end: 0.75rem; +} + .start-0 { inset-inline-start: 0px; } @@ -857,6 +865,10 @@ select { top: 0px; } +.top-1\/2 { + top: 50%; +} + .top-full { top: 100%; } @@ -877,10 +889,22 @@ select { z-index: 60; } +.z-\[80\] { + z-index: 80; +} + .-m-1\.5 { margin: -0.375rem; } +.m-3 { + margin: 0.75rem; +} + +.m-4 { + margin: 1rem; +} + .mx-1 { margin-left: 0.25rem; margin-right: 0.25rem; @@ -906,6 +930,10 @@ select { margin-bottom: 0.5rem; } +.\!mb-0 { + margin-bottom: 0px !important; +} + .\!me-1 { margin-inline-end: 0.25rem !important; } @@ -1094,6 +1122,11 @@ select { height: 60px; } +.size-full { + width: 100%; + height: 100%; +} + .size-px { width: 1px; height: 1px; @@ -1107,6 +1140,10 @@ select { height: 0.5rem; } +.h-7 { + height: 1.75rem; +} + .h-\[32px\] { height: 32px; } @@ -1123,6 +1160,10 @@ select { height: 100vh; } +.max-h-72 { + max-height: 18rem; +} + .max-h-full { max-height: 100%; } @@ -1131,6 +1172,10 @@ select { min-height: 400px; } +.min-h-\[calc\(100\%-3\.5rem\)\] { + min-height: calc(100% - 3.5rem); +} + .\!w-2\.5 { width: 0.625rem !important; } @@ -1159,6 +1204,10 @@ select { width: 26rem; } +.w-\[3\.25rem\] { + width: 3.25rem; +} + .w-\[calc\(100\%-2rem\)\] { width: calc(100% - 2rem); } @@ -1179,10 +1228,6 @@ select { min-width: 100%; } -.max-w-\[100rem\] { - max-width: 100rem; -} - .max-w-\[300px\] { max-width: 300px; } @@ -1224,6 +1269,17 @@ select { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.-translate-y-1\/2 { + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.scale-95 { + --tw-scale-x: .95; + --tw-scale-y: .95; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + .transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } @@ -1262,6 +1318,10 @@ select { flex-wrap: nowrap; } +.items-start { + align-items: flex-start; +} + .items-center { align-items: center; } @@ -1382,6 +1442,10 @@ select { overflow-y: auto; } +.overflow-x-hidden { + overflow-x: hidden; +} + .truncate { overflow: hidden; text-overflow: ellipsis; @@ -1579,6 +1643,10 @@ select { padding: 1.5rem; } +.p-px { + padding: 1px; +} + .\!py-0\.5 { padding-top: 0.125rem !important; padding-bottom: 0.125rem !important; @@ -1863,6 +1931,10 @@ select { color: rgb(17 94 89 / var(--tw-text-opacity, 1)); } +.text-transparent { + color: transparent; +} + .text-white { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); @@ -1935,12 +2007,22 @@ select { transition-duration: 150ms; } +.transition-colors { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + .transition-opacity { transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } +.duration-200 { + transition-duration: 200ms; +} + .duration-300 { transition-duration: 300ms; } @@ -1949,6 +2031,10 @@ select { transition-duration: 500ms; } +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + .\[--auto-close\:inside\] { --auto-close: inside; } @@ -2283,6 +2369,17 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te inset-inline-start: 0px; } +.before\:inline-block::before { + content: var(--tw-content); + display: inline-block; +} + +.before\:size-6::before { + content: var(--tw-content); + width: 1.5rem; + height: 1.5rem; +} + .before\:h-4::before { content: var(--tw-content); height: 1rem; @@ -2293,6 +2390,61 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te width: 100%; } +.before\:translate-x-0::before { + content: var(--tw-content); + --tw-translate-x: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.before\:transform::before { + content: var(--tw-content); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.before\:rounded-full::before { + content: var(--tw-content); + border-radius: 9999px; +} + +.before\:bg-white::before { + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} + +.before\:shadow::before { + content: var(--tw-content); + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.before\:ring-0::before { + content: var(--tw-content); + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.before\:transition::before { + content: var(--tw-content); + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.before\:duration-200::before { + content: var(--tw-content); + transition-duration: 200ms; +} + +.before\:ease-in-out::before { + content: var(--tw-content); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + .after\:absolute::after { content: var(--tw-content); position: absolute; @@ -2318,6 +2470,32 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te width: 100%; } +.checked\:border-blue-600:checked { + --tw-border-opacity: 1; + border-color: rgb(37 99 235 / var(--tw-border-opacity, 1)); +} + +.checked\:bg-none:checked { + background-image: none; +} + +.checked\:text-blue-600:checked { + --tw-text-opacity: 1; + color: rgb(37 99 235 / var(--tw-text-opacity, 1)); +} + +.checked\:before\:translate-x-full:checked::before { + content: var(--tw-content); + --tw-translate-x: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.checked\:before\:bg-blue-200:checked::before { + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(191 219 254 / var(--tw-bg-opacity, 1)); +} + .hover\:bg-blue-700:hover { --tw-bg-opacity: 1; background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1)); @@ -2328,6 +2506,11 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); } +.hover\:bg-gray-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} + .hover\:bg-gray-50:hover { --tw-bg-opacity: 1; background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); @@ -2363,6 +2546,11 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); } +.focus\:bg-gray-200:focus { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} + .focus\:bg-gray-50:focus { --tw-bg-opacity: 1; background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); @@ -2387,11 +2575,27 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te outline-offset: 2px; } +.focus\:ring-2:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + .focus\:ring-blue-500:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1)); } +.focus\:ring-blue-600:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1)); +} + +.focus\:checked\:border-blue-600:checked:focus { + --tw-border-opacity: 1; + border-color: rgb(37 99 235 / var(--tw-border-opacity, 1)); +} + .disabled\:pointer-events-none:disabled { pointer-events: none; } @@ -2545,11 +2749,55 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.open.hs-overlay-open\:scale-100 { + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.open.hs-overlay-open\:opacity-100 { + opacity: 1; +} + .open .hs-overlay-open\:translate-x-0 { --tw-translate-x: 0px; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.open .hs-overlay-open\:scale-100 { + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.open .hs-overlay-open\:opacity-100 { + opacity: 1; +} + +.selected.hs-selected\:block { + display: block; +} + +.selected .hs-selected\:block { + display: block; +} + +.disabled.hs-select-disabled\:pointer-events-none { + pointer-events: none; +} + +.disabled.hs-select-disabled\:opacity-50 { + opacity: 0.5; +} + +.disabled .hs-select-disabled\:pointer-events-none { + pointer-events: none; +} + +.disabled .hs-select-disabled\:opacity-50 { + opacity: 0.5; +} + .selected .hs-combo-box-selected\:block { display: block; } @@ -2605,6 +2853,10 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te grid-column: span 2 / span 2; } + .sm\:m-6 { + margin: 1.5rem; + } + .sm\:block { display: block; } @@ -2613,14 +2865,6 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te display: inline; } - .sm\:flex { - display: flex; - } - - .sm\:hidden { - display: none; - } - .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } @@ -2629,18 +2873,6 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te flex-direction: row; } - .sm\:items-center { - align-items: center; - } - - .sm\:justify-end { - justify-content: flex-end; - } - - .sm\:justify-between { - justify-content: space-between; - } - .sm\:gap-6 { gap: 1.5rem; } @@ -2650,15 +2882,6 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te column-gap: 0.75rem; } - .sm\:gap-x-6 { - -moz-column-gap: 1.5rem; - column-gap: 1.5rem; - } - - .sm\:gap-y-0 { - row-gap: 0px; - } - .sm\:space-y-6 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); @@ -2678,11 +2901,6 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te padding-right: 1.5rem; } - .sm\:py-0 { - padding-top: 0px; - padding-bottom: 0px; - } - .sm\:py-5 { padding-top: 1.25rem; padding-bottom: 1.25rem; @@ -2695,26 +2913,55 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te } @media (min-width: 768px) { + .md\:mx-auto { + margin-left: auto; + margin-right: auto; + } + .md\:block { display: block; } + .md\:flex { + display: flex; + } + .md\:hidden { display: none; } + .md\:w-full { + width: 100%; + } + + .md\:max-w-2xl { + max-width: 42rem; + } + .md\:grow { flex-grow: 1; } + .md\:flex-row { + flex-direction: row; + } + .md\:flex-nowrap { flex-wrap: nowrap; } + .md\:items-center { + align-items: center; + } + .md\:justify-start { justify-content: flex-start; } + .md\:justify-end { + justify-content: flex-end; + } + .md\:justify-between { justify-content: space-between; } @@ -2724,9 +2971,27 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te column-gap: 0.75rem; } + .md\:gap-x-6 { + -moz-column-gap: 1.5rem; + column-gap: 1.5rem; + } + + .md\:gap-y-0 { + row-gap: 0px; + } + .md\:p-5 { padding: 1.25rem; } + + .md\:p-6 { + padding: 1.5rem; + } + + .md\:py-0 { + padding-top: 0px; + padding-bottom: 0px; + } } @media (min-width: 1024px) { @@ -2926,6 +3191,11 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te color: rgb(115 115 115 / var(--tw-placeholder-opacity, 1)); } +.dark\:shadow-neutral-700\/70:where(.dark, .dark *) { + --tw-shadow-color: rgb(64 64 64 / 0.7); + --tw-shadow: var(--tw-shadow-colored); +} + .dark\:placeholder\:text-neutral-400:where(.dark, .dark *)::-moz-placeholder { --tw-text-opacity: 1; color: rgb(163 163 163 / var(--tw-text-opacity, 1)); @@ -2936,6 +3206,12 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te color: rgb(163 163 163 / var(--tw-text-opacity, 1)); } +.dark\:before\:bg-neutral-400:where(.dark, .dark *)::before { + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(163 163 163 / var(--tw-bg-opacity, 1)); +} + .dark\:checked\:border-blue-500:checked:where(.dark, .dark *) { --tw-border-opacity: 1; border-color: rgb(59 130 246 / var(--tw-border-opacity, 1)); @@ -2946,6 +3222,17 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1)); } +.dark\:checked\:before\:bg-blue-200:checked:where(.dark, .dark *)::before { + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(191 219 254 / var(--tw-bg-opacity, 1)); +} + +.dark\:hover\:bg-neutral-600:hover:where(.dark, .dark *) { + --tw-bg-opacity: 1; + background-color: rgb(82 82 82 / var(--tw-bg-opacity, 1)); +} + .dark\:hover\:bg-neutral-700:hover:where(.dark, .dark *) { --tw-bg-opacity: 1; background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1)); @@ -2976,6 +3263,11 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te color: rgb(115 115 115 / var(--tw-text-opacity, 1)); } +.dark\:focus\:bg-neutral-600:focus:where(.dark, .dark *) { + --tw-bg-opacity: 1; + background-color: rgb(82 82 82 / var(--tw-bg-opacity, 1)); +} + .dark\:focus\:bg-neutral-700:focus:where(.dark, .dark *) { --tw-bg-opacity: 1; background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1)); @@ -3001,11 +3293,26 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te color: rgb(115 115 115 / var(--tw-text-opacity, 1)); } +.dark\:focus\:outline-none:focus:where(.dark, .dark *) { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.dark\:focus\:ring-1:focus:where(.dark, .dark *) { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + .dark\:focus\:ring-neutral-600:focus:where(.dark, .dark *) { --tw-ring-opacity: 1; --tw-ring-color: rgb(82 82 82 / var(--tw-ring-opacity, 1)); } +.dark\:focus\:ring-offset-gray-600:focus:where(.dark, .dark *) { + --tw-ring-offset-color: #4b5563; +} + .dark\:focus\:ring-offset-gray-800:focus:where(.dark, .dark *) { --tw-ring-offset-color: #1f2937; } diff --git a/src/client/public/js/guild/subscriptions.js b/src/client/public/js/guild/subscriptions.js index e97cc80..8f2526a 100644 --- a/src/client/public/js/guild/subscriptions.js +++ b/src/client/public/js/guild/subscriptions.js @@ -23,11 +23,21 @@ // console.log("Table redrawn") // }); +const formatTimestamp = timestamp => { + const d = new Date(timestamp.replace(" ", "T")); + const now = new Date(); + + // If younger than a year, show time + // otherwise show the year + return now - d < 31536000000 + ? `${d.getDate()} ${d.toLocaleString("en-GB", { month: "short" })}, ${d.getHours().toString().padStart(2, "0")}:${d.getMinutes().toString().padStart(2, "0")}` + : `${d.getDate()} ${d.toLocaleString("en-GB", { month: "short" })}, ${d.getFullYear()}`; +} const defineTable = () => { new HSDataTable("#table", { ajax: { - url: `/guild/${guild}/subscriptions/api`, + url: `/guild/${guild}/subscriptions/api/datatable`, dataSrc: "data" }, serverSide: true, @@ -108,7 +118,7 @@ const defineTable = () => { render: (data, type, row) => { return ` - + ${row.url} @@ -157,13 +167,12 @@ const defineTable = () => { data: "created_at", orderable: true, searchable: true, - render: (data, type, row) => { - // 30th, Jan 2025 + render: data => { return `
- ${row.created_at} + ${formatTimestamp(data)}
diff --git a/src/client/views/guild/guildHeader.ejs b/src/client/views/guild/guildHeader.ejs index 9421840..e131074 100644 --- a/src/client/views/guild/guildHeader.ejs +++ b/src/client/views/guild/guildHeader.ejs @@ -1,5 +1,5 @@ -