diff --git a/README.md b/README.md index c65f4bf..c864c0b 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ You can provide fewer values; missing values will be padded by repeating the las Example (Blue Palette): ```md -![](https://leetcard.jacoblin.cool/jacoblincool?colors=012a4a,013a63,a9d6e5,ffffff,0077b6,0096c7,00b4d8,90e0ef) +![](https://leetcard.jacoblin.cool/JacobLinCool?theme=light&font=Noto%20Serif%20Kannada&colors=%231e1e2e%2C%2345475a%2C%23cdd6f4%2C%23bac2de%2C%23fab387%2C%23a6e3a1%2C%23f9e2af%2C%23f38ba8) ``` When both `theme` and `colors` are provided, `colors` takes precedence. diff --git a/packages/cloudflare-worker/src/demo/demo.html b/packages/cloudflare-worker/src/demo/demo.html index 4aacfb3..7e8aa4a 100644 --- a/packages/cloudflare-worker/src/demo/demo.html +++ b/packages/cloudflare-worker/src/demo/demo.html @@ -36,8 +36,90 @@

LeetCode Stats Card

- - + + +
+
+ +
+
+ bg0 + +
+
+ bg1 + +
+
+ text0 + +
+
+ text1 + +
+
+ color0 + +
+
+ color1 + +
+
+ color2 + +
+
+ color3 + +
+
@@ -283,6 +365,102 @@

LeetCode Stats Card

text-decoration: underline; } + .colors-grid { + display: grid; + grid-template-columns: repeat(8, minmax(0, 1fr)); + gap: 0.5rem; + } + + .color-field { + display: flex; + flex-direction: column; + align-items: flex-start; + font-size: 12px; + gap: 0.25rem; + } + + .color-field span { + opacity: 0.8; + } + + .color-field input[type="color"] { + width: 100%; + aspect-ratio: 1 / 1; + border: none; + border-radius: 8px; + cursor: pointer; + background: none; + padding: 0; + appearance: none; + } + + .toggle-switch { + position: relative; + display: inline-flex; + align-items: center; + gap: 0.5rem; + cursor: pointer; + user-select: none; + } + + .toggle-switch input { + display: none; + } + + .toggle-slider { + position: relative; + width: 42px; + height: 22px; + background: var(--border-color); + border-radius: 999px; + transition: background-color 0.2s; + } + + .toggle-slider::before { + content: ""; + position: absolute; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + border-radius: 50%; + background: var(--card-bg); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + transition: transform 0.2s; + } + + .toggle-switch input:checked + .toggle-slider { + background: var(--accent-color); + } + + .toggle-switch input:checked + .toggle-slider::before { + transform: translateX(20px); + } + + .toggle-text { + font-size: 0.75rem; + opacity: 0.6; + } + + .toggle-switch input:not(:checked) ~ .toggle-text-off { + opacity: 1; + font-weight: 600; + } + + .toggle-switch input:checked ~ .toggle-text-on { + opacity: 1; + font-weight: 600; + } + + .color-input:disabled { + opacity: 0; + cursor: not-allowed; + } + + .color-field.disabled span { + opacity: 0; + } + @media (max-width: 600px) { body { padding: 0.5rem; @@ -362,13 +540,30 @@

LeetCode Stats Card

font-size: 0.9rem; margin: 1rem 0; } + + .colors-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } }