@pollinations/ui 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +219 -0
- package/dist/Button-CNzpisJf.d.cts +26 -0
- package/dist/Button-DMJ2K6Gr.d.ts +26 -0
- package/dist/Chip-BS8ronOu.d.ts +20 -0
- package/dist/Chip-DyqWrq0r.d.cts +20 -0
- package/dist/app.css +87 -0
- package/dist/assets/logo-wordmark.svg +1 -0
- package/dist/assets/logo.svg +4 -0
- package/dist/auth/index.cjs +225 -0
- package/dist/auth/index.cjs.map +1 -0
- package/dist/auth/index.d.cts +28 -0
- package/dist/auth/index.d.ts +28 -0
- package/dist/auth/index.js +194 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/sdk.cjs +220 -0
- package/dist/auth/sdk.cjs.map +1 -0
- package/dist/auth/sdk.d.cts +53 -0
- package/dist/auth/sdk.d.ts +53 -0
- package/dist/auth/sdk.js +187 -0
- package/dist/auth/sdk.js.map +1 -0
- package/dist/fonts/fraunces-soft-bold.woff2 +0 -0
- package/dist/fonts/lct-mogi-a.woff2 +0 -0
- package/dist/fonts/uncut-sans-variable.woff2 +0 -0
- package/dist/index.cjs +1771 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +340 -0
- package/dist/index.d.ts +340 -0
- package/dist/index.js +1706 -0
- package/dist/index.js.map +1 -0
- package/dist/licenses/Fraunces-OFL.txt +93 -0
- package/dist/licenses/LCT-Mogi-OFL.txt +93 -0
- package/dist/licenses/UncutSans-OFL.txt +94 -0
- package/dist/modality/index.cjs +115 -0
- package/dist/modality/index.cjs.map +1 -0
- package/dist/modality/index.d.cts +45 -0
- package/dist/modality/index.d.ts +45 -0
- package/dist/modality/index.js +87 -0
- package/dist/modality/index.js.map +1 -0
- package/dist/showcase/index.cjs +2851 -0
- package/dist/showcase/index.cjs.map +1 -0
- package/dist/showcase/index.d.cts +19 -0
- package/dist/showcase/index.d.ts +19 -0
- package/dist/showcase/index.js +2839 -0
- package/dist/showcase/index.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/theme-DfHMjWB7.d.cts +16 -0
- package/dist/theme-DfHMjWB7.d.ts +16 -0
- package/dist/wallet/index.cjs +190 -0
- package/dist/wallet/index.cjs.map +1 -0
- package/dist/wallet/index.d.cts +30 -0
- package/dist/wallet/index.d.ts +30 -0
- package/dist/wallet/index.js +157 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/sdk.cjs +203 -0
- package/dist/wallet/sdk.cjs.map +1 -0
- package/dist/wallet/sdk.d.cts +33 -0
- package/dist/wallet/sdk.d.ts +33 -0
- package/dist/wallet/sdk.js +172 -0
- package/dist/wallet/sdk.js.map +1 -0
- package/dist/wallet.css +73 -0
- package/package.json +105 -0
package/dist/styles.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@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{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--polli-font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--polli-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--polli-color-red-400:oklch(70.4% .191 22.216);--polli-color-amber-100:oklch(96.2% .059 95.617);--polli-color-amber-200:oklch(92.4% .12 95.746);--polli-color-amber-800:oklch(47.3% .137 46.201);--polli-color-amber-900:oklch(41.4% .112 45.904);--polli-color-green-100:oklch(96.2% .044 156.743);--polli-color-green-200:oklch(92.5% .084 155.995);--polli-color-green-700:oklch(52.7% .154 150.069);--polli-color-green-800:oklch(44.8% .119 151.328);--polli-color-green-900:oklch(39.3% .095 152.535);--polli-color-green-950:oklch(26.6% .065 152.934);--polli-color-emerald-100:oklch(95% .052 163.051);--polli-color-teal-100:oklch(95.3% .051 180.801);--polli-color-teal-200:oklch(91% .096 180.426);--polli-color-teal-800:oklch(43.7% .078 188.216);--polli-color-teal-900:oklch(38.6% .063 188.416);--polli-color-blue-100:oklch(93.2% .032 255.585);--polli-color-blue-200:oklch(88.2% .059 254.128);--polli-color-blue-800:oklch(42.4% .199 265.638);--polli-color-blue-900:oklch(37.9% .146 265.522);--polli-color-violet-100:oklch(94.3% .029 294.588);--polli-color-violet-200:oklch(89.4% .057 293.283);--polli-color-violet-800:oklch(43.2% .232 292.759);--polli-color-violet-900:oklch(38% .189 293.745);--polli-color-pink-100:oklch(94.8% .028 342.258);--polli-color-pink-200:oklch(89.9% .061 343.231);--polli-color-pink-800:oklch(45.9% .187 3.815);--polli-color-pink-900:oklch(40.8% .153 2.432);--polli-color-gray-100:oklch(96.7% .003 264.542);--polli-color-gray-200:oklch(92.8% .006 264.531);--polli-color-gray-300:oklch(87.2% .01 258.338);--polli-color-gray-400:oklch(70.7% .022 261.325);--polli-color-gray-600:oklch(44.6% .03 256.802);--polli-color-gray-700:oklch(37.3% .034 259.733);--polli-color-gray-900:oklch(21% .034 264.665);--polli-color-gray-950:oklch(13% .028 261.692);--polli-color-white:#fff;--polli-spacing:.25rem;--polli-container-md:28rem;--polli-container-xl:36rem;--polli-container-2xl:42rem;--polli-container-3xl:48rem;--polli-text-xs:.75rem;--polli-text-xs--line-height:calc(1 / .75);--polli-text-sm:.875rem;--polli-text-sm--line-height:calc(1.25 / .875);--polli-text-base:16px;--polli-text-base--line-height:calc(1.5 / 1);--polli-text-xl:1.25rem;--polli-text-xl--line-height:calc(1.75 / 1.25);--polli-text-2xl:1.5rem;--polli-text-2xl--line-height:calc(2 / 1.5);--polli-text-3xl:1.875rem;--polli-text-3xl--line-height:calc(2.25 / 1.875);--polli-text-4xl:2.25rem;--polli-text-4xl--line-height:calc(2.5 / 2.25);--polli-font-weight-medium:500;--polli-font-weight-semibold:600;--polli-font-weight-bold:700;--polli-font-weight-black:900;--polli-tracking-tight:-.025em;--polli-tracking-wide:.025em;--polli-leading-tight:1.25;--polli-leading-normal:1.5;--polli-radius-md:.375rem;--polli-radius-lg:.5rem;--polli-radius-xl:.75rem;--polli-radius-2xl:1rem;--polli-ease-out:cubic-bezier(0, 0, .2, 1);--polli-default-transition-duration:.15s;--polli-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--polli-font-heading:"LCT Mogi", ui-sans-serif, sans-serif;--polli-font-subheading:"Fraunces", ui-serif, serif;--polli-font-body:"Uncut Sans", ui-sans-serif, sans-serif;--polli-font-pixel:"Pixelify Sans", ui-monospace, monospace;--polli-text-micro:10px;--polli-color-surface-white:var(--polli-color-surface-white)}}@layer base,components;@layer utilities{.polli\:pointer-events-none{pointer-events:none}.polli\:invisible{visibility:hidden}.polli\:visible{visibility:visible}.polli\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.polli\:absolute{position:absolute}.polli\:fixed{position:fixed}.polli\:relative{position:relative}.polli\:sticky{position:sticky}.polli\:inset-0{inset:calc(var(--polli-spacing) * 0)}.polli\:-top-8{top:calc(var(--polli-spacing) * -8)}.polli\:top-0{top:calc(var(--polli-spacing) * 0)}.polli\:left-1\/2{left:50%}.polli\:z-20{z-index:20}.polli\:z-50{z-index:50}.polli\:z-\[100\]{z-index:100}.polli\:z-\[110\]{z-index:110}.polli\:col-span-full{grid-column:1/-1}.polli\:mx-auto{margin-inline:auto}.polli\:my-auto{margin-block:auto}.polli\:mt-1{margin-top:calc(var(--polli-spacing) * 1)}.polli\:mt-1\.5{margin-top:calc(var(--polli-spacing) * 1.5)}.polli\:mt-2{margin-top:calc(var(--polli-spacing) * 2)}.polli\:mt-5{margin-top:calc(var(--polli-spacing) * 5)}.polli\:mb-1{margin-bottom:calc(var(--polli-spacing) * 1)}.polli\:mb-2{margin-bottom:calc(var(--polli-spacing) * 2)}.polli\:mb-3{margin-bottom:calc(var(--polli-spacing) * 3)}.polli\:ml-1{margin-left:calc(var(--polli-spacing) * 1)}.polli\:box-border{box-sizing:border-box}.polli\:block{display:block}.polli\:contents{display:contents}.polli\:flex{display:flex}.polli\:grid{display:grid}.polli\:inline-block{display:inline-block}.polli\:inline-flex{display:inline-flex}.polli\:aspect-square{aspect-ratio:1}.polli\:h-2{height:calc(var(--polli-spacing) * 2)}.polli\:h-3{height:calc(var(--polli-spacing) * 3)}.polli\:h-3\.5{height:calc(var(--polli-spacing) * 3.5)}.polli\:h-4{height:calc(var(--polli-spacing) * 4)}.polli\:h-5{height:calc(var(--polli-spacing) * 5)}.polli\:h-6{height:calc(var(--polli-spacing) * 6)}.polli\:h-7{height:calc(var(--polli-spacing) * 7)}.polli\:h-8{height:calc(var(--polli-spacing) * 8)}.polli\:h-9{height:calc(var(--polli-spacing) * 9)}.polli\:h-10{height:calc(var(--polli-spacing) * 10)}.polli\:h-12{height:calc(var(--polli-spacing) * 12)}.polli\:h-44{height:calc(var(--polli-spacing) * 44)}.polli\:h-dvh{height:100dvh}.polli\:max-h-64{max-height:calc(var(--polli-spacing) * 64)}.polli\:min-h-0{min-height:calc(var(--polli-spacing) * 0)}.polli\:min-h-8{min-height:calc(var(--polli-spacing) * 8)}.polli\:w-2{width:calc(var(--polli-spacing) * 2)}.polli\:w-3{width:calc(var(--polli-spacing) * 3)}.polli\:w-3\.5{width:calc(var(--polli-spacing) * 3.5)}.polli\:w-4{width:calc(var(--polli-spacing) * 4)}.polli\:w-5{width:calc(var(--polli-spacing) * 5)}.polli\:w-6{width:calc(var(--polli-spacing) * 6)}.polli\:w-8{width:calc(var(--polli-spacing) * 8)}.polli\:w-9{width:calc(var(--polli-spacing) * 9)}.polli\:w-10{width:calc(var(--polli-spacing) * 10)}.polli\:w-12{width:calc(var(--polli-spacing) * 12)}.polli\:w-36{width:calc(var(--polli-spacing) * 36)}.polli\:w-44{width:calc(var(--polli-spacing) * 44)}.polli\:w-56{width:calc(var(--polli-spacing) * 56)}.polli\:w-80{width:calc(var(--polli-spacing) * 80)}.polli\:w-\[304px\]{width:304px}.polli\:w-full{width:100%}.polli\:w-max{width:max-content}.polli\:max-w-2xl{max-width:var(--polli-container-2xl)}.polli\:max-w-3xl{max-width:var(--polli-container-3xl)}.polli\:max-w-\[1220px\]{max-width:1220px}.polli\:max-w-full{max-width:100%}.polli\:max-w-md{max-width:var(--polli-container-md)}.polli\:max-w-xl{max-width:var(--polli-container-xl)}.polli\:min-w-0{min-width:calc(var(--polli-spacing) * 0)}.polli\:min-w-\[140px\]{min-width:140px}.polli\:min-w-\[150px\]{min-width:150px}.polli\:min-w-\[320px\]{min-width:320px}.polli\:flex-1{flex:1}.polli\:flex-shrink-0,.polli\:shrink-0{flex-shrink:0}.polli\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-1{--tw-translate-x:calc(var(--polli-spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-6{--tw-translate-x:calc(var(--polli-spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:rotate-180{rotate:180deg}.polli\:cursor-help{cursor:help}.polli\:cursor-not-allowed{cursor:not-allowed}.polli\:cursor-pointer{cursor:pointer}.polli\:scroll-mt-24{scroll-margin-top:calc(var(--polli-spacing) * 24)}.polli\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.polli\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.polli\:grid-cols-\[repeat\(auto-fit\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.polli\:grid-cols-\[repeat\(auto-fit\,minmax\(210px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.polli\:grid-cols-\[repeat\(auto-fit\,minmax\(220px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.polli\:grid-cols-\[repeat\(auto-fit\,minmax\(230px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.polli\:grid-cols-\[repeat\(auto-fit\,minmax\(260px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.polli\:flex-col{flex-direction:column}.polli\:flex-wrap{flex-wrap:wrap}.polli\:items-baseline{align-items:baseline}.polli\:items-center{align-items:center}.polli\:items-start{align-items:flex-start}.polli\:justify-between{justify-content:space-between}.polli\:justify-center{justify-content:center}.polli\:justify-end{justify-content:flex-end}.polli\:justify-start{justify-content:flex-start}.polli\:gap-1{gap:calc(var(--polli-spacing) * 1)}.polli\:gap-1\.5{gap:calc(var(--polli-spacing) * 1.5)}.polli\:gap-2{gap:calc(var(--polli-spacing) * 2)}.polli\:gap-3{gap:calc(var(--polli-spacing) * 3)}.polli\:gap-4{gap:calc(var(--polli-spacing) * 4)}.polli\:gap-5{gap:calc(var(--polli-spacing) * 5)}.polli\:gap-8{gap:calc(var(--polli-spacing) * 8)}.polli\:gap-10{gap:calc(var(--polli-spacing) * 10)}.polli\:gap-x-4{column-gap:calc(var(--polli-spacing) * 4)}.polli\:gap-y-1{row-gap:calc(var(--polli-spacing) * 1)}.polli\:self-center{align-self:center}.polli\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.polli\:overflow-auto{overflow:auto}.polli\:overflow-hidden{overflow:hidden}.polli\:overflow-x-auto{overflow-x:auto}.polli\:overflow-x-hidden{overflow-x:hidden}.polli\:overflow-y-auto{overflow-y:auto}.polli\:overflow-y-hidden{overflow-y:hidden}.polli\:rounded{border-radius:.25rem}.polli\:rounded-2xl{border-radius:var(--polli-radius-2xl)}.polli\:rounded-full{border-radius:3.40282e38px}.polli\:rounded-lg{border-radius:var(--polli-radius-lg)}.polli\:rounded-md{border-radius:var(--polli-radius-md)}.polli\:rounded-xl{border-radius:var(--polli-radius-xl)}.polli\:rounded-t-lg{border-top-left-radius:var(--polli-radius-lg);border-top-right-radius:var(--polli-radius-lg)}.polli\:border{border-style:var(--tw-border-style);border-width:1px}.polli\:border-2{border-style:var(--tw-border-style);border-width:2px}.polli\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.polli\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.polli\:border-gray-300{border-color:var(--polli-color-gray-300)}.polli\:border-gray-400\/70{border-color:var(--polli-color-gray-400)}@supports (color:color-mix(in lab, red, red)){.polli\:border-gray-400\/70{border-color:color-mix(in oklab, var(--polli-color-gray-400) 70%, transparent)}}.polli\:border-green-950\/10{border-color:var(--polli-color-green-950)}@supports (color:color-mix(in lab, red, red)){.polli\:border-green-950\/10{border-color:color-mix(in oklab, var(--polli-color-green-950) 10%, transparent)}}.polli\:border-intent-danger-border{border-color:var(--polli-color-danger-border)}.polli\:border-red-400{border-color:var(--polli-color-red-400)}.polli\:border-theme-border{border-color:var(--polli-color-border)}.polli\:bg-\[oklch\(0\.88_0\.12_25\)\]{background-color:oklch(88% .12 25)}.polli\:bg-\[oklch\(0\.88_0\.12_158\)\]{background-color:oklch(88% .12 158)}.polli\:bg-\[oklch\(0\.93_0\.06_300\)\]{background-color:oklch(93% .06 300)}.polli\:bg-\[oklch\(0\.935_0\.06_158\)\]{background-color:oklch(93.5% .06 158)}.polli\:bg-amber-200{background-color:var(--polli-color-amber-200)}.polli\:bg-blue-200{background-color:var(--polli-color-blue-200)}.polli\:bg-current{background-color:currentColor}.polli\:bg-emerald-100{background-color:var(--polli-color-emerald-100)}.polli\:bg-gray-100,.polli\:bg-gray-100\/80{background-color:var(--polli-color-gray-100)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-gray-100\/80{background-color:color-mix(in oklab, var(--polli-color-gray-100) 80%, transparent)}}.polli\:bg-gray-200{background-color:var(--polli-color-gray-200)}.polli\:bg-gray-950\/50{background-color:var(--polli-color-gray-950)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-gray-950\/50{background-color:color-mix(in oklab, var(--polli-color-gray-950) 50%, transparent)}}.polli\:bg-green-100{background-color:var(--polli-color-green-100)}.polli\:bg-green-200{background-color:var(--polli-color-green-200)}.polli\:bg-intent-danger-bg-light{background-color:var(--polli-color-danger-bg-light)}.polli\:bg-pink-200{background-color:var(--polli-color-pink-200)}.polli\:bg-surface-white{background-color:var(--polli-color-surface-white)}.polli\:bg-teal-200{background-color:var(--polli-color-teal-200)}.polli\:bg-theme-bg-active{background-color:var(--polli-color-bg-active)}.polli\:bg-theme-bg-hover{background-color:var(--polli-color-bg-hover)}.polli\:bg-theme-bg-pale{background-color:var(--polli-color-bg-pale)}.polli\:bg-theme-bg-subtle{background-color:var(--polli-color-bg-subtle)}.polli\:bg-theme-border{background-color:var(--polli-color-border)}.polli\:bg-theme-text-base{background-color:var(--polli-color-text-base)}.polli\:bg-theme-text-muted{background-color:var(--polli-color-text-muted)}.polli\:bg-theme-text-soft{background-color:var(--polli-color-text-soft)}.polli\:bg-theme-text-strong{background-color:var(--polli-color-text-strong)}.polli\:bg-violet-200{background-color:var(--polli-color-violet-200)}.polli\:bg-white{background-color:var(--polli-color-white)}.polli\:p-2{padding:calc(var(--polli-spacing) * 2)}.polli\:p-3{padding:calc(var(--polli-spacing) * 3)}.polli\:p-4{padding:calc(var(--polli-spacing) * 4)}.polli\:p-6{padding:calc(var(--polli-spacing) * 6)}.polli\:px-2{padding-inline:calc(var(--polli-spacing) * 2)}.polli\:px-2\.5{padding-inline:calc(var(--polli-spacing) * 2.5)}.polli\:px-3{padding-inline:calc(var(--polli-spacing) * 3)}.polli\:px-4{padding-inline:calc(var(--polli-spacing) * 4)}.polli\:px-5{padding-inline:calc(var(--polli-spacing) * 5)}.polli\:px-6{padding-inline:calc(var(--polli-spacing) * 6)}.polli\:px-8{padding-inline:calc(var(--polli-spacing) * 8)}.polli\:py-0\.5{padding-block:calc(var(--polli-spacing) * .5)}.polli\:py-1{padding-block:calc(var(--polli-spacing) * 1)}.polli\:py-1\.5{padding-block:calc(var(--polli-spacing) * 1.5)}.polli\:py-2{padding-block:calc(var(--polli-spacing) * 2)}.polli\:py-3{padding-block:calc(var(--polli-spacing) * 3)}.polli\:py-4{padding-block:calc(var(--polli-spacing) * 4)}.polli\:pt-0\.5{padding-top:calc(var(--polli-spacing) * .5)}.polli\:pt-1{padding-top:calc(var(--polli-spacing) * 1)}.polli\:pt-1\.5{padding-top:calc(var(--polli-spacing) * 1.5)}.polli\:pt-2{padding-top:calc(var(--polli-spacing) * 2)}.polli\:pt-3{padding-top:calc(var(--polli-spacing) * 3)}.polli\:pt-6{padding-top:calc(var(--polli-spacing) * 6)}.polli\:pt-8{padding-top:calc(var(--polli-spacing) * 8)}.polli\:pb-1{padding-bottom:calc(var(--polli-spacing) * 1)}.polli\:pb-2{padding-bottom:calc(var(--polli-spacing) * 2)}.polli\:pb-3{padding-bottom:calc(var(--polli-spacing) * 3)}.polli\:pb-8{padding-bottom:calc(var(--polli-spacing) * 8)}.polli\:pb-10{padding-bottom:calc(var(--polli-spacing) * 10)}.polli\:text-center{text-align:center}.polli\:text-left{text-align:left}.polli\:font-body{font-family:Uncut Sans,ui-sans-serif,sans-serif}.polli\:font-heading{font-family:LCT Mogi,ui-sans-serif,sans-serif}.polli\:font-mono{font-family:var(--polli-font-mono)}.polli\:font-pixel{font-family:Pixelify Sans,ui-monospace,monospace}.polli\:font-serif{font-family:var(--polli-font-serif)}.polli\:font-subheading{font-family:Fraunces,ui-serif,serif}.polli\:text-2xl{font-size:var(--polli-text-2xl);line-height:var(--tw-leading,var(--polli-text-2xl--line-height))}.polli\:text-3xl{font-size:var(--polli-text-3xl);line-height:var(--tw-leading,var(--polli-text-3xl--line-height))}.polli\:text-4xl{font-size:var(--polli-text-4xl);line-height:var(--tw-leading,var(--polli-text-4xl--line-height))}.polli\:text-base{font-size:16px;line-height:var(--tw-leading,var(--polli-text-base--line-height))}.polli\:text-sm{font-size:var(--polli-text-sm);line-height:var(--tw-leading,var(--polli-text-sm--line-height))}.polli\:text-xl{font-size:var(--polli-text-xl);line-height:var(--tw-leading,var(--polli-text-xl--line-height))}.polli\:text-xs{font-size:var(--polli-text-xs);line-height:var(--tw-leading,var(--polli-text-xs--line-height))}.polli\:text-micro{font-size:10px}.polli\:leading-6{--tw-leading:calc(var(--polli-spacing) * 6);line-height:calc(var(--polli-spacing) * 6)}.polli\:leading-none{--tw-leading:1;line-height:1}.polli\:leading-normal{--tw-leading:var(--polli-leading-normal);line-height:var(--polli-leading-normal)}.polli\:leading-tight{--tw-leading:var(--polli-leading-tight);line-height:var(--polli-leading-tight)}.polli\:font-black{--tw-font-weight:var(--polli-font-weight-black);font-weight:var(--polli-font-weight-black)}.polli\:font-bold{--tw-font-weight:var(--polli-font-weight-bold);font-weight:var(--polli-font-weight-bold)}.polli\:font-medium{--tw-font-weight:var(--polli-font-weight-medium);font-weight:var(--polli-font-weight-medium)}.polli\:font-semibold{--tw-font-weight:var(--polli-font-weight-semibold);font-weight:var(--polli-font-weight-semibold)}.polli\:tracking-tight{--tw-tracking:var(--polli-tracking-tight);letter-spacing:var(--polli-tracking-tight)}.polli\:tracking-wide{--tw-tracking:var(--polli-tracking-wide);letter-spacing:var(--polli-tracking-wide)}.polli\:\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.polli\:break-words{overflow-wrap:break-word}.polli\:whitespace-nowrap{white-space:nowrap}.polli\:whitespace-pre-line{white-space:pre-line}.polli\:text-\[oklch\(0\.42_0\.18_300\)\]{color:oklch(42% .18 300)}.polli\:text-\[oklch\(0\.46_0\.13_158\)\]{color:oklch(46% .13 158)}.polli\:text-amber-800,.polli\:text-amber-800\/70{color:var(--polli-color-amber-800)}@supports (color:color-mix(in lab, red, red)){.polli\:text-amber-800\/70{color:color-mix(in oklab, var(--polli-color-amber-800) 70%, transparent)}}.polli\:text-amber-900{color:var(--polli-color-amber-900)}.polli\:text-blue-800{color:var(--polli-color-blue-800)}.polli\:text-blue-900{color:var(--polli-color-blue-900)}.polli\:text-gray-300{color:var(--polli-color-gray-300)}.polli\:text-gray-400{color:var(--polli-color-gray-400)}.polli\:text-gray-600{color:var(--polli-color-gray-600)}.polli\:text-gray-700{color:var(--polli-color-gray-700)}.polli\:text-gray-900{color:var(--polli-color-gray-900)}.polli\:text-green-700{color:var(--polli-color-green-700)}.polli\:text-green-800{color:var(--polli-color-green-800)}.polli\:text-green-900{color:var(--polli-color-green-900)}.polli\:text-intent-danger-text{color:var(--polli-color-danger-text)}.polli\:text-pink-800{color:var(--polli-color-pink-800)}.polli\:text-pink-900{color:var(--polli-color-pink-900)}.polli\:text-teal-800{color:var(--polli-color-teal-800)}.polli\:text-teal-900{color:var(--polli-color-teal-900)}.polli\:text-theme-text-base{color:var(--polli-color-text-base)}.polli\:text-theme-text-muted{color:var(--polli-color-text-muted)}.polli\:text-theme-text-soft,.polli\:text-theme-text-soft\/60{color:var(--polli-color-text-soft)}@supports (color:color-mix(in lab, red, red)){.polli\:text-theme-text-soft\/60{color:color-mix(in oklab, var(--polli-color-text-soft) 60%, transparent)}}.polli\:text-theme-text-strong{color:var(--polli-color-text-strong)}.polli\:text-violet-800{color:var(--polli-color-violet-800)}.polli\:text-violet-900{color:var(--polli-color-violet-900)}.polli\:capitalize{text-transform:capitalize}.polli\:uppercase{text-transform:uppercase}.polli\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.polli\:underline{text-decoration-line:underline}.polli\:decoration-dotted{text-decoration-style:dotted}.polli\:placeholder-green-950::placeholder{color:var(--polli-color-green-950)}.polli\:opacity-0{opacity:0}.polli\:opacity-30{opacity:.3}.polli\:opacity-50{opacity:.5}.polli\:opacity-60{opacity:.6}.polli\:opacity-100{opacity:1}.polli\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:ring-theme-border{--tw-ring-color:var(--polli-color-border)}.polli\:backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.polli\:transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:duration-150{--tw-duration:.15s;transition-duration:.15s}.polli\:duration-200{--tw-duration:.2s;transition-duration:.2s}.polli\:ease-out{--tw-ease:var(--polli-ease-out);transition-timing-function:var(--polli-ease-out)}.polli\:select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.polli\:group-hover\:opacity-100:is(:where(.polli\:group):hover *){opacity:1}}.polli\:last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.polli\:last\:pb-0:last-child{padding-bottom:calc(var(--polli-spacing) * 0)}@media (hover:hover){.polli\:hover\:bg-\[oklch\(0\.88_0\.075_25\)\]:hover{background-color:oklch(88% .075 25)}.polli\:hover\:bg-amber-100:hover{background-color:var(--polli-color-amber-100)}.polli\:hover\:bg-blue-100:hover{background-color:var(--polli-color-blue-100)}.polli\:hover\:bg-green-100:hover{background-color:var(--polli-color-green-100)}.polli\:hover\:bg-pink-100:hover{background-color:var(--polli-color-pink-100)}.polli\:hover\:bg-teal-100:hover{background-color:var(--polli-color-teal-100)}.polli\:hover\:bg-theme-bg-active:hover{background-color:var(--polli-color-bg-active)}.polli\:hover\:bg-theme-bg-hover:hover{background-color:var(--polli-color-bg-hover)}.polli\:hover\:bg-theme-bg-pale:hover{background-color:var(--polli-color-bg-pale)}.polli\:hover\:bg-theme-bg-subtle:hover{background-color:var(--polli-color-bg-subtle)}.polli\:hover\:bg-transparent:hover{background-color:#0000}.polli\:hover\:bg-violet-100:hover{background-color:var(--polli-color-violet-100)}.polli\:hover\:text-amber-900:hover{color:var(--polli-color-amber-900)}.polli\:hover\:text-blue-900:hover{color:var(--polli-color-blue-900)}.polli\:hover\:text-green-900:hover{color:var(--polli-color-green-900)}.polli\:hover\:text-pink-900:hover{color:var(--polli-color-pink-900)}.polli\:hover\:text-teal-900:hover{color:var(--polli-color-teal-900)}.polli\:hover\:text-theme-text-strong:hover{color:var(--polli-color-text-strong)}.polli\:hover\:text-violet-900:hover{color:var(--polli-color-violet-900)}.polli\:hover\:brightness-105:hover{--tw-brightness:brightness(105%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.polli\:hover\:filter:hover{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.polli\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.polli\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.polli\:disabled\:opacity-50:disabled{opacity:.5}.polli\:disabled\:opacity-60:disabled{opacity:.6}@media (min-width:48rem){.polli\:md\:w-auto{width:auto}.polli\:md\:flex-row{flex-direction:row}.polli\:md\:items-start{align-items:flex-start}.polli\:md\:justify-between{justify-content:space-between}}}@font-face{font-family:LCT Mogi;src:url(./fonts/lct-mogi-a.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(./fonts/fraunces-soft-bold.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Uncut Sans;src:url(./fonts/uncut-sans-variable.woff2)format("woff2-variations");font-weight:300 700;font-style:normal;font-display:swap}:root{--polli-font-heading:"LCT Mogi", ui-sans-serif, sans-serif;--polli-font-subheading:"Fraunces", ui-serif, serif;--polli-font-body:"Uncut Sans", ui-sans-serif, sans-serif;--polli-font-pixel:"Pixelify Sans", ui-monospace, monospace;--polli-text-micro:10px;--polli-text-base:16px;--polli-color-surface-white:oklch(100% 0 0/.8)}[data-theme=amber]{--polli-color-text-base:oklch(41.4% .112 45.904);--polli-color-text-strong:oklch(27.9% .077 45.635);--polli-color-text-soft:oklch(55.5% .163 48.998);--polli-color-text-muted:oklch(62% .045 45.904);--polli-color-border:oklch(87.9% .169 91.605);--polli-color-bg-subtle:oklch(98.7% .022 95.277/.7);--polli-color-bg-active:oklch(92.4% .12 95.746);--polli-color-bg-hover:oklch(87.9% .169 91.605);--polli-color-bg-pale:oklch(96.2% .059 95.617);--polli-color-scrollbar-thumb:oklch(82.8% .189 84.429/.7)}[data-theme=blue]{--polli-color-text-base:oklch(37.9% .146 265.522);--polli-color-text-strong:oklch(28.2% .091 267.935);--polli-color-text-soft:oklch(48.8% .243 264.376);--polli-color-text-muted:oklch(62% .058 265.522);--polli-color-border:oklch(80.9% .105 251.813);--polli-color-bg-subtle:oklch(97% .014 254.604/.7);--polli-color-bg-active:oklch(88.2% .059 254.128);--polli-color-bg-hover:oklch(80.9% .105 251.813);--polli-color-bg-pale:oklch(93.2% .032 255.585);--polli-color-scrollbar-thumb:oklch(70.7% .165 254.624/.7)}[data-theme=pink]{--polli-color-text-base:oklch(40.8% .153 2.432);--polli-color-text-strong:oklch(28.4% .109 3.907);--polli-color-text-soft:oklch(52.5% .223 3.958);--polli-color-text-muted:oklch(62% .061 2.432);--polli-color-border:oklch(82.3% .12 346.018);--polli-color-bg-subtle:oklch(97.1% .014 343.198/.7);--polli-color-bg-active:oklch(89.9% .061 343.231);--polli-color-bg-hover:oklch(82.3% .12 346.018);--polli-color-bg-pale:oklch(94.8% .028 342.258);--polli-color-scrollbar-thumb:oklch(71.8% .202 349.761/.7)}[data-theme=teal]{--polli-color-text-base:oklch(38.6% .063 188.416);--polli-color-text-strong:oklch(27.7% .046 192.524);--polli-color-text-soft:oklch(51.1% .096 186.391);--polli-color-text-muted:oklch(62% .025 188.416);--polli-color-border:oklch(85.5% .138 181.071);--polli-color-bg-subtle:oklch(98.4% .014 180.72/.7);--polli-color-bg-active:oklch(91% .096 180.426);--polli-color-bg-hover:oklch(85.5% .138 181.071);--polli-color-bg-pale:oklch(95.3% .051 180.801);--polli-color-scrollbar-thumb:oklch(70.4% .14 182.503/.7)}[data-theme=violet]{--polli-color-text-base:oklch(38% .189 293.745);--polli-color-text-strong:oklch(28.3% .141 291.089);--polli-color-text-soft:oklch(49.1% .27 292.581);--polli-color-text-muted:oklch(62% .076 293.745);--polli-color-border:oklch(81.1% .111 293.571);--polli-color-bg-subtle:oklch(96.9% .016 293.756/.7);--polli-color-bg-active:oklch(89.4% .057 293.283);--polli-color-bg-hover:oklch(81.1% .111 293.571);--polli-color-bg-pale:oklch(94.3% .029 294.588);--polli-color-scrollbar-thumb:oklch(70.2% .183 293.541/.7)}:root,[data-theme=green]{--polli-color-text-base:oklch(39.3% .095 152.535);--polli-color-text-strong:oklch(26.6% .065 152.934);--polli-color-text-soft:oklch(52.7% .154 150.069);--polli-color-text-muted:oklch(62% .038 152.535);--polli-color-border:oklch(87.1% .15 154.449);--polli-color-bg-subtle:oklch(98.2% .018 155.826/.7);--polli-color-bg-active:oklch(92.5% .084 155.995);--polli-color-bg-hover:oklch(87.1% .15 154.449);--polli-color-bg-pale:oklch(96.2% .044 156.743);--polli-color-scrollbar-thumb:oklch(79.2% .209 151.711/.7)}:root{--polli-color-danger-bg-light:oklch(93.5% .045 25);--polli-color-danger-text:oklch(48% .18 25);--polli-color-danger-border:oklch(78% .115 25)}.polli-scrollbar-subtle{scrollbar-width:thin;scrollbar-color:transparent transparent}.polli-scrollbar-subtle::-webkit-scrollbar{width:12px;height:12px}.polli-scrollbar-subtle::-webkit-scrollbar-track{background:0 0}.polli-scrollbar-subtle::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:3px solid #0000;border-radius:9999px;transition:background-color .16s}.polli-scrollbar-subtle[data-scrollbar-active=true]{scrollbar-color:var(--polli-color-scrollbar-thumb) transparent}.polli-scrollbar-subtle[data-scrollbar-active=true]::-webkit-scrollbar-thumb{background-color:var(--polli-color-scrollbar-thumb)}.polli-input-number-clean::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.polli-input-number-clean::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.polli-input-number-clean{-moz-appearance:textfield}.polli-slider{--polli-slider-thumb-shadow-fallback:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli-slider{--polli-slider-thumb-shadow-fallback:color-mix(in oklab, var(--polli-color-text-strong) 35%, transparent)}}.polli-slider{--polli-slider-progress-value:var(--polli-slider-progress,0%);--polli-slider-fill-value:var(--polli-slider-fill,var(--polli-color-bg-active));--polli-slider-track-value:var(--polli-slider-track,var(--polli-color-bg-pale));--polli-slider-thumb-border-value:var(--polli-slider-thumb-border,var(--polli-color-text-strong));--polli-slider-thumb-shadow-value:var(--polli-slider-thumb-shadow,var(--polli-slider-thumb-shadow-fallback));cursor:grab;appearance:none;background:linear-gradient(to right, var(--polli-slider-fill-value) 0%, var(--polli-slider-fill-value) var(--polli-slider-progress-value), var(--polli-slider-track-value) var(--polli-slider-progress-value), var(--polli-slider-track-value) 100%);border-radius:9999px;outline:none;width:100%;height:.5rem;transition:opacity .15s,filter .15s}.polli-slider:active{cursor:grabbing}.polli-slider:disabled{cursor:not-allowed;opacity:.6}.polli-slider:focus-visible{box-shadow:0 0 0 2px var(--polli-slider-fill-value), 0 0 0 4px var(--polli-color-surface-white)}.polli-slider::-webkit-slider-runnable-track{background:0 0;border-radius:9999px;height:.5rem}.polli-slider::-moz-range-track{background:0 0;border-radius:9999px;height:.5rem}.polli-slider::-webkit-slider-thumb{appearance:none;border:3px solid var(--polli-slider-thumb-border-value);width:22px;height:22px;box-shadow:0 2px 6px var(--polli-slider-thumb-shadow-value);background:#fff;border-radius:9999px;margin-top:-7px;transition:transform .15s}.polli-slider::-moz-range-thumb{border:3px solid var(--polli-slider-thumb-border-value);width:22px;height:22px;box-shadow:0 2px 6px var(--polli-slider-thumb-shadow-value);background:#fff;border-radius:9999px;transition:transform .15s}.polli-slider:hover::-webkit-slider-thumb{transform:scale(1.1)}.polli-slider:active::-webkit-slider-thumb{transform:scale(1.05)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The six chrome themes exposed by the CSS-var cascade. Apply via
|
|
3
|
+
* `data-theme="<name>"` on any ancestor — primitives and `--polli-*`
|
|
4
|
+
* tokens in that subtree restyle accordingly.
|
|
5
|
+
*/
|
|
6
|
+
declare const themes: readonly ["amber", "blue", "pink", "teal", "violet", "green"];
|
|
7
|
+
type ThemeName = (typeof themes)[number];
|
|
8
|
+
/**
|
|
9
|
+
* Representative brand color per theme — the pale `--polli-color-bg-pale`
|
|
10
|
+
* token expressed as hex — for non-CSS consumers (build tools that tint the
|
|
11
|
+
* logo, `theme-color` meta, manifests). Only verified values are listed;
|
|
12
|
+
* extend as more themes are adopted by apps.
|
|
13
|
+
*/
|
|
14
|
+
declare const themeColors: Partial<Record<ThemeName, string>>;
|
|
15
|
+
|
|
16
|
+
export { type ThemeName as T, themes as a, themeColors as t };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The six chrome themes exposed by the CSS-var cascade. Apply via
|
|
3
|
+
* `data-theme="<name>"` on any ancestor — primitives and `--polli-*`
|
|
4
|
+
* tokens in that subtree restyle accordingly.
|
|
5
|
+
*/
|
|
6
|
+
declare const themes: readonly ["amber", "blue", "pink", "teal", "violet", "green"];
|
|
7
|
+
type ThemeName = (typeof themes)[number];
|
|
8
|
+
/**
|
|
9
|
+
* Representative brand color per theme — the pale `--polli-color-bg-pale`
|
|
10
|
+
* token expressed as hex — for non-CSS consumers (build tools that tint the
|
|
11
|
+
* logo, `theme-color` meta, manifests). Only verified values are listed;
|
|
12
|
+
* extend as more themes are adopted by apps.
|
|
13
|
+
*/
|
|
14
|
+
declare const themeColors: Partial<Record<ThemeName, string>>;
|
|
15
|
+
|
|
16
|
+
export { type ThemeName as T, themes as a, themeColors as t };
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/modules/wallet/index.ts
|
|
21
|
+
var wallet_exports = {};
|
|
22
|
+
__export(wallet_exports, {
|
|
23
|
+
PAID_BALANCE_CHART_COLOR: () => PAID_BALANCE_CHART_COLOR,
|
|
24
|
+
PaidChip: () => PaidChip,
|
|
25
|
+
TIER_BALANCE_CHART_COLOR: () => TIER_BALANCE_CHART_COLOR,
|
|
26
|
+
TierChip: () => TierChip,
|
|
27
|
+
WalletBalanceCard: () => WalletBalanceCard,
|
|
28
|
+
WalletDot: () => WalletDot,
|
|
29
|
+
formatPollen: () => formatPollen
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(wallet_exports);
|
|
32
|
+
|
|
33
|
+
// src/lib/cn.ts
|
|
34
|
+
var import_clsx = require("clsx");
|
|
35
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
36
|
+
var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({ prefix: "polli" });
|
|
37
|
+
function cn(...inputs) {
|
|
38
|
+
return twMerge((0, import_clsx.clsx)(...inputs));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// src/primitives/Chip.tsx
|
|
42
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
43
|
+
var chipSizes = {
|
|
44
|
+
sm: "polli:px-2 polli:py-0.5 polli:text-xs",
|
|
45
|
+
md: "polli:px-2.5 polli:py-0.5 polli:text-sm",
|
|
46
|
+
lg: "polli:px-3 polli:py-1 polli:text-sm"
|
|
47
|
+
};
|
|
48
|
+
var intentClasses = {
|
|
49
|
+
news: "polli:bg-[oklch(0.935_0.06_158)] polli:text-[oklch(0.46_0.13_158)]",
|
|
50
|
+
alpha: "polli:bg-[oklch(0.93_0.06_300)] polli:text-[oklch(0.42_0.18_300)]",
|
|
51
|
+
neutral: "polli:border polli:border-gray-400/70 polli:bg-gray-100/80 polli:text-gray-900"
|
|
52
|
+
};
|
|
53
|
+
var Chip = ({
|
|
54
|
+
theme,
|
|
55
|
+
intent,
|
|
56
|
+
size = "md",
|
|
57
|
+
className,
|
|
58
|
+
children,
|
|
59
|
+
...rest
|
|
60
|
+
}) => {
|
|
61
|
+
const intentClass = intent ? intentClasses[intent] : "polli:bg-theme-bg-active polli:text-theme-text-strong";
|
|
62
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
63
|
+
"span",
|
|
64
|
+
{
|
|
65
|
+
...rest,
|
|
66
|
+
"data-theme": theme,
|
|
67
|
+
className: cn(
|
|
68
|
+
"polli:inline-flex polli:shrink-0 polli:items-center polli:gap-1 polli:rounded-lg polli:font-medium polli:leading-normal",
|
|
69
|
+
chipSizes[size],
|
|
70
|
+
intentClass,
|
|
71
|
+
className
|
|
72
|
+
),
|
|
73
|
+
children
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// src/modules/wallet/chips.tsx
|
|
79
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
80
|
+
var PaidChip = ({
|
|
81
|
+
className,
|
|
82
|
+
children,
|
|
83
|
+
...props
|
|
84
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Chip, { ...props, className: cn("polli-wallet-chip-paid", className), children });
|
|
85
|
+
var TierChip = ({
|
|
86
|
+
className,
|
|
87
|
+
children,
|
|
88
|
+
...props
|
|
89
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Chip, { ...props, className: cn("polli-wallet-chip-tier", className), children });
|
|
90
|
+
|
|
91
|
+
// src/modules/wallet/colors.ts
|
|
92
|
+
var PAID_BALANCE_CHART_COLOR = "var(--polli-color-paid-pale)";
|
|
93
|
+
var TIER_BALANCE_CHART_COLOR = "var(--polli-color-tier-pale)";
|
|
94
|
+
|
|
95
|
+
// src/modules/wallet/format-pollen.ts
|
|
96
|
+
var BUDGET = 5;
|
|
97
|
+
var MAX_DECIMALS = 4;
|
|
98
|
+
var COMPACT_THRESHOLD = 1e5;
|
|
99
|
+
function floorTo(value, decimals) {
|
|
100
|
+
const factor = 10 ** decimals;
|
|
101
|
+
return Math.floor(value * factor) / factor;
|
|
102
|
+
}
|
|
103
|
+
function formatCompact(value) {
|
|
104
|
+
const abs = Math.abs(value);
|
|
105
|
+
const sign = value < 0 ? "-" : "";
|
|
106
|
+
const [unit, scale] = abs >= 1e9 ? ["B", 1e9] : abs >= 1e6 ? ["M", 1e6] : ["K", 1e3];
|
|
107
|
+
const ratio = abs / scale;
|
|
108
|
+
const intDigits = Math.max(1, Math.floor(Math.log10(ratio)) + 1);
|
|
109
|
+
const decimals = Math.max(0, 3 - intDigits);
|
|
110
|
+
const floored = floorTo(ratio, decimals);
|
|
111
|
+
return `${sign}${Number(floored.toFixed(decimals)).toString()}${unit}`;
|
|
112
|
+
}
|
|
113
|
+
function formatPollen(value) {
|
|
114
|
+
if (!Number.isFinite(value) || value === 0) return "0";
|
|
115
|
+
const abs = Math.abs(value);
|
|
116
|
+
if (abs >= COMPACT_THRESHOLD) return formatCompact(value);
|
|
117
|
+
const intDigits = abs >= 1 ? Math.floor(Math.log10(abs)) + 1 : 1;
|
|
118
|
+
const decimals = Math.min(MAX_DECIMALS, Math.max(0, BUDGET - intDigits));
|
|
119
|
+
const floored = floorTo(value, decimals);
|
|
120
|
+
if (floored === 0) return "0";
|
|
121
|
+
return Number(floored.toFixed(decimals)).toString();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// src/modules/wallet/wallet-display.tsx
|
|
125
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
126
|
+
var walletPanelClasses = {
|
|
127
|
+
paid: "polli-wallet-panel-paid",
|
|
128
|
+
tier: "polli-wallet-panel-tier"
|
|
129
|
+
};
|
|
130
|
+
var walletTextClasses = {
|
|
131
|
+
paid: "polli-wallet-text-paid",
|
|
132
|
+
tier: "polli-wallet-text-tier"
|
|
133
|
+
};
|
|
134
|
+
var WalletDot = ({ kind, className }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
135
|
+
"span",
|
|
136
|
+
{
|
|
137
|
+
className: cn(
|
|
138
|
+
"polli:h-2 polli:w-2 polli:rounded-full",
|
|
139
|
+
kind === "paid" ? "polli-wallet-dot-paid" : "polli-wallet-dot-tier",
|
|
140
|
+
className
|
|
141
|
+
),
|
|
142
|
+
"aria-hidden": "true"
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
var WalletBalanceCard = ({
|
|
146
|
+
kind,
|
|
147
|
+
label,
|
|
148
|
+
value,
|
|
149
|
+
info,
|
|
150
|
+
footer,
|
|
151
|
+
className
|
|
152
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
153
|
+
"div",
|
|
154
|
+
{
|
|
155
|
+
className: cn(
|
|
156
|
+
"polli:rounded-xl polli:p-4",
|
|
157
|
+
walletPanelClasses[kind],
|
|
158
|
+
className
|
|
159
|
+
),
|
|
160
|
+
children: [
|
|
161
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "polli:flex polli:items-center polli:gap-2", children: [
|
|
162
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(WalletDot, { kind }),
|
|
163
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "polli:text-sm polli:font-bold polli:uppercase polli:tracking-wide polli:text-amber-900", children: label }),
|
|
164
|
+
info
|
|
165
|
+
] }),
|
|
166
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
167
|
+
"div",
|
|
168
|
+
{
|
|
169
|
+
className: cn(
|
|
170
|
+
"polli-wallet-balance-value polli:mt-1 polli:font-bold polli:leading-none polli:tracking-tight polli:tabular-nums",
|
|
171
|
+
walletTextClasses[kind]
|
|
172
|
+
),
|
|
173
|
+
children: value
|
|
174
|
+
}
|
|
175
|
+
),
|
|
176
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "polli:mt-1.5 polli:text-sm polli:font-bold polli:tabular-nums polli:text-green-700", children: footer })
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
181
|
+
0 && (module.exports = {
|
|
182
|
+
PAID_BALANCE_CHART_COLOR,
|
|
183
|
+
PaidChip,
|
|
184
|
+
TIER_BALANCE_CHART_COLOR,
|
|
185
|
+
TierChip,
|
|
186
|
+
WalletBalanceCard,
|
|
187
|
+
WalletDot,
|
|
188
|
+
formatPollen
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/modules/wallet/index.ts","../../src/lib/cn.ts","../../src/primitives/Chip.tsx","../../src/modules/wallet/chips.tsx","../../src/modules/wallet/colors.ts","../../src/modules/wallet/format-pollen.ts","../../src/modules/wallet/wallet-display.tsx"],"sourcesContent":["export { PaidChip, TierChip, type WalletChipProps } from \"./chips.tsx\";\nexport {\n PAID_BALANCE_CHART_COLOR,\n TIER_BALANCE_CHART_COLOR,\n} from \"./colors.ts\";\nexport { formatPollen } from \"./format-pollen.ts\";\nexport {\n WalletBalanceCard,\n type WalletBalanceCardProps,\n WalletDot,\n type WalletDotProps,\n} from \"./wallet-display.tsx\";\n","import { clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({ prefix: \"polli\" });\n\n/** Internal class merge for polli:-prefixed package primitive classes. */\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(...inputs));\n}\n","import type { ComponentPropsWithoutRef, FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport type { ThemeName } from \"../theme.ts\";\n\n/** Semantic chip labels for status and metadata badges. */\ntype ChipIntent = \"news\" | \"alpha\" | \"neutral\";\n\nconst chipSizes = {\n sm: \"polli:px-2 polli:py-0.5 polli:text-xs\",\n md: \"polli:px-2.5 polli:py-0.5 polli:text-sm\",\n lg: \"polli:px-3 polli:py-1 polli:text-sm\",\n} as const;\n\nconst intentClasses: Record<ChipIntent, string> = {\n news: \"polli:bg-[oklch(0.935_0.06_158)] polli:text-[oklch(0.46_0.13_158)]\",\n alpha: \"polli:bg-[oklch(0.93_0.06_300)] polli:text-[oklch(0.42_0.18_300)]\",\n neutral:\n \"polli:border polli:border-gray-400/70 polli:bg-gray-100/80 polli:text-gray-900\",\n};\n\nexport type ChipProps = ComponentPropsWithoutRef<\"span\"> & {\n /** Override the cascade theme for this chip's subtree. */\n theme?: ThemeName;\n /** Semantic intent. Wins over `theme` when set. */\n intent?: ChipIntent;\n size?: keyof typeof chipSizes;\n};\n\n// Static, rectangular colored container. Round shapes are reserved for buttons.\n// Reads `bg-theme-bg-active` / `text-theme-text-strong` from the cascade unless\n// `intent` is set (semantic, theme-independent).\nexport const Chip: FC<ChipProps> = ({\n theme,\n intent,\n size = \"md\",\n className,\n children,\n ...rest\n}) => {\n const intentClass = intent\n ? intentClasses[intent]\n : \"polli:bg-theme-bg-active polli:text-theme-text-strong\";\n return (\n <span\n {...rest}\n data-theme={theme}\n className={cn(\n \"polli:inline-flex polli:shrink-0 polli:items-center polli:gap-1 polli:rounded-lg polli:font-medium polli:leading-normal\",\n chipSizes[size],\n intentClass,\n className,\n )}\n >\n {children}\n </span>\n );\n};\n","import type { FC } from \"react\";\nimport { cn } from \"../../lib/cn.ts\";\nimport { Chip, type ChipProps } from \"../../primitives/Chip.tsx\";\n\nexport type WalletChipProps = Omit<ChipProps, \"intent\">;\n\nexport const PaidChip: FC<WalletChipProps> = ({\n className,\n children,\n ...props\n}) => (\n <Chip {...props} className={cn(\"polli-wallet-chip-paid\", className)}>\n {children}\n </Chip>\n);\n\nexport const TierChip: FC<WalletChipProps> = ({\n className,\n children,\n ...props\n}) => (\n <Chip {...props} className={cn(\"polli-wallet-chip-tier\", className)}>\n {children}\n </Chip>\n);\n","export const PAID_BALANCE_CHART_COLOR = \"var(--polli-color-paid-pale)\";\nexport const TIER_BALANCE_CHART_COLOR = \"var(--polli-color-tier-pale)\";\n","// 5-digit budget for pollen display. Integer takes its space, decimals fill\n// the remainder (capped at 4), floor toward -infinity, trailing zeros stripped.\n// Integers needing >=6 digits switch to compact (K/M/B, 3 sig figs).\n// Decimal point and minus sign do not count toward the budget.\n\nconst BUDGET = 5;\nconst MAX_DECIMALS = 4;\nconst COMPACT_THRESHOLD = 100_000;\n\nfunction floorTo(value: number, decimals: number): number {\n const factor = 10 ** decimals;\n return Math.floor(value * factor) / factor;\n}\n\nfunction formatCompact(value: number): string {\n const abs = Math.abs(value);\n const sign = value < 0 ? \"-\" : \"\";\n const [unit, scale] =\n abs >= 1e9\n ? ([\"B\", 1e9] as const)\n : abs >= 1e6\n ? ([\"M\", 1e6] as const)\n : ([\"K\", 1e3] as const);\n const ratio = abs / scale;\n const intDigits = Math.max(1, Math.floor(Math.log10(ratio)) + 1);\n const decimals = Math.max(0, 3 - intDigits);\n const floored = floorTo(ratio, decimals);\n return `${sign}${Number(floored.toFixed(decimals)).toString()}${unit}`;\n}\n\nexport function formatPollen(value: number): string {\n if (!Number.isFinite(value) || value === 0) return \"0\";\n\n const abs = Math.abs(value);\n\n if (abs >= COMPACT_THRESHOLD) return formatCompact(value);\n\n const intDigits = abs >= 1 ? Math.floor(Math.log10(abs)) + 1 : 1;\n const decimals = Math.min(MAX_DECIMALS, Math.max(0, BUDGET - intDigits));\n const floored = floorTo(value, decimals);\n if (floored === 0) return \"0\";\n return Number(floored.toFixed(decimals)).toString();\n}\n","import type { FC, ReactNode } from \"react\";\nimport { cn } from \"../../lib/cn.ts\";\n\ntype WalletBalanceKind = \"paid\" | \"tier\";\n\nconst walletPanelClasses: Record<WalletBalanceKind, string> = {\n paid: \"polli-wallet-panel-paid\",\n tier: \"polli-wallet-panel-tier\",\n};\n\nconst walletTextClasses: Record<WalletBalanceKind, string> = {\n paid: \"polli-wallet-text-paid\",\n tier: \"polli-wallet-text-tier\",\n};\n\nexport type WalletDotProps = {\n kind: WalletBalanceKind;\n className?: string;\n};\n\nexport const WalletDot: FC<WalletDotProps> = ({ kind, className }) => (\n <span\n className={cn(\n \"polli:h-2 polli:w-2 polli:rounded-full\",\n kind === \"paid\" ? \"polli-wallet-dot-paid\" : \"polli-wallet-dot-tier\",\n className,\n )}\n aria-hidden=\"true\"\n />\n);\n\nexport type WalletBalanceCardProps = {\n kind: WalletBalanceKind;\n label: ReactNode;\n value: ReactNode;\n info?: ReactNode;\n footer?: ReactNode;\n className?: string;\n};\n\nexport const WalletBalanceCard: FC<WalletBalanceCardProps> = ({\n kind,\n label,\n value,\n info,\n footer,\n className,\n}) => (\n <div\n className={cn(\n \"polli:rounded-xl polli:p-4\",\n walletPanelClasses[kind],\n className,\n )}\n >\n <span className=\"polli:flex polli:items-center polli:gap-2\">\n <WalletDot kind={kind} />\n <span className=\"polli:text-sm polli:font-bold polli:uppercase polli:tracking-wide polli:text-amber-900\">\n {label}\n </span>\n {info}\n </span>\n <div\n className={cn(\n \"polli-wallet-balance-value polli:mt-1 polli:font-bold polli:leading-none polli:tracking-tight polli:tabular-nums\",\n walletTextClasses[kind],\n )}\n >\n {value}\n </div>\n {footer && (\n <div className=\"polli:mt-1.5 polli:text-sm polli:font-bold polli:tabular-nums polli:text-green-700\">\n {footer}\n </div>\n )}\n </div>\n);\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
import { a as ChipProps } from '../Chip-DyqWrq0r.cjs';
|
|
3
|
+
import '../theme-DfHMjWB7.cjs';
|
|
4
|
+
|
|
5
|
+
type WalletChipProps = Omit<ChipProps, "intent">;
|
|
6
|
+
declare const PaidChip: FC<WalletChipProps>;
|
|
7
|
+
declare const TierChip: FC<WalletChipProps>;
|
|
8
|
+
|
|
9
|
+
declare const PAID_BALANCE_CHART_COLOR = "var(--polli-color-paid-pale)";
|
|
10
|
+
declare const TIER_BALANCE_CHART_COLOR = "var(--polli-color-tier-pale)";
|
|
11
|
+
|
|
12
|
+
declare function formatPollen(value: number): string;
|
|
13
|
+
|
|
14
|
+
type WalletBalanceKind = "paid" | "tier";
|
|
15
|
+
type WalletDotProps = {
|
|
16
|
+
kind: WalletBalanceKind;
|
|
17
|
+
className?: string;
|
|
18
|
+
};
|
|
19
|
+
declare const WalletDot: FC<WalletDotProps>;
|
|
20
|
+
type WalletBalanceCardProps = {
|
|
21
|
+
kind: WalletBalanceKind;
|
|
22
|
+
label: ReactNode;
|
|
23
|
+
value: ReactNode;
|
|
24
|
+
info?: ReactNode;
|
|
25
|
+
footer?: ReactNode;
|
|
26
|
+
className?: string;
|
|
27
|
+
};
|
|
28
|
+
declare const WalletBalanceCard: FC<WalletBalanceCardProps>;
|
|
29
|
+
|
|
30
|
+
export { PAID_BALANCE_CHART_COLOR, PaidChip, TIER_BALANCE_CHART_COLOR, TierChip, WalletBalanceCard, type WalletBalanceCardProps, type WalletChipProps, WalletDot, type WalletDotProps, formatPollen };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
import { a as ChipProps } from '../Chip-BS8ronOu.js';
|
|
3
|
+
import '../theme-DfHMjWB7.js';
|
|
4
|
+
|
|
5
|
+
type WalletChipProps = Omit<ChipProps, "intent">;
|
|
6
|
+
declare const PaidChip: FC<WalletChipProps>;
|
|
7
|
+
declare const TierChip: FC<WalletChipProps>;
|
|
8
|
+
|
|
9
|
+
declare const PAID_BALANCE_CHART_COLOR = "var(--polli-color-paid-pale)";
|
|
10
|
+
declare const TIER_BALANCE_CHART_COLOR = "var(--polli-color-tier-pale)";
|
|
11
|
+
|
|
12
|
+
declare function formatPollen(value: number): string;
|
|
13
|
+
|
|
14
|
+
type WalletBalanceKind = "paid" | "tier";
|
|
15
|
+
type WalletDotProps = {
|
|
16
|
+
kind: WalletBalanceKind;
|
|
17
|
+
className?: string;
|
|
18
|
+
};
|
|
19
|
+
declare const WalletDot: FC<WalletDotProps>;
|
|
20
|
+
type WalletBalanceCardProps = {
|
|
21
|
+
kind: WalletBalanceKind;
|
|
22
|
+
label: ReactNode;
|
|
23
|
+
value: ReactNode;
|
|
24
|
+
info?: ReactNode;
|
|
25
|
+
footer?: ReactNode;
|
|
26
|
+
className?: string;
|
|
27
|
+
};
|
|
28
|
+
declare const WalletBalanceCard: FC<WalletBalanceCardProps>;
|
|
29
|
+
|
|
30
|
+
export { PAID_BALANCE_CHART_COLOR, PaidChip, TIER_BALANCE_CHART_COLOR, TierChip, WalletBalanceCard, type WalletBalanceCardProps, type WalletChipProps, WalletDot, type WalletDotProps, formatPollen };
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// src/lib/cn.ts
|
|
2
|
+
import { clsx } from "clsx";
|
|
3
|
+
import { extendTailwindMerge } from "tailwind-merge";
|
|
4
|
+
var twMerge = extendTailwindMerge({ prefix: "polli" });
|
|
5
|
+
function cn(...inputs) {
|
|
6
|
+
return twMerge(clsx(...inputs));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// src/primitives/Chip.tsx
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
var chipSizes = {
|
|
12
|
+
sm: "polli:px-2 polli:py-0.5 polli:text-xs",
|
|
13
|
+
md: "polli:px-2.5 polli:py-0.5 polli:text-sm",
|
|
14
|
+
lg: "polli:px-3 polli:py-1 polli:text-sm"
|
|
15
|
+
};
|
|
16
|
+
var intentClasses = {
|
|
17
|
+
news: "polli:bg-[oklch(0.935_0.06_158)] polli:text-[oklch(0.46_0.13_158)]",
|
|
18
|
+
alpha: "polli:bg-[oklch(0.93_0.06_300)] polli:text-[oklch(0.42_0.18_300)]",
|
|
19
|
+
neutral: "polli:border polli:border-gray-400/70 polli:bg-gray-100/80 polli:text-gray-900"
|
|
20
|
+
};
|
|
21
|
+
var Chip = ({
|
|
22
|
+
theme,
|
|
23
|
+
intent,
|
|
24
|
+
size = "md",
|
|
25
|
+
className,
|
|
26
|
+
children,
|
|
27
|
+
...rest
|
|
28
|
+
}) => {
|
|
29
|
+
const intentClass = intent ? intentClasses[intent] : "polli:bg-theme-bg-active polli:text-theme-text-strong";
|
|
30
|
+
return /* @__PURE__ */ jsx(
|
|
31
|
+
"span",
|
|
32
|
+
{
|
|
33
|
+
...rest,
|
|
34
|
+
"data-theme": theme,
|
|
35
|
+
className: cn(
|
|
36
|
+
"polli:inline-flex polli:shrink-0 polli:items-center polli:gap-1 polli:rounded-lg polli:font-medium polli:leading-normal",
|
|
37
|
+
chipSizes[size],
|
|
38
|
+
intentClass,
|
|
39
|
+
className
|
|
40
|
+
),
|
|
41
|
+
children
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// src/modules/wallet/chips.tsx
|
|
47
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
48
|
+
var PaidChip = ({
|
|
49
|
+
className,
|
|
50
|
+
children,
|
|
51
|
+
...props
|
|
52
|
+
}) => /* @__PURE__ */ jsx2(Chip, { ...props, className: cn("polli-wallet-chip-paid", className), children });
|
|
53
|
+
var TierChip = ({
|
|
54
|
+
className,
|
|
55
|
+
children,
|
|
56
|
+
...props
|
|
57
|
+
}) => /* @__PURE__ */ jsx2(Chip, { ...props, className: cn("polli-wallet-chip-tier", className), children });
|
|
58
|
+
|
|
59
|
+
// src/modules/wallet/colors.ts
|
|
60
|
+
var PAID_BALANCE_CHART_COLOR = "var(--polli-color-paid-pale)";
|
|
61
|
+
var TIER_BALANCE_CHART_COLOR = "var(--polli-color-tier-pale)";
|
|
62
|
+
|
|
63
|
+
// src/modules/wallet/format-pollen.ts
|
|
64
|
+
var BUDGET = 5;
|
|
65
|
+
var MAX_DECIMALS = 4;
|
|
66
|
+
var COMPACT_THRESHOLD = 1e5;
|
|
67
|
+
function floorTo(value, decimals) {
|
|
68
|
+
const factor = 10 ** decimals;
|
|
69
|
+
return Math.floor(value * factor) / factor;
|
|
70
|
+
}
|
|
71
|
+
function formatCompact(value) {
|
|
72
|
+
const abs = Math.abs(value);
|
|
73
|
+
const sign = value < 0 ? "-" : "";
|
|
74
|
+
const [unit, scale] = abs >= 1e9 ? ["B", 1e9] : abs >= 1e6 ? ["M", 1e6] : ["K", 1e3];
|
|
75
|
+
const ratio = abs / scale;
|
|
76
|
+
const intDigits = Math.max(1, Math.floor(Math.log10(ratio)) + 1);
|
|
77
|
+
const decimals = Math.max(0, 3 - intDigits);
|
|
78
|
+
const floored = floorTo(ratio, decimals);
|
|
79
|
+
return `${sign}${Number(floored.toFixed(decimals)).toString()}${unit}`;
|
|
80
|
+
}
|
|
81
|
+
function formatPollen(value) {
|
|
82
|
+
if (!Number.isFinite(value) || value === 0) return "0";
|
|
83
|
+
const abs = Math.abs(value);
|
|
84
|
+
if (abs >= COMPACT_THRESHOLD) return formatCompact(value);
|
|
85
|
+
const intDigits = abs >= 1 ? Math.floor(Math.log10(abs)) + 1 : 1;
|
|
86
|
+
const decimals = Math.min(MAX_DECIMALS, Math.max(0, BUDGET - intDigits));
|
|
87
|
+
const floored = floorTo(value, decimals);
|
|
88
|
+
if (floored === 0) return "0";
|
|
89
|
+
return Number(floored.toFixed(decimals)).toString();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// src/modules/wallet/wallet-display.tsx
|
|
93
|
+
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
94
|
+
var walletPanelClasses = {
|
|
95
|
+
paid: "polli-wallet-panel-paid",
|
|
96
|
+
tier: "polli-wallet-panel-tier"
|
|
97
|
+
};
|
|
98
|
+
var walletTextClasses = {
|
|
99
|
+
paid: "polli-wallet-text-paid",
|
|
100
|
+
tier: "polli-wallet-text-tier"
|
|
101
|
+
};
|
|
102
|
+
var WalletDot = ({ kind, className }) => /* @__PURE__ */ jsx3(
|
|
103
|
+
"span",
|
|
104
|
+
{
|
|
105
|
+
className: cn(
|
|
106
|
+
"polli:h-2 polli:w-2 polli:rounded-full",
|
|
107
|
+
kind === "paid" ? "polli-wallet-dot-paid" : "polli-wallet-dot-tier",
|
|
108
|
+
className
|
|
109
|
+
),
|
|
110
|
+
"aria-hidden": "true"
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
var WalletBalanceCard = ({
|
|
114
|
+
kind,
|
|
115
|
+
label,
|
|
116
|
+
value,
|
|
117
|
+
info,
|
|
118
|
+
footer,
|
|
119
|
+
className
|
|
120
|
+
}) => /* @__PURE__ */ jsxs(
|
|
121
|
+
"div",
|
|
122
|
+
{
|
|
123
|
+
className: cn(
|
|
124
|
+
"polli:rounded-xl polli:p-4",
|
|
125
|
+
walletPanelClasses[kind],
|
|
126
|
+
className
|
|
127
|
+
),
|
|
128
|
+
children: [
|
|
129
|
+
/* @__PURE__ */ jsxs("span", { className: "polli:flex polli:items-center polli:gap-2", children: [
|
|
130
|
+
/* @__PURE__ */ jsx3(WalletDot, { kind }),
|
|
131
|
+
/* @__PURE__ */ jsx3("span", { className: "polli:text-sm polli:font-bold polli:uppercase polli:tracking-wide polli:text-amber-900", children: label }),
|
|
132
|
+
info
|
|
133
|
+
] }),
|
|
134
|
+
/* @__PURE__ */ jsx3(
|
|
135
|
+
"div",
|
|
136
|
+
{
|
|
137
|
+
className: cn(
|
|
138
|
+
"polli-wallet-balance-value polli:mt-1 polli:font-bold polli:leading-none polli:tracking-tight polli:tabular-nums",
|
|
139
|
+
walletTextClasses[kind]
|
|
140
|
+
),
|
|
141
|
+
children: value
|
|
142
|
+
}
|
|
143
|
+
),
|
|
144
|
+
footer && /* @__PURE__ */ jsx3("div", { className: "polli:mt-1.5 polli:text-sm polli:font-bold polli:tabular-nums polli:text-green-700", children: footer })
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
export {
|
|
149
|
+
PAID_BALANCE_CHART_COLOR,
|
|
150
|
+
PaidChip,
|
|
151
|
+
TIER_BALANCE_CHART_COLOR,
|
|
152
|
+
TierChip,
|
|
153
|
+
WalletBalanceCard,
|
|
154
|
+
WalletDot,
|
|
155
|
+
formatPollen
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/cn.ts","../../src/primitives/Chip.tsx","../../src/modules/wallet/chips.tsx","../../src/modules/wallet/colors.ts","../../src/modules/wallet/format-pollen.ts","../../src/modules/wallet/wallet-display.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({ prefix: \"polli\" });\n\n/** Internal class merge for polli:-prefixed package primitive classes. */\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(...inputs));\n}\n","import type { ComponentPropsWithoutRef, FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport type { ThemeName } from \"../theme.ts\";\n\n/** Semantic chip labels for status and metadata badges. */\ntype ChipIntent = \"news\" | \"alpha\" | \"neutral\";\n\nconst chipSizes = {\n sm: \"polli:px-2 polli:py-0.5 polli:text-xs\",\n md: \"polli:px-2.5 polli:py-0.5 polli:text-sm\",\n lg: \"polli:px-3 polli:py-1 polli:text-sm\",\n} as const;\n\nconst intentClasses: Record<ChipIntent, string> = {\n news: \"polli:bg-[oklch(0.935_0.06_158)] polli:text-[oklch(0.46_0.13_158)]\",\n alpha: \"polli:bg-[oklch(0.93_0.06_300)] polli:text-[oklch(0.42_0.18_300)]\",\n neutral:\n \"polli:border polli:border-gray-400/70 polli:bg-gray-100/80 polli:text-gray-900\",\n};\n\nexport type ChipProps = ComponentPropsWithoutRef<\"span\"> & {\n /** Override the cascade theme for this chip's subtree. */\n theme?: ThemeName;\n /** Semantic intent. Wins over `theme` when set. */\n intent?: ChipIntent;\n size?: keyof typeof chipSizes;\n};\n\n// Static, rectangular colored container. Round shapes are reserved for buttons.\n// Reads `bg-theme-bg-active` / `text-theme-text-strong` from the cascade unless\n// `intent` is set (semantic, theme-independent).\nexport const Chip: FC<ChipProps> = ({\n theme,\n intent,\n size = \"md\",\n className,\n children,\n ...rest\n}) => {\n const intentClass = intent\n ? intentClasses[intent]\n : \"polli:bg-theme-bg-active polli:text-theme-text-strong\";\n return (\n <span\n {...rest}\n data-theme={theme}\n className={cn(\n \"polli:inline-flex polli:shrink-0 polli:items-center polli:gap-1 polli:rounded-lg polli:font-medium polli:leading-normal\",\n chipSizes[size],\n intentClass,\n className,\n )}\n >\n {children}\n </span>\n );\n};\n","import type { FC } from \"react\";\nimport { cn } from \"../../lib/cn.ts\";\nimport { Chip, type ChipProps } from \"../../primitives/Chip.tsx\";\n\nexport type WalletChipProps = Omit<ChipProps, \"intent\">;\n\nexport const PaidChip: FC<WalletChipProps> = ({\n className,\n children,\n ...props\n}) => (\n <Chip {...props} className={cn(\"polli-wallet-chip-paid\", className)}>\n {children}\n </Chip>\n);\n\nexport const TierChip: FC<WalletChipProps> = ({\n className,\n children,\n ...props\n}) => (\n <Chip {...props} className={cn(\"polli-wallet-chip-tier\", className)}>\n {children}\n </Chip>\n);\n","export const PAID_BALANCE_CHART_COLOR = \"var(--polli-color-paid-pale)\";\nexport const TIER_BALANCE_CHART_COLOR = \"var(--polli-color-tier-pale)\";\n","// 5-digit budget for pollen display. Integer takes its space, decimals fill\n// the remainder (capped at 4), floor toward -infinity, trailing zeros stripped.\n// Integers needing >=6 digits switch to compact (K/M/B, 3 sig figs).\n// Decimal point and minus sign do not count toward the budget.\n\nconst BUDGET = 5;\nconst MAX_DECIMALS = 4;\nconst COMPACT_THRESHOLD = 100_000;\n\nfunction floorTo(value: number, decimals: number): number {\n const factor = 10 ** decimals;\n return Math.floor(value * factor) / factor;\n}\n\nfunction formatCompact(value: number): string {\n const abs = Math.abs(value);\n const sign = value < 0 ? \"-\" : \"\";\n const [unit, scale] =\n abs >= 1e9\n ? ([\"B\", 1e9] as const)\n : abs >= 1e6\n ? ([\"M\", 1e6] as const)\n : ([\"K\", 1e3] as const);\n const ratio = abs / scale;\n const intDigits = Math.max(1, Math.floor(Math.log10(ratio)) + 1);\n const decimals = Math.max(0, 3 - intDigits);\n const floored = floorTo(ratio, decimals);\n return `${sign}${Number(floored.toFixed(decimals)).toString()}${unit}`;\n}\n\nexport function formatPollen(value: number): string {\n if (!Number.isFinite(value) || value === 0) return \"0\";\n\n const abs = Math.abs(value);\n\n if (abs >= COMPACT_THRESHOLD) return formatCompact(value);\n\n const intDigits = abs >= 1 ? Math.floor(Math.log10(abs)) + 1 : 1;\n const decimals = Math.min(MAX_DECIMALS, Math.max(0, BUDGET - intDigits));\n const floored = floorTo(value, decimals);\n if (floored === 0) return \"0\";\n return Number(floored.toFixed(decimals)).toString();\n}\n","import type { FC, ReactNode } from \"react\";\nimport { cn } from \"../../lib/cn.ts\";\n\ntype WalletBalanceKind = \"paid\" | \"tier\";\n\nconst walletPanelClasses: Record<WalletBalanceKind, string> = {\n paid: \"polli-wallet-panel-paid\",\n tier: \"polli-wallet-panel-tier\",\n};\n\nconst walletTextClasses: Record<WalletBalanceKind, string> = {\n paid: \"polli-wallet-text-paid\",\n tier: \"polli-wallet-text-tier\",\n};\n\nexport type WalletDotProps = {\n kind: WalletBalanceKind;\n className?: string;\n};\n\nexport const WalletDot: FC<WalletDotProps> = ({ kind, className }) => (\n <span\n className={cn(\n \"polli:h-2 polli:w-2 polli:rounded-full\",\n kind === \"paid\" ? \"polli-wallet-dot-paid\" : \"polli-wallet-dot-tier\",\n className,\n )}\n aria-hidden=\"true\"\n />\n);\n\nexport type WalletBalanceCardProps = {\n kind: WalletBalanceKind;\n label: ReactNode;\n value: ReactNode;\n info?: ReactNode;\n footer?: ReactNode;\n className?: string;\n};\n\nexport const WalletBalanceCard: FC<WalletBalanceCardProps> = ({\n kind,\n label,\n value,\n info,\n footer,\n className,\n}) => (\n <div\n className={cn(\n \"polli:rounded-xl polli:p-4\",\n walletPanelClasses[kind],\n className,\n )}\n >\n <span className=\"polli:flex polli:items-center polli:gap-2\">\n <WalletDot kind={kind} />\n <span className=\"polli:text-sm polli:font-bold polli:uppercase polli:tracking-wide polli:text-amber-900\">\n {label}\n </span>\n {info}\n </span>\n <div\n className={cn(\n \"polli-wallet-balance-value polli:mt-1 polli:font-bold polli:leading-none polli:tracking-tight polli:tabular-nums\",\n walletTextClasses[kind],\n )}\n >\n {value}\n </div>\n {footer && (\n <div className=\"polli:mt-1.5 polli:text-sm polli:font-bold polli:tabular-nums polli:text-green-700\">\n {footer}\n </div>\n )}\n </div>\n);\n"],"mappings":"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","names":["jsx","jsx"]}
|