@zerodev/react-ui 0.0.4 → 0.0.6
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/dist/_types/components/DataRow/index.d.ts +7 -2
- package/dist/_types/components/DataRow/index.d.ts.map +1 -1
- package/dist/_types/components/InfoCard/index.d.ts +17 -0
- package/dist/_types/components/InfoCard/index.d.ts.map +1 -0
- package/dist/_types/components/Pill/index.d.ts.map +1 -1
- package/dist/_types/components/ProgressStep/index.d.ts +20 -0
- package/dist/_types/components/ProgressStep/index.d.ts.map +1 -0
- package/dist/_types/components/Screen/index.d.ts +4 -1
- package/dist/_types/components/Screen/index.d.ts.map +1 -1
- package/dist/_types/components/Section/MessageDetails/index.d.ts +5 -0
- package/dist/_types/components/Section/MessageDetails/index.d.ts.map +1 -0
- package/dist/_types/components/Section/index.d.ts +11 -0
- package/dist/_types/components/Section/index.d.ts.map +1 -0
- package/dist/_types/components/Tooltip/index.d.ts +43 -0
- package/dist/_types/components/Tooltip/index.d.ts.map +1 -0
- package/dist/_types/components/TopNav/index.d.ts.map +1 -1
- package/dist/_types/index.d.ts +6 -1
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/utils/common.d.ts +4 -0
- package/dist/_types/utils/common.d.ts.map +1 -1
- package/dist/index.cjs +16 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2791 -2159
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/DataRow/index.tsx +67 -35
- package/src/components/InfoCard/index.tsx +104 -0
- package/src/components/Pill/index.tsx +5 -3
- package/src/components/ProgressStep/index.tsx +121 -0
- package/src/components/Screen/index.tsx +23 -2
- package/src/components/Section/MessageDetails/index.tsx +19 -0
- package/src/components/Section/index.tsx +50 -0
- package/src/components/Tooltip/index.tsx +94 -0
- package/src/components/TopNav/index.tsx +8 -2
- package/src/index.ts +26 -1
- package/src/utils/common.ts +15 -0
- package/tailwind.config.ts +8 -0
package/dist/styles.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.2 | 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-font-weight: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}}}@layer theme{:root,:host{--zd-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--zd-color-gray-700:oklch(37.3% .034 259.733);--zd-color-gray-900:oklch(21% .034 264.665);--zd-color-white:#fff;--zd-spacing:.25rem;--zd-text-sm--line-height:calc(1.25 / .875);--zd-text-base--line-height:calc(1.5 / 1);--zd-text-lg--line-height:calc(1.75 / 1.125);--zd-text-2xl--line-height:calc(2 / 1.5);--zd-font-weight-medium:500;--zd-font-weight-semibold:600;--zd-font-weight-bold:700;--zd-radius-md:.375rem;--zd-radius-lg:.5rem;--zd-radius-xl:.75rem;--zd-radius-2xl:1rem;--zd-radius-3xl:1.5rem;--zd-radius-4xl:2rem;--zd-default-transition-duration:.15s;--zd-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--zd-default-font-family:sans-serif;--zd-default-mono-font-family:var(--zd-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--zd-default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--zd-default-font-feature-settings,normal);font-variation-settings:var(--zd-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--zd-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--zd-default-mono-font-feature-settings,normal);font-variation-settings:var(--zd-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.zd\:pointer-events-none{pointer-events:none}.zd\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.zd\:absolute{position:absolute}.zd\:relative{position:relative}.zd\:inset-0{inset:0}.zd\:top-0{top:0}.zd\:top-1\/2{top:50%}.zd\:top-4{top:calc(var(--zd-spacing) * 4)}.zd\:right-0{right:0}.zd\:bottom-0{bottom:0}.zd\:left-0{left:0}.zd\:left-1\/2{left:50%}.zd\:z-0{z-index:0}.zd\:z-10{z-index:10}.zd\:z-20{z-index:20}.zd\:z-50{z-index:50}.zd\:m-1\.5{margin:calc(var(--zd-spacing) * 1.5)}.zd\:mx-2{margin-inline:calc(var(--zd-spacing) * 2)}.zd\:my-1{margin-block:var(--zd-spacing)}.zd\:-mr-4{margin-right:calc(var(--zd-spacing) * -4)}.zd\:mb-2{margin-bottom:calc(var(--zd-spacing) * 2)}.zd\:flex{display:flex}.zd\:grid{display:grid}.zd\:inline-flex{display:inline-flex}.zd\:size-4{width:calc(var(--zd-spacing) * 4);height:calc(var(--zd-spacing) * 4)}.zd\:size-8\.5{width:calc(var(--zd-spacing) * 8.5);height:calc(var(--zd-spacing) * 8.5)}.zd\:size-11{width:calc(var(--zd-spacing) * 11);height:calc(var(--zd-spacing) * 11)}.zd\:size-full{width:100%;height:100%}.zd\:h-2\.5{height:calc(var(--zd-spacing) * 2.5)}.zd\:h-3{height:calc(var(--zd-spacing) * 3)}.zd\:h-3\.5{height:calc(var(--zd-spacing) * 3.5)}.zd\:h-4{height:calc(var(--zd-spacing) * 4)}.zd\:h-4\.5{height:calc(var(--zd-spacing) * 4.5)}.zd\:h-5{height:calc(var(--zd-spacing) * 5)}.zd\:h-6{height:calc(var(--zd-spacing) * 6)}.zd\:h-7{height:calc(var(--zd-spacing) * 7)}.zd\:h-9{height:calc(var(--zd-spacing) * 9)}.zd\:h-10{height:calc(var(--zd-spacing) * 10)}.zd\:h-11{height:calc(var(--zd-spacing) * 11)}.zd\:h-12{height:calc(var(--zd-spacing) * 12)}.zd\:h-13{height:calc(var(--zd-spacing) * 13)}.zd\:h-16{height:calc(var(--zd-spacing) * 16)}.zd\:h-17{height:calc(var(--zd-spacing) * 17)}.zd\:h-32{height:calc(var(--zd-spacing) * 32)}.zd\:h-202\.5{height:calc(var(--zd-spacing) * 202.5)}.zd\:h-full{height:100%}.zd\:h-px{height:1px}.zd\:max-h-80{max-height:calc(var(--zd-spacing) * 80)}.zd\:max-h-full{max-height:100%}.zd\:min-h-0{min-height:0}.zd\:min-h-11{min-height:calc(var(--zd-spacing) * 11)}.zd\:min-h-\[300px\]{min-height:300px}.zd\:w-2\.5{width:calc(var(--zd-spacing) * 2.5)}.zd\:w-3{width:calc(var(--zd-spacing) * 3)}.zd\:w-3\.5{width:calc(var(--zd-spacing) * 3.5)}.zd\:w-4{width:calc(var(--zd-spacing) * 4)}.zd\:w-5{width:calc(var(--zd-spacing) * 5)}.zd\:w-6{width:calc(var(--zd-spacing) * 6)}.zd\:w-9{width:calc(var(--zd-spacing) * 9)}.zd\:w-10{width:calc(var(--zd-spacing) * 10)}.zd\:w-11{width:calc(var(--zd-spacing) * 11)}.zd\:w-12{width:calc(var(--zd-spacing) * 12)}.zd\:w-13{width:calc(var(--zd-spacing) * 13)}.zd\:w-14{width:calc(var(--zd-spacing) * 14)}.zd\:w-24{width:calc(var(--zd-spacing) * 24)}.zd\:w-72{width:calc(var(--zd-spacing) * 72)}.zd\:w-80{width:calc(var(--zd-spacing) * 80)}.zd\:w-100{width:calc(var(--zd-spacing) * 100)}.zd\:w-auto{width:auto}.zd\:w-full{width:100%}.zd\:max-w-full{max-width:100%}.zd\:min-w-0{min-width:0}.zd\:min-w-\[400px\]{min-width:400px}.zd\:flex-1{flex:1}.zd\:shrink-0{flex-shrink:0}.zd\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.zd\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.zd\:animate-skel-pulse{animation:1.1s ease-in-out infinite skel-pulse}.zd\:cursor-not-allowed{cursor:not-allowed}.zd\:cursor-pointer{cursor:pointer}.zd\:resize-none{resize:none}.zd\:flex-col{flex-direction:column}.zd\:flex-row{flex-direction:row}.zd\:flex-wrap{flex-wrap:wrap}.zd\:place-items-center{place-items:center}.zd\:items-center{align-items:center}.zd\:items-end{align-items:flex-end}.zd\:items-start{align-items:flex-start}.zd\:justify-between{justify-content:space-between}.zd\:justify-center{justify-content:center}.zd\:gap-1{gap:var(--zd-spacing)}.zd\:gap-1\.5{gap:calc(var(--zd-spacing) * 1.5)}.zd\:gap-2{gap:calc(var(--zd-spacing) * 2)}.zd\:gap-3{gap:calc(var(--zd-spacing) * 3)}.zd\:gap-4{gap:calc(var(--zd-spacing) * 4)}.zd\:gap-\[5px\]{gap:5px}.zd\:self-end{align-self:flex-end}.zd\:self-start{align-self:flex-start}.zd\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.zd\:overflow-hidden{overflow:hidden}.zd\:overflow-x-hidden{overflow-x:hidden}.zd\:overflow-y-auto{overflow-y:auto}.zd\:rounded-2xl{border-radius:var(--zd-radius-2xl)}.zd\:rounded-3xl{border-radius:var(--zd-radius-3xl)}.zd\:rounded-4xl{border-radius:var(--zd-radius-4xl)}.zd\:rounded-\[14px\]{border-radius:14px}.zd\:rounded-\[32px\]{border-radius:32px}.zd\:rounded-\[38px\]{border-radius:38px}.zd\:rounded-full{border-radius:3.40282e38px}.zd\:rounded-lg{border-radius:var(--zd-radius-lg)}.zd\:rounded-md{border-radius:var(--zd-radius-md)}.zd\:rounded-xl{border-radius:var(--zd-radius-xl)}.zd\:border-\[0\.3px\]{border-style:var(--tw-border-style);border-width:.3px}.zd\:border-offWhite{border-color:#f7f5f0}.zd\:border-white\/0{border-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:border-white\/0{border-color:color-mix(in oklab, var(--zd-color-white) 0%, transparent)}}.zd\:bg-greyScale\/10{background-color:oklab(16.9052% .00636494 .00836386/.1)}.zd\:bg-greyScale\/15{background-color:oklab(16.9052% .00636494 .00836386/.15)}.zd\:bg-greyScale\/20{background-color:oklab(16.9052% .00636494 .00836386/.2)}.zd\:bg-greyScale\/30{background-color:oklab(16.9052% .00636494 .00836386/.3)}.zd\:bg-offWhite\/50{background-color:oklab(97.0302% .000165075 .00696582/.5)}.zd\:bg-orange\/10{background-color:oklab(70.9342% .114827 .116983/.1)}.zd\:bg-solarOrange{background-color:#e76000}.zd\:bg-transparent{background-color:#0000}.zd\:bg-white,.zd\:bg-white\/20{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:bg-white\/20{background-color:color-mix(in oklab, var(--zd-color-white) 20%, transparent)}}.zd\:bg-white\/40{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:bg-white\/40{background-color:color-mix(in oklab, var(--zd-color-white) 40%, transparent)}}.zd\:bg-white\/70{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:bg-white\/70{background-color:color-mix(in oklab, var(--zd-color-white) 70%, transparent)}}.zd\:object-contain{object-fit:contain}.zd\:p-0{padding:0}.zd\:p-1{padding:var(--zd-spacing)}.zd\:p-2{padding:calc(var(--zd-spacing) * 2)}.zd\:p-4{padding:calc(var(--zd-spacing) * 4)}.zd\:p-6{padding:calc(var(--zd-spacing) * 6)}.zd\:px-0{padding-inline:0}.zd\:px-2{padding-inline:calc(var(--zd-spacing) * 2)}.zd\:px-3{padding-inline:calc(var(--zd-spacing) * 3)}.zd\:px-4{padding-inline:calc(var(--zd-spacing) * 4)}.zd\:px-5{padding-inline:calc(var(--zd-spacing) * 5)}.zd\:px-6{padding-inline:calc(var(--zd-spacing) * 6)}.zd\:py-1{padding-block:var(--zd-spacing)}.zd\:py-2{padding-block:calc(var(--zd-spacing) * 2)}.zd\:py-3{padding-block:calc(var(--zd-spacing) * 3)}.zd\:py-3\.5{padding-block:calc(var(--zd-spacing) * 3.5)}.zd\:py-5{padding-block:calc(var(--zd-spacing) * 5)}.zd\:pr-1{padding-right:var(--zd-spacing)}.zd\:pr-2{padding-right:calc(var(--zd-spacing) * 2)}.zd\:pr-4{padding-right:calc(var(--zd-spacing) * 4)}.zd\:pl-1{padding-left:var(--zd-spacing)}.zd\:pl-2{padding-left:calc(var(--zd-spacing) * 2)}.zd\:pl-4{padding-left:calc(var(--zd-spacing) * 4)}.zd\:text-left{text-align:left}.zd\:font-roboto{font-family:Roboto,sans-serif}.zd\:font-sans{font-family:sans-serif}.zd\:text-2xl{font-size:calc(20px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-2xl--line-height))}.zd\:text-base{font-size:calc(14px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-base--line-height))}.zd\:text-body1{font-size:calc(16px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-body2{font-size:calc(14px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-body3{font-size:calc(12px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-body4{font-size:calc(10px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-h1{font-size:calc(42px * var(--zd-density));line-height:var(--tw-leading,110%)}.zd\:text-h2{font-size:calc(28px * var(--zd-density));line-height:var(--tw-leading,110%)}.zd\:text-h3{font-size:calc(18px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-lg{font-size:calc(16px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-lg--line-height))}.zd\:text-sm{font-size:calc(12px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-sm--line-height))}.zd\:font-bold{--tw-font-weight:var(--zd-font-weight-bold);font-weight:var(--zd-font-weight-bold)}.zd\:font-medium{--tw-font-weight:var(--zd-font-weight-medium);font-weight:var(--zd-font-weight-medium)}.zd\:font-semibold{--tw-font-weight:var(--zd-font-weight-semibold);font-weight:var(--zd-font-weight-semibold)}.zd\:break-all{word-break:break-all}.zd\:whitespace-nowrap{white-space:nowrap}.zd\:text-gray-700{color:var(--zd-color-gray-700)}.zd\:text-gray-900{color:var(--zd-color-gray-900)}.zd\:text-greyScale{color:#130e0b}.zd\:text-greyScale\/50{color:oklab(16.9052% .00636494 .00836386/.5)}.zd\:text-greyScale\/90{color:oklab(16.9052% .00636494 .00836386/.9)}.zd\:text-negative{color:#ff4221}.zd\:text-orange{color:#f27b3e}.zd\:text-positive{color:#228300}.zd\:text-solarOrange{color:#e76000}.zd\:text-white{color:var(--zd-color-white)}.zd\:caret-gray-900{caret-color:var(--zd-color-gray-900)}.zd\:opacity-50{opacity:.5}.zd\:shadow-\[inset_0_-4px_4px_0_rgba\(255\,255\,255\,0\.1\)\,inset_0_3px_4px_0_rgba\(0\,0\,0\,0\.02\)\],.zd\:shadow-\[inset_0_-4px_4px_0_rgba\(255\,255\,255\,0\.10\)\,inset_0_3px_4px_0_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:inset 0 -4px 4px 0 var(--tw-shadow-color,#ffffff1a), inset 0 3px 4px 0 var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.zd\: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)}.zd\:backdrop-blur-\[15px\]{--tw-backdrop-blur:blur(15px);-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,)}.zd\: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(--zd-default-transition-timing-function));transition-duration:var(--tw-duration,var(--zd-default-transition-duration))}.zd\:outline-none{--tw-outline-style:none;outline-style:none}.zd\:placeholder\:text-gray-900\/50::placeholder{color:var(--zd-color-gray-900)}@supports (color:color-mix(in lab, red, red)){.zd\:placeholder\:text-gray-900\/50::placeholder{color:color-mix(in oklab, var(--zd-color-gray-900) 50%, transparent)}}@media (hover:hover){.zd\:hover\:bg-offWhite\/40:hover{background-color:oklab(97.0302% .000165075 .00696582/.4)}.zd\:hover\:bg-white\/5:hover{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:hover\:bg-white\/5:hover{background-color:color-mix(in oklab, var(--zd-color-white) 5%, transparent)}}.zd\:hover\:bg-white\/20:hover{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:hover\:bg-white\/20:hover{background-color:color-mix(in oklab, var(--zd-color-white) 20%, transparent)}}}.zd\:active\:bg-white\/10:active{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:active\:bg-white\/10:active{background-color:color-mix(in oklab, var(--zd-color-white) 10%, transparent)}}.zd\:active\:bg-white\/30:active{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:active\:bg-white\/30:active{background-color:color-mix(in oklab, var(--zd-color-white) 30%, transparent)}}.zd\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.zd\:disabled\:opacity-50:disabled{opacity:.5}.zd\:data-\[highlighted\]\:bg-offWhite\/40[data-highlighted]{background-color:oklab(97.0302% .000165075 .00696582/.4)}.zd\:data-\[state\=checked\]\:bg-offWhite\/60[data-state=checked]{background-color:oklab(97.0302% .000165075 .00696582/.6)}.zd\:data-\[state\=closed\]\:animate-backdrop-out[data-state=closed]{animation:.2s ease-out forwards backdrop-out}.zd\:data-\[state\=closed\]\:animate-sheet-out[data-state=closed]{animation:.25s cubic-bezier(.32,.72,0,1) forwards sheet-out}.zd\:data-\[state\=open\]\:pointer-events-auto[data-state=open]{pointer-events:auto}.zd\:data-\[state\=open\]\:animate-backdrop-in[data-state=open]{animation:.2s ease-out forwards backdrop-in}.zd\:data-\[state\=open\]\:animate-popper-in[data-state=open]{animation:.16s ease-out both popper-in}.zd\:data-\[state\=open\]\:animate-sheet-in[data-state=open]{animation:.3s cubic-bezier(.32,.72,0,1) forwards sheet-in}}:root{--zd-density:1;--zd-spacing:calc(.25rem * var(--zd-density))}@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-font-weight{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}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheet-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes skel-pulse{0%,to{opacity:.65}50%{opacity:1}}@keyframes popper-in{0%{opacity:0;transform:scale(.97)translateY(-3px)}to{opacity:1;transform:scale(1)translateY(0)}}
|
|
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-font-weight: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}}}@layer theme{:root,:host{--zd-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--zd-color-gray-700:oklch(37.3% .034 259.733);--zd-color-gray-900:oklch(21% .034 264.665);--zd-color-white:#fff;--zd-spacing:.25rem;--zd-text-sm--line-height:calc(1.25 / .875);--zd-text-base--line-height:calc(1.5 / 1);--zd-text-lg--line-height:calc(1.75 / 1.125);--zd-text-2xl--line-height:calc(2 / 1.5);--zd-font-weight-medium:500;--zd-font-weight-semibold:600;--zd-font-weight-bold:700;--zd-radius-md:.375rem;--zd-radius-lg:.5rem;--zd-radius-xl:.75rem;--zd-radius-2xl:1rem;--zd-radius-3xl:1.5rem;--zd-radius-4xl:2rem;--zd-animate-spin:spin 1s linear infinite;--zd-default-transition-duration:.15s;--zd-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--zd-default-font-family:sans-serif;--zd-default-mono-font-family:var(--zd-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--zd-default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--zd-default-font-feature-settings,normal);font-variation-settings:var(--zd-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--zd-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--zd-default-mono-font-feature-settings,normal);font-variation-settings:var(--zd-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.zd\:pointer-events-none{pointer-events:none}.zd\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.zd\:absolute{position:absolute}.zd\:relative{position:relative}.zd\:inset-0{inset:0}.zd\:top-0{top:0}.zd\:top-1\/2{top:50%}.zd\:right-0{right:0}.zd\:right-1{right:var(--zd-spacing)}.zd\:bottom-0{bottom:0}.zd\:bottom-1{bottom:var(--zd-spacing)}.zd\:left-0{left:0}.zd\:left-1\/2{left:50%}.zd\:isolate{isolation:isolate}.zd\:z-0{z-index:0}.zd\:z-10{z-index:10}.zd\:z-20{z-index:20}.zd\:z-50{z-index:50}.zd\:m-1\.5{margin:calc(var(--zd-spacing) * 1.5)}.zd\:-mx-4{margin-inline:calc(var(--zd-spacing) * -4)}.zd\:mx-2{margin-inline:calc(var(--zd-spacing) * 2)}.zd\:my-1{margin-block:var(--zd-spacing)}.zd\:mt-1{margin-top:var(--zd-spacing)}.zd\:mb-2{margin-bottom:calc(var(--zd-spacing) * 2)}.zd\:flex{display:flex}.zd\:grid{display:grid}.zd\:inline-block{display:inline-block}.zd\:inline-flex{display:inline-flex}.zd\:size-3{width:calc(var(--zd-spacing) * 3);height:calc(var(--zd-spacing) * 3)}.zd\:size-4{width:calc(var(--zd-spacing) * 4);height:calc(var(--zd-spacing) * 4)}.zd\:size-8\.5{width:calc(var(--zd-spacing) * 8.5);height:calc(var(--zd-spacing) * 8.5)}.zd\:size-11{width:calc(var(--zd-spacing) * 11);height:calc(var(--zd-spacing) * 11)}.zd\:size-full{width:100%;height:100%}.zd\:h-2\.5{height:calc(var(--zd-spacing) * 2.5)}.zd\:h-3{height:calc(var(--zd-spacing) * 3)}.zd\:h-3\.5{height:calc(var(--zd-spacing) * 3.5)}.zd\:h-4{height:calc(var(--zd-spacing) * 4)}.zd\:h-4\.5{height:calc(var(--zd-spacing) * 4.5)}.zd\:h-5{height:calc(var(--zd-spacing) * 5)}.zd\:h-6{height:calc(var(--zd-spacing) * 6)}.zd\:h-7{height:calc(var(--zd-spacing) * 7)}.zd\:h-9{height:calc(var(--zd-spacing) * 9)}.zd\:h-10{height:calc(var(--zd-spacing) * 10)}.zd\:h-11{height:calc(var(--zd-spacing) * 11)}.zd\:h-12{height:calc(var(--zd-spacing) * 12)}.zd\:h-13{height:calc(var(--zd-spacing) * 13)}.zd\:h-16{height:calc(var(--zd-spacing) * 16)}.zd\:h-17{height:calc(var(--zd-spacing) * 17)}.zd\:h-32{height:calc(var(--zd-spacing) * 32)}.zd\:h-202\.5{height:calc(var(--zd-spacing) * 202.5)}.zd\:h-\[52px\]{height:52px}.zd\:h-\[84px\]{height:84px}.zd\:h-full{height:100%}.zd\:h-px{height:1px}.zd\:max-h-80{max-height:calc(var(--zd-spacing) * 80)}.zd\:max-h-full{max-height:100%}.zd\:min-h-0{min-height:0}.zd\:min-h-11{min-height:calc(var(--zd-spacing) * 11)}.zd\:min-h-\[300px\]{min-height:300px}.zd\:w-2\.5{width:calc(var(--zd-spacing) * 2.5)}.zd\:w-3{width:calc(var(--zd-spacing) * 3)}.zd\:w-3\.5{width:calc(var(--zd-spacing) * 3.5)}.zd\:w-4{width:calc(var(--zd-spacing) * 4)}.zd\:w-5{width:calc(var(--zd-spacing) * 5)}.zd\:w-6{width:calc(var(--zd-spacing) * 6)}.zd\:w-9{width:calc(var(--zd-spacing) * 9)}.zd\:w-10{width:calc(var(--zd-spacing) * 10)}.zd\:w-11{width:calc(var(--zd-spacing) * 11)}.zd\:w-12{width:calc(var(--zd-spacing) * 12)}.zd\:w-13{width:calc(var(--zd-spacing) * 13)}.zd\:w-14{width:calc(var(--zd-spacing) * 14)}.zd\:w-24{width:calc(var(--zd-spacing) * 24)}.zd\:w-72{width:calc(var(--zd-spacing) * 72)}.zd\:w-80{width:calc(var(--zd-spacing) * 80)}.zd\:w-100{width:calc(var(--zd-spacing) * 100)}.zd\:w-auto{width:auto}.zd\:w-full{width:100%}.zd\:w-px{width:1px}.zd\:max-w-\[220px\]{max-width:220px}.zd\:max-w-full{max-width:100%}.zd\:min-w-0{min-width:0}.zd\:min-w-\[400px\]{min-width:400px}.zd\:flex-1{flex:1}.zd\:shrink-0{flex-shrink:0}.zd\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.zd\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.zd\:animate-skel-pulse{animation:1.1s ease-in-out infinite skel-pulse}.zd\:animate-spin{animation:var(--zd-animate-spin)}.zd\:cursor-help{cursor:help}.zd\:cursor-not-allowed{cursor:not-allowed}.zd\:cursor-pointer{cursor:pointer}.zd\:resize-none{resize:none}.zd\:flex-col{flex-direction:column}.zd\:flex-row{flex-direction:row}.zd\:flex-wrap{flex-wrap:wrap}.zd\:place-items-center{place-items:center}.zd\:items-center{align-items:center}.zd\:items-end{align-items:flex-end}.zd\:items-start{align-items:flex-start}.zd\:justify-between{justify-content:space-between}.zd\:justify-center{justify-content:center}.zd\:gap-1{gap:var(--zd-spacing)}.zd\:gap-1\.5{gap:calc(var(--zd-spacing) * 1.5)}.zd\:gap-2{gap:calc(var(--zd-spacing) * 2)}.zd\:gap-3{gap:calc(var(--zd-spacing) * 3)}.zd\:gap-4{gap:calc(var(--zd-spacing) * 4)}.zd\:gap-\[5px\]{gap:5px}.zd\:self-end{align-self:flex-end}.zd\:self-start{align-self:flex-start}.zd\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.zd\:overflow-hidden{overflow:hidden}.zd\:overflow-x-hidden{overflow-x:hidden}.zd\:overflow-y-auto{overflow-y:auto}.zd\:rounded-2xl{border-radius:var(--zd-radius-2xl)}.zd\:rounded-3xl{border-radius:var(--zd-radius-3xl)}.zd\:rounded-4xl{border-radius:var(--zd-radius-4xl)}.zd\:rounded-\[14px\]{border-radius:14px}.zd\:rounded-\[32px\]{border-radius:32px}.zd\:rounded-\[38px\]{border-radius:38px}.zd\:rounded-full{border-radius:3.40282e38px}.zd\:rounded-lg{border-radius:var(--zd-radius-lg)}.zd\:rounded-md{border-radius:var(--zd-radius-md)}.zd\:rounded-xl{border-radius:var(--zd-radius-xl)}.zd\:border{border-style:var(--tw-border-style);border-width:1px}.zd\:border-\[0\.3px\]{border-style:var(--tw-border-style);border-width:.3px}.zd\:border-greyScale\/30{border-color:oklab(16.9052% .00636494 .00836386/.3)}.zd\:border-offWhite{border-color:#f7f5f0}.zd\:border-white\/0{border-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:border-white\/0{border-color:color-mix(in oklab, var(--zd-color-white) 0%, transparent)}}.zd\:bg-greyScale\/10{background-color:oklab(16.9052% .00636494 .00836386/.1)}.zd\:bg-greyScale\/15{background-color:oklab(16.9052% .00636494 .00836386/.15)}.zd\:bg-greyScale\/20{background-color:oklab(16.9052% .00636494 .00836386/.2)}.zd\:bg-greyScale\/30{background-color:oklab(16.9052% .00636494 .00836386/.3)}.zd\:bg-offWhite\/50{background-color:oklab(97.0302% .000165075 .00696582/.5)}.zd\:bg-orange\/10{background-color:oklab(70.9342% .114827 .116983/.1)}.zd\:bg-solarOrange{background-color:#e76000}.zd\:bg-solarOrange\/60{background-color:oklab(65.138% .131584 .131685/.6)}.zd\:bg-transparent{background-color:#0000}.zd\:bg-white,.zd\:bg-white\/20{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:bg-white\/20{background-color:color-mix(in oklab, var(--zd-color-white) 20%, transparent)}}.zd\:bg-white\/40{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:bg-white\/40{background-color:color-mix(in oklab, var(--zd-color-white) 40%, transparent)}}.zd\:bg-white\/60{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:bg-white\/60{background-color:color-mix(in oklab, var(--zd-color-white) 60%, transparent)}}.zd\:bg-white\/70{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:bg-white\/70{background-color:color-mix(in oklab, var(--zd-color-white) 70%, transparent)}}.zd\:object-contain{object-fit:contain}.zd\:p-0{padding:0}.zd\:p-1{padding:var(--zd-spacing)}.zd\:p-2{padding:calc(var(--zd-spacing) * 2)}.zd\:p-4{padding:calc(var(--zd-spacing) * 4)}.zd\:p-6{padding:calc(var(--zd-spacing) * 6)}.zd\:p-px{padding:1px}.zd\:px-0{padding-inline:0}.zd\:px-2{padding-inline:calc(var(--zd-spacing) * 2)}.zd\:px-3{padding-inline:calc(var(--zd-spacing) * 3)}.zd\:px-4{padding-inline:calc(var(--zd-spacing) * 4)}.zd\:px-5{padding-inline:calc(var(--zd-spacing) * 5)}.zd\:px-6{padding-inline:calc(var(--zd-spacing) * 6)}.zd\:py-1{padding-block:var(--zd-spacing)}.zd\:py-1\.5{padding-block:calc(var(--zd-spacing) * 1.5)}.zd\:py-2{padding-block:calc(var(--zd-spacing) * 2)}.zd\:py-3{padding-block:calc(var(--zd-spacing) * 3)}.zd\:py-3\.5{padding-block:calc(var(--zd-spacing) * 3.5)}.zd\:py-5{padding-block:calc(var(--zd-spacing) * 5)}.zd\:pt-0\.5{padding-top:calc(var(--zd-spacing) * .5)}.zd\:pt-4{padding-top:calc(var(--zd-spacing) * 4)}.zd\:pr-1{padding-right:var(--zd-spacing)}.zd\:pr-2{padding-right:calc(var(--zd-spacing) * 2)}.zd\:pb-4{padding-bottom:calc(var(--zd-spacing) * 4)}.zd\:pl-1{padding-left:var(--zd-spacing)}.zd\:pl-2{padding-left:calc(var(--zd-spacing) * 2)}.zd\:pl-4{padding-left:calc(var(--zd-spacing) * 4)}.zd\:text-center{text-align:center}.zd\:text-left{text-align:left}.zd\:font-roboto{font-family:Roboto,sans-serif}.zd\:font-sans{font-family:sans-serif}.zd\:text-2xl{font-size:calc(20px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-2xl--line-height))}.zd\:text-base{font-size:calc(14px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-base--line-height))}.zd\:text-body1{font-size:calc(16px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-body2{font-size:calc(14px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-body3{font-size:calc(12px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-body4{font-size:calc(10px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-h1{font-size:calc(42px * var(--zd-density));line-height:var(--tw-leading,110%)}.zd\:text-h2{font-size:calc(28px * var(--zd-density));line-height:var(--tw-leading,110%)}.zd\:text-h3{font-size:calc(18px * var(--zd-density));line-height:var(--tw-leading,130%)}.zd\:text-lg{font-size:calc(16px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-lg--line-height))}.zd\:text-sm{font-size:calc(12px * var(--zd-density));line-height:var(--tw-leading,var(--zd-text-sm--line-height))}.zd\:font-bold{--tw-font-weight:var(--zd-font-weight-bold);font-weight:var(--zd-font-weight-bold)}.zd\:font-medium{--tw-font-weight:var(--zd-font-weight-medium);font-weight:var(--zd-font-weight-medium)}.zd\:font-semibold{--tw-font-weight:var(--zd-font-weight-semibold);font-weight:var(--zd-font-weight-semibold)}.zd\:break-all{word-break:break-all}.zd\:whitespace-nowrap{white-space:nowrap}.zd\:text-gray-700{color:var(--zd-color-gray-700)}.zd\:text-gray-900{color:var(--zd-color-gray-900)}.zd\:text-greyScale{color:#130e0b}.zd\:text-greyScale\/50{color:oklab(16.9052% .00636494 .00836386/.5)}.zd\:text-greyScale\/90{color:oklab(16.9052% .00636494 .00836386/.9)}.zd\:text-negative{color:#ff4221}.zd\:text-orange{color:#f27b3e}.zd\:text-positive{color:#228300}.zd\:text-solarOrange{color:#e76000}.zd\:text-white{color:var(--zd-color-white)}.zd\:caret-gray-900{caret-color:var(--zd-color-gray-900)}.zd\:opacity-50{opacity:.5}.zd\:shadow-\[0_8px_22px_-10px_rgba\(25\,17\,11\,0\.45\)\]{--tw-shadow:0 8px 22px -10px var(--tw-shadow-color,#19110b73);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.zd\:shadow-\[inset_0_-4px_4px_0_rgba\(255\,255\,255\,0\.1\)\,inset_0_3px_4px_0_rgba\(0\,0\,0\,0\.02\)\],.zd\:shadow-\[inset_0_-4px_4px_0_rgba\(255\,255\,255\,0\.10\)\,inset_0_3px_4px_0_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:inset 0 -4px 4px 0 var(--tw-shadow-color,#ffffff1a), inset 0 3px 4px 0 var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.zd\:shadow-\[inset_0_3px_4px_0_rgba\(0\,0\,0\,0\.02\)\,inset_0_-4px_4px_0_rgba\(255\,255\,255\,0\.1\)\]{--tw-shadow:inset 0 3px 4px 0 var(--tw-shadow-color,#00000005), inset 0 -4px 4px 0 var(--tw-shadow-color,#ffffff1a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.zd\: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)}.zd\:backdrop-blur-\[15px\]{--tw-backdrop-blur:blur(15px);-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,)}.zd\:backdrop-blur-\[30px\]{--tw-backdrop-blur:blur(30px);-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,)}.zd\: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(--zd-default-transition-timing-function));transition-duration:var(--tw-duration,var(--zd-default-transition-duration))}.zd\:outline-none{--tw-outline-style:none;outline-style:none}.zd\:placeholder\:text-gray-900\/50::placeholder{color:var(--zd-color-gray-900)}@supports (color:color-mix(in lab, red, red)){.zd\:placeholder\:text-gray-900\/50::placeholder{color:color-mix(in oklab, var(--zd-color-gray-900) 50%, transparent)}}@media (hover:hover){.zd\:hover\:bg-offWhite\/40:hover{background-color:oklab(97.0302% .000165075 .00696582/.4)}.zd\:hover\:bg-white\/5:hover{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:hover\:bg-white\/5:hover{background-color:color-mix(in oklab, var(--zd-color-white) 5%, transparent)}}.zd\:hover\:bg-white\/20:hover{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:hover\:bg-white\/20:hover{background-color:color-mix(in oklab, var(--zd-color-white) 20%, transparent)}}}.zd\:active\:bg-white\/10:active{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:active\:bg-white\/10:active{background-color:color-mix(in oklab, var(--zd-color-white) 10%, transparent)}}.zd\:active\:bg-white\/30:active{background-color:var(--zd-color-white)}@supports (color:color-mix(in lab, red, red)){.zd\:active\:bg-white\/30:active{background-color:color-mix(in oklab, var(--zd-color-white) 30%, transparent)}}.zd\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.zd\:disabled\:opacity-50:disabled{opacity:.5}.zd\:data-\[highlighted\]\:bg-offWhite\/40[data-highlighted]{background-color:oklab(97.0302% .000165075 .00696582/.4)}.zd\:data-\[state\=checked\]\:bg-offWhite\/60[data-state=checked]{background-color:oklab(97.0302% .000165075 .00696582/.6)}.zd\:data-\[state\=closed\]\:animate-backdrop-out[data-state=closed]{animation:.2s ease-out forwards backdrop-out}.zd\:data-\[state\=closed\]\:animate-sheet-out[data-state=closed]{animation:.25s cubic-bezier(.32,.72,0,1) forwards sheet-out}.zd\:data-\[state\=delayed-open\]\:animate-popper-in[data-state=delayed-open]{animation:.16s ease-out both popper-in}.zd\:data-\[state\=open\]\:pointer-events-auto[data-state=open]{pointer-events:auto}.zd\:data-\[state\=open\]\:animate-backdrop-in[data-state=open]{animation:.2s ease-out forwards backdrop-in}.zd\:data-\[state\=open\]\:animate-popper-in[data-state=open]{animation:.16s ease-out both popper-in}.zd\:data-\[state\=open\]\:animate-sheet-in[data-state=open]{animation:.3s cubic-bezier(.32,.72,0,1) forwards sheet-in}}:root{--zd-density:1;--zd-spacing:calc(.25rem * var(--zd-density))}@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-font-weight{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}@keyframes spin{to{transform:rotate(360deg)}}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheet-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes skel-pulse{0%,to{opacity:.65}50%{opacity:1}}@keyframes popper-in{0%{opacity:0;transform:scale(.97)translateY(-3px)}to{opacity:1;transform:scale(1)translateY(0)}}
|
package/package.json
CHANGED
|
@@ -3,6 +3,7 @@ import type { ReactNode } from 'react'
|
|
|
3
3
|
import { cn } from '../../utils/common'
|
|
4
4
|
import { Icon } from '../Icon'
|
|
5
5
|
import { Text } from '../Text'
|
|
6
|
+
import { Tooltip } from '../Tooltip'
|
|
6
7
|
|
|
7
8
|
export interface DataRowProps {
|
|
8
9
|
/** Label rendered on the left (e.g., "Max slippage"). */
|
|
@@ -16,6 +17,10 @@ export interface DataRowProps {
|
|
|
16
17
|
/** Handler for the info icon; when supplied, the icon becomes a keyboard-
|
|
17
18
|
* accessible button. Requires `info` to be true. */
|
|
18
19
|
onInfoClick?: () => void
|
|
20
|
+
/** Tooltip text shown on hover / focus over the info icon. Rendered via
|
|
21
|
+
* `Tooltip` (Radix), so it collides / portals correctly. Ignored when
|
|
22
|
+
* `info` is false. */
|
|
23
|
+
infoTooltip?: string
|
|
19
24
|
/** Content rendered inside the value group, before the value. Typically a
|
|
20
25
|
* small decorative or status icon (e.g. warning). */
|
|
21
26
|
leading?: ReactNode
|
|
@@ -23,7 +28,8 @@ export interface DataRowProps {
|
|
|
23
28
|
* chevron or trailing icon. */
|
|
24
29
|
trailing?: ReactNode
|
|
25
30
|
/** `'default'` for a plain inline row; `'warning'` for the orange-tinted
|
|
26
|
-
* card treatment (Figma "Minimum deposit")
|
|
31
|
+
* card treatment (Figma "Minimum deposit") — tinted card and orange info
|
|
32
|
+
* icon, default-ink text. */
|
|
27
33
|
variant?: 'default' | 'warning'
|
|
28
34
|
className?: string
|
|
29
35
|
}
|
|
@@ -33,13 +39,15 @@ export function DataRow({
|
|
|
33
39
|
value,
|
|
34
40
|
info,
|
|
35
41
|
onInfoClick,
|
|
42
|
+
infoTooltip,
|
|
36
43
|
leading,
|
|
37
44
|
trailing,
|
|
38
45
|
variant = 'default',
|
|
39
46
|
className,
|
|
40
47
|
}: DataRowProps) {
|
|
48
|
+
// Design review (Min deposit): label/value read in the default ink even on
|
|
49
|
+
// the warning card — only the card tint and info icon are orange.
|
|
41
50
|
const isWarning = variant === 'warning'
|
|
42
|
-
const textColorClass = isWarning ? 'zd:text-solarOrange' : undefined
|
|
43
51
|
|
|
44
52
|
return (
|
|
45
53
|
<div
|
|
@@ -61,38 +69,64 @@ export function DataRow({
|
|
|
61
69
|
isWarning ? { backgroundColor: 'rgba(242, 123, 62, 0.1)' } : undefined
|
|
62
70
|
}
|
|
63
71
|
>
|
|
64
|
-
<Text className=
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
<Text className="zd:whitespace-nowrap">{label}</Text>
|
|
73
|
+
{info && (
|
|
74
|
+
<Tooltip content={infoTooltip}>
|
|
75
|
+
{onInfoClick ? (
|
|
76
|
+
<button
|
|
77
|
+
type="button"
|
|
78
|
+
onClick={onInfoClick}
|
|
79
|
+
aria-label={
|
|
80
|
+
infoTooltip
|
|
81
|
+
? `${label} — ${infoTooltip}`
|
|
82
|
+
: `${label} — more info`
|
|
83
|
+
}
|
|
84
|
+
className="zd:flex zd:items-center zd:justify-center zd:cursor-pointer"
|
|
85
|
+
data-testid="data-row-info"
|
|
86
|
+
>
|
|
87
|
+
<Icon
|
|
88
|
+
name={isWarning ? 'infoOutline' : 'info'}
|
|
89
|
+
className={cn(
|
|
90
|
+
'zd:w-3.5 zd:h-3.5',
|
|
91
|
+
// Warning rows use the thin outline glyph at half opacity
|
|
92
|
+
// (Figma 20002:36053) instead of the filled disc.
|
|
93
|
+
isWarning
|
|
94
|
+
? 'zd:text-solarOrange zd:opacity-50'
|
|
95
|
+
: 'zd:text-greyScale/50',
|
|
96
|
+
)}
|
|
97
|
+
aria-hidden
|
|
98
|
+
/>
|
|
99
|
+
</button>
|
|
100
|
+
) : (
|
|
101
|
+
// Real DOM element so Radix's `Tooltip` trigger (via `asChild`)
|
|
102
|
+
// can attach hover / focus handlers and wire `aria-describedby`
|
|
103
|
+
// to its content — no manual aria-label needed on the span.
|
|
104
|
+
// Focusable only when there's a tooltip; otherwise this is a
|
|
105
|
+
// decorative info icon and shouldn't land in the tab order.
|
|
106
|
+
<span
|
|
107
|
+
tabIndex={infoTooltip ? 0 : -1}
|
|
78
108
|
className={cn(
|
|
79
|
-
'zd:
|
|
80
|
-
|
|
109
|
+
'zd:inline-flex zd:items-center zd:justify-center',
|
|
110
|
+
infoTooltip && 'zd:cursor-help zd:outline-none',
|
|
81
111
|
)}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
112
|
+
data-testid="data-row-info"
|
|
113
|
+
>
|
|
114
|
+
<Icon
|
|
115
|
+
name={isWarning ? 'infoOutline' : 'info'}
|
|
116
|
+
className={cn(
|
|
117
|
+
'zd:w-3.5 zd:h-3.5',
|
|
118
|
+
// Warning rows use the thin outline glyph at half opacity
|
|
119
|
+
// (Figma 20002:36053) instead of the filled disc.
|
|
120
|
+
isWarning
|
|
121
|
+
? 'zd:text-solarOrange zd:opacity-50'
|
|
122
|
+
: 'zd:text-greyScale/50',
|
|
123
|
+
)}
|
|
124
|
+
aria-hidden
|
|
125
|
+
/>
|
|
126
|
+
</span>
|
|
127
|
+
)}
|
|
128
|
+
</Tooltip>
|
|
129
|
+
)}
|
|
96
130
|
{/* Spacer pushes the value to the right end. min-w-0 so the label and
|
|
97
131
|
value can shrink independently if the container is narrow. */}
|
|
98
132
|
<div className="zd:min-w-0 zd:flex-1" />
|
|
@@ -102,9 +136,7 @@ export function DataRow({
|
|
|
102
136
|
>
|
|
103
137
|
{leading}
|
|
104
138
|
{typeof value === 'string' ? (
|
|
105
|
-
<Text className=
|
|
106
|
-
{value}
|
|
107
|
-
</Text>
|
|
139
|
+
<Text className="zd:whitespace-nowrap">{value}</Text>
|
|
108
140
|
) : (
|
|
109
141
|
value
|
|
110
142
|
)}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { ReactNode } from 'react'
|
|
2
|
+
import { cn } from '../../utils/common'
|
|
3
|
+
import { Text } from '../Text'
|
|
4
|
+
import { Wrapper } from '../Wrapper'
|
|
5
|
+
|
|
6
|
+
/** `'contained'` wraps the image in a white 44px tile; `'filled'` renders the
|
|
7
|
+
* image directly at 44px (no wrapper). */
|
|
8
|
+
export type InfoCardImageStyle = 'contained' | 'filled'
|
|
9
|
+
|
|
10
|
+
export interface InfoCardProps {
|
|
11
|
+
title: string
|
|
12
|
+
subtitle?: string
|
|
13
|
+
imageSource?: string
|
|
14
|
+
/** Optional small chain-badge overlay on the token icon (bottom-right).
|
|
15
|
+
* Follows the same pattern as `TxnItem`'s pair-mark. */
|
|
16
|
+
chainIconUrl?: string
|
|
17
|
+
rightElement?: ReactNode
|
|
18
|
+
imageStyle?: InfoCardImageStyle
|
|
19
|
+
className?: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function InfoCard({
|
|
23
|
+
title,
|
|
24
|
+
subtitle,
|
|
25
|
+
imageSource,
|
|
26
|
+
chainIconUrl,
|
|
27
|
+
imageStyle = 'contained',
|
|
28
|
+
rightElement,
|
|
29
|
+
className,
|
|
30
|
+
}: InfoCardProps) {
|
|
31
|
+
return (
|
|
32
|
+
<Wrapper
|
|
33
|
+
className={cn(
|
|
34
|
+
'zd:h-[84px] zd:px-3 zd:rounded-2xl zd:flex zd:flex-row zd:items-center zd:gap-2 zd:w-full zd:justify-between',
|
|
35
|
+
className,
|
|
36
|
+
)}
|
|
37
|
+
>
|
|
38
|
+
<div className="zd:gap-2 zd:flex zd:flex-row zd:items-center zd:h-[52px]">
|
|
39
|
+
{imageSource || chainIconUrl ? (
|
|
40
|
+
<IconWithBadge
|
|
41
|
+
imageStyle={imageStyle}
|
|
42
|
+
{...(imageSource && { imageSource })}
|
|
43
|
+
{...(chainIconUrl && { chainIconUrl })}
|
|
44
|
+
/>
|
|
45
|
+
) : null}
|
|
46
|
+
<div className="zd:flex zd:flex-col">
|
|
47
|
+
<Text className="zd:text-body1">{title}</Text>
|
|
48
|
+
{subtitle && <Text className="zd:text-greyScale/50">{subtitle}</Text>}
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
{rightElement}
|
|
52
|
+
</Wrapper>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function IconWithBadge({
|
|
57
|
+
imageSource,
|
|
58
|
+
chainIconUrl,
|
|
59
|
+
imageStyle,
|
|
60
|
+
}: {
|
|
61
|
+
imageSource?: string
|
|
62
|
+
chainIconUrl?: string
|
|
63
|
+
imageStyle: InfoCardImageStyle
|
|
64
|
+
}) {
|
|
65
|
+
return (
|
|
66
|
+
<div className="zd:relative zd:size-11 zd:shrink-0">
|
|
67
|
+
{imageStyle === 'contained' ? (
|
|
68
|
+
<div
|
|
69
|
+
className={cn(
|
|
70
|
+
'zd:size-full zd:rounded-xl zd:isolate zd:bg-white/60 zd:backdrop-blur-[30px]',
|
|
71
|
+
'zd:shadow-[inset_0_3px_4px_0_rgba(0,0,0,0.02),inset_0_-4px_4px_0_rgba(255,255,255,0.1)]',
|
|
72
|
+
)}
|
|
73
|
+
>
|
|
74
|
+
{imageSource && (
|
|
75
|
+
<div className="zd:absolute zd:top-1/2 zd:left-1/2 zd:size-8.5 zd:-translate-x-1/2 zd:-translate-y-1/2 zd:overflow-hidden zd:rounded-full zd:bg-greyScale/10">
|
|
76
|
+
<img
|
|
77
|
+
src={imageSource}
|
|
78
|
+
alt=""
|
|
79
|
+
className="zd:size-full zd:object-contain"
|
|
80
|
+
/>
|
|
81
|
+
</div>
|
|
82
|
+
)}
|
|
83
|
+
</div>
|
|
84
|
+
) : (
|
|
85
|
+
imageSource && (
|
|
86
|
+
<img
|
|
87
|
+
src={imageSource}
|
|
88
|
+
alt=""
|
|
89
|
+
className="zd:size-full zd:rounded-xl"
|
|
90
|
+
/>
|
|
91
|
+
)
|
|
92
|
+
)}
|
|
93
|
+
{chainIconUrl && (
|
|
94
|
+
<div className="zd:absolute zd:right-1 zd:bottom-1 zd:h-3 zd:w-3 zd:overflow-hidden zd:rounded-full zd:bg-white zd:p-px">
|
|
95
|
+
<img
|
|
96
|
+
src={chainIconUrl}
|
|
97
|
+
alt=""
|
|
98
|
+
className="zd:h-full zd:w-full zd:object-contain"
|
|
99
|
+
/>
|
|
100
|
+
</div>
|
|
101
|
+
)}
|
|
102
|
+
</div>
|
|
103
|
+
)
|
|
104
|
+
}
|
|
@@ -73,7 +73,7 @@ export function Pill({
|
|
|
73
73
|
onKeyDown: handleKeyDown,
|
|
74
74
|
})}
|
|
75
75
|
>
|
|
76
|
-
<div className="zd:flex zd:items-center zd:gap-1.5">
|
|
76
|
+
<div className="zd:flex zd:min-w-0 zd:items-center zd:gap-1.5">
|
|
77
77
|
{/* 44×44 logo well with a 34×34 centered inner disc. Figma places the
|
|
78
78
|
image with translate-1/2 offsets so the smaller disc sits inside
|
|
79
79
|
the larger well — the 10px reveal reads as the pill's "logo pad". */}
|
|
@@ -109,11 +109,13 @@ export function Pill({
|
|
|
109
109
|
) : null}
|
|
110
110
|
</div>
|
|
111
111
|
</div>
|
|
112
|
-
<Text className="zd:
|
|
112
|
+
<Text className="zd:min-w-0 zd:truncate zd:text-body1" title={label}>
|
|
113
|
+
{label}
|
|
114
|
+
</Text>
|
|
113
115
|
</div>
|
|
114
116
|
{trailingIcon && (
|
|
115
117
|
<div
|
|
116
|
-
className="zd:flex zd:shrink-0 zd:items-center zd:rounded-full zd:p-
|
|
118
|
+
className="zd:flex zd:shrink-0 zd:items-center zd:rounded-full zd:p-1"
|
|
117
119
|
data-testid="pill-trailing-icon"
|
|
118
120
|
>
|
|
119
121
|
{trailingIcon}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { ReactNode } from 'react'
|
|
2
|
+
import { cn } from '../../utils/common'
|
|
3
|
+
import { Icon } from '../Icon'
|
|
4
|
+
import { Text } from '../Text'
|
|
5
|
+
import { Tooltip } from '../Tooltip'
|
|
6
|
+
|
|
7
|
+
export type ProgressStepStatus = 'done' | 'active' | 'pending' | 'failed'
|
|
8
|
+
|
|
9
|
+
export interface ProgressStepProps {
|
|
10
|
+
label: string
|
|
11
|
+
status: ProgressStepStatus
|
|
12
|
+
/** Tooltip copy behind a small info icon next to the label. */
|
|
13
|
+
info?: string
|
|
14
|
+
/** Trailing content, e.g. an explorer link, provider chip, or countdown. */
|
|
15
|
+
right?: ReactNode
|
|
16
|
+
/** Suppresses the connector line below the marker. */
|
|
17
|
+
isLast?: boolean
|
|
18
|
+
className?: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* One row of a vertical progress trail: a status marker (with a connector
|
|
23
|
+
* line down to the next step), a label, and an optional trailing slot.
|
|
24
|
+
* Callers stack several in a column and mark the final one `isLast`.
|
|
25
|
+
*/
|
|
26
|
+
export function ProgressStep({
|
|
27
|
+
label,
|
|
28
|
+
status,
|
|
29
|
+
info,
|
|
30
|
+
right,
|
|
31
|
+
isLast,
|
|
32
|
+
className,
|
|
33
|
+
}: ProgressStepProps) {
|
|
34
|
+
const done = status === 'done'
|
|
35
|
+
const failed = status === 'failed'
|
|
36
|
+
return (
|
|
37
|
+
<div
|
|
38
|
+
className={cn(
|
|
39
|
+
'zd:relative zd:flex zd:w-full zd:items-start zd:gap-3',
|
|
40
|
+
className,
|
|
41
|
+
)}
|
|
42
|
+
>
|
|
43
|
+
<div className="zd:flex zd:flex-col zd:items-center zd:pt-0.5">
|
|
44
|
+
<StatusMark status={status} />
|
|
45
|
+
{!isLast && (
|
|
46
|
+
<div
|
|
47
|
+
className={cn(
|
|
48
|
+
'zd:mt-1 zd:h-4 zd:w-px',
|
|
49
|
+
done ? 'zd:bg-solarOrange/60' : 'zd:bg-greyScale/20',
|
|
50
|
+
)}
|
|
51
|
+
/>
|
|
52
|
+
)}
|
|
53
|
+
</div>
|
|
54
|
+
<div className="zd:flex zd:min-w-0 zd:flex-1 zd:items-center zd:gap-1">
|
|
55
|
+
<Text
|
|
56
|
+
className={cn(
|
|
57
|
+
'zd:whitespace-nowrap',
|
|
58
|
+
failed
|
|
59
|
+
? 'zd:text-negative'
|
|
60
|
+
: // Mute the label until the step is done so a final row with
|
|
61
|
+
// an inert open circle doesn't read at full intensity while
|
|
62
|
+
// earlier steps are still in flight.
|
|
63
|
+
done
|
|
64
|
+
? 'zd:text-greyScale'
|
|
65
|
+
: 'zd:text-greyScale/50',
|
|
66
|
+
)}
|
|
67
|
+
>
|
|
68
|
+
{label}
|
|
69
|
+
</Text>
|
|
70
|
+
{info && (
|
|
71
|
+
<Tooltip content={info}>
|
|
72
|
+
<button
|
|
73
|
+
type="button"
|
|
74
|
+
aria-label="More info"
|
|
75
|
+
className="zd:inline-flex zd:items-center zd:justify-center zd:cursor-help zd:outline-none zd:bg-transparent"
|
|
76
|
+
>
|
|
77
|
+
<Icon
|
|
78
|
+
name="info"
|
|
79
|
+
className="zd:w-3 zd:h-3 zd:text-greyScale/50"
|
|
80
|
+
aria-hidden
|
|
81
|
+
/>
|
|
82
|
+
</button>
|
|
83
|
+
</Tooltip>
|
|
84
|
+
)}
|
|
85
|
+
</div>
|
|
86
|
+
<div className="zd:flex zd:shrink-0 zd:items-center">{right}</div>
|
|
87
|
+
</div>
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function StatusMark({ status }: { status: ProgressStepStatus }) {
|
|
92
|
+
switch (status) {
|
|
93
|
+
case 'failed':
|
|
94
|
+
return (
|
|
95
|
+
<Icon
|
|
96
|
+
name="warning"
|
|
97
|
+
className="zd:size-4 zd:text-negative"
|
|
98
|
+
aria-hidden
|
|
99
|
+
/>
|
|
100
|
+
)
|
|
101
|
+
case 'done':
|
|
102
|
+
return (
|
|
103
|
+
<span className="zd:inline-flex zd:size-4 zd:items-center zd:justify-center zd:rounded-full zd:bg-solarOrange">
|
|
104
|
+
<Icon name="check" className="zd:size-3 zd:text-white" aria-hidden />
|
|
105
|
+
</span>
|
|
106
|
+
)
|
|
107
|
+
case 'active':
|
|
108
|
+
return (
|
|
109
|
+
<Icon
|
|
110
|
+
name="loading"
|
|
111
|
+
className="zd:size-4 zd:animate-spin zd:text-solarOrange"
|
|
112
|
+
aria-hidden
|
|
113
|
+
data-testid="progress-step-spinner"
|
|
114
|
+
/>
|
|
115
|
+
)
|
|
116
|
+
default:
|
|
117
|
+
return (
|
|
118
|
+
<span className="zd:inline-block zd:size-4 zd:rounded-full zd:border zd:border-greyScale/30" />
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
} from './MultiRadialBackground'
|
|
15
15
|
|
|
16
16
|
const CONTENT_PADDING_TOP = TOP_NAV_HEIGHT + 16
|
|
17
|
+
const FOOTER_HEIGHT = 56
|
|
17
18
|
|
|
18
19
|
// Container for card-scoped overlays (bottom sheets, dialogs, etc.). Consumers
|
|
19
20
|
// portal into this element via `Radix Dialog.Portal container={...}` so the
|
|
@@ -35,6 +36,7 @@ export function Screen({
|
|
|
35
36
|
size = 'lg',
|
|
36
37
|
style,
|
|
37
38
|
topNav,
|
|
39
|
+
footer,
|
|
38
40
|
overlay,
|
|
39
41
|
}: {
|
|
40
42
|
children: ReactNode
|
|
@@ -43,6 +45,9 @@ export function Screen({
|
|
|
43
45
|
size?: 'sm' | 'md' | 'lg' | undefined
|
|
44
46
|
style?: CSSProperties | undefined
|
|
45
47
|
topNav?: ReactNode
|
|
48
|
+
/** Pinned bottom band — mirrors `topNav`. Same edge-to-edge, blurred
|
|
49
|
+
* background treatment; scrolled content passes behind it. */
|
|
50
|
+
footer?: ReactNode
|
|
46
51
|
overlay?: ReactNode
|
|
47
52
|
}) {
|
|
48
53
|
// Overlay container ref goes into state so children re-render once the DOM
|
|
@@ -83,7 +88,9 @@ export function Screen({
|
|
|
83
88
|
// gradient border ring thins with the size variants. (Corner radii
|
|
84
89
|
// stay fixed, so at smaller sizes the ring is marginally non-uniform
|
|
85
90
|
// at the corners — a minor cosmetic trade-off.)
|
|
86
|
-
|
|
91
|
+
// Horizontal padding lives on the scroll container so TopNav and
|
|
92
|
+
// footer can span edge-to-edge without escape offsets.
|
|
93
|
+
'zd:flex zd:flex-1 zd:flex-col zd:m-1.5 zd:overflow-hidden zd:rounded-4xl zd:relative',
|
|
87
94
|
contentClassName,
|
|
88
95
|
)}
|
|
89
96
|
// clip-path clips backdrop-filter to the rounded corners; plain
|
|
@@ -96,7 +103,9 @@ export function Screen({
|
|
|
96
103
|
<div className="zd:relative zd:z-10 zd:flex zd:flex-1 zd:flex-col zd:min-h-0">
|
|
97
104
|
{topNav}
|
|
98
105
|
<div
|
|
99
|
-
|
|
106
|
+
// Owns horizontal padding — pages needing edge-to-edge content
|
|
107
|
+
// escape via `zd:-mx-4` on their own outer wrapper.
|
|
108
|
+
className="zd:flex zd:flex-1 zd:flex-col zd:min-h-0 zd:overflow-y-auto zd:overflow-x-hidden zd:px-4"
|
|
100
109
|
// Scale via --zd-spacing (matches TopNav's scaled height) so the
|
|
101
110
|
// top padding shrinks with the frame — otherwise the fixed 68px
|
|
102
111
|
// eats a disproportionate share at smaller sizes and overflows.
|
|
@@ -108,6 +117,18 @@ export function Screen({
|
|
|
108
117
|
{children}
|
|
109
118
|
</ScreenOverlayContext.Provider>
|
|
110
119
|
</div>
|
|
120
|
+
{footer && (
|
|
121
|
+
<div
|
|
122
|
+
// Flex sibling so scrolled content stops at the footer's top
|
|
123
|
+
// edge; internal px-4 keeps the content at the 16px inset.
|
|
124
|
+
className="zd:flex zd:shrink-0 zd:items-center zd:justify-center zd:px-4 zd:pb-4 zd:backdrop-blur-[15px]"
|
|
125
|
+
style={{
|
|
126
|
+
height: `calc(${FOOTER_HEIGHT / 4} * var(--zd-spacing))`,
|
|
127
|
+
}}
|
|
128
|
+
>
|
|
129
|
+
{footer}
|
|
130
|
+
</div>
|
|
131
|
+
)}
|
|
111
132
|
</div>
|
|
112
133
|
</div>
|
|
113
134
|
{/* Overlay is a sibling of the inner card, not a child — so it escapes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { camelCaseToTitle } from '../../../utils/common'
|
|
2
|
+
import { DataRow } from '../../DataRow'
|
|
3
|
+
import { Section } from '..'
|
|
4
|
+
|
|
5
|
+
export interface MessageDetailsProps {
|
|
6
|
+
details: Record<string, string>
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function MessageDetails({ details }: MessageDetailsProps) {
|
|
10
|
+
return (
|
|
11
|
+
<Section title="Message Details" iconName="message">
|
|
12
|
+
{Object.entries(details).map(([label, value]) => (
|
|
13
|
+
// Object keys are raw camelCase (e.g. "fromAddress"); the primitive
|
|
14
|
+
// DataRow renders labels verbatim, so title-case them here.
|
|
15
|
+
<DataRow key={label} label={camelCaseToTitle(label)} value={value} />
|
|
16
|
+
))}
|
|
17
|
+
</Section>
|
|
18
|
+
)
|
|
19
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ReactNode, useState } from 'react'
|
|
2
|
+
import { Icon, type IconName } from '../Icon'
|
|
3
|
+
import { Text } from '../Text'
|
|
4
|
+
import { Wrapper } from '../Wrapper'
|
|
5
|
+
|
|
6
|
+
export interface SectionProps {
|
|
7
|
+
title: string
|
|
8
|
+
/** Optional leading icon (solarOrange tint). Omit for a plain title row. */
|
|
9
|
+
iconName?: IconName
|
|
10
|
+
children: ReactNode
|
|
11
|
+
collapsible?: boolean
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function Section({
|
|
15
|
+
title,
|
|
16
|
+
iconName,
|
|
17
|
+
collapsible,
|
|
18
|
+
children,
|
|
19
|
+
}: SectionProps) {
|
|
20
|
+
const [collapsed, setCollapsed] = useState(collapsible === true)
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<Wrapper className="zd:p-4 zd:flex zd:flex-col zd:gap-3 zd:rounded-xl zd:w-full">
|
|
24
|
+
<div className="zd:flex zd:flex-row zd:justify-between zd:items-center">
|
|
25
|
+
<div className="zd:flex zd:flex-row zd:items-center zd:gap-2">
|
|
26
|
+
{iconName && (
|
|
27
|
+
<Icon
|
|
28
|
+
name={iconName}
|
|
29
|
+
className="zd:h-4 zd:w-4 zd:text-solarOrange"
|
|
30
|
+
/>
|
|
31
|
+
)}
|
|
32
|
+
<Text className="zd:text-h3">{title}</Text>
|
|
33
|
+
</div>
|
|
34
|
+
{collapsible !== undefined && (
|
|
35
|
+
<button
|
|
36
|
+
type="button"
|
|
37
|
+
onClick={() => setCollapsed((c) => !c)}
|
|
38
|
+
className="zd:flex zd:items-center zd:justify-center zd:cursor-pointer"
|
|
39
|
+
>
|
|
40
|
+
<Icon
|
|
41
|
+
name={collapsed ? 'chevronDown' : 'chevronUp'}
|
|
42
|
+
className="zd:w-4 zd:h-4 zd:text-greyScale"
|
|
43
|
+
/>
|
|
44
|
+
</button>
|
|
45
|
+
)}
|
|
46
|
+
</div>
|
|
47
|
+
{!collapsed && children}
|
|
48
|
+
</Wrapper>
|
|
49
|
+
)
|
|
50
|
+
}
|