@zerodev/react-ui 0.0.5 → 0.0.7
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 +2 -1
- package/dist/_types/components/DataRow/index.d.ts.map +1 -1
- 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/Select/index.d.ts.map +1 -1
- package/dist/_types/components/Tooltip/index.d.ts +1 -1
- package/dist/_types/components/Tooltip/index.d.ts.map +1 -1
- package/dist/_types/components/TopNav/index.d.ts.map +1 -1
- package/dist/_types/index.d.ts +1 -0
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/utils/portal.d.ts +10 -0
- package/dist/_types/utils/portal.d.ts.map +1 -0
- package/dist/index.cjs +12 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1576 -1422
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/DataRow/index.tsx +18 -12
- package/src/components/Pill/index.tsx +5 -3
- package/src/components/ProgressStep/index.tsx +121 -0
- package/src/components/Screen/index.tsx +26 -2
- package/src/components/Select/index.tsx +3 -1
- package/src/components/Tooltip/index.tsx +14 -1
- package/src/components/TopNav/index.tsx +8 -2
- package/src/index.ts +5 -0
- package/src/utils/portal.ts +29 -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\: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-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-\[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\: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\: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-\[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\/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\: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-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 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}}}: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-scope{font-family:var(--zd-default-font-family,ui-sans-serif, system-ui, sans-serif);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;box-sizing:border-box;border:0 solid;margin:0;padding:0;line-height:1.5}.zd-scope :where(*){box-sizing:border-box;border:0 solid;margin:0;padding:0}.zd-scope :where(img,svg,video){max-width:100%;display:block}.zd-scope :where(img,video){height:auto}.zd-scope :where(button,input,textarea){font:inherit;letter-spacing:inherit;color:inherit;background:0 0;border-radius:0}.zd-scope :where(input,textarea)::placeholder{opacity:1;color:currentColor}@supports (color:color-mix(in lab, red, red)){.zd-scope :where(input,textarea)::placeholder{color:color-mix(in oklab, currentColor 50%, transparent)}}.zd-scope :where(textarea){resize:vertical}.zd-scope :where(a){color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.zd-scope :where(ol,ul){list-style:none}.zd-scope :where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}.zd-scope :where(pre){font-family:var(--zd-font-mono)}.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
|
@@ -28,7 +28,8 @@ export interface DataRowProps {
|
|
|
28
28
|
* chevron or trailing icon. */
|
|
29
29
|
trailing?: ReactNode
|
|
30
30
|
/** `'default'` for a plain inline row; `'warning'` for the orange-tinted
|
|
31
|
-
* card treatment (Figma "Minimum deposit")
|
|
31
|
+
* card treatment (Figma "Minimum deposit") — tinted card and orange info
|
|
32
|
+
* icon, default-ink text. */
|
|
32
33
|
variant?: 'default' | 'warning'
|
|
33
34
|
className?: string
|
|
34
35
|
}
|
|
@@ -44,8 +45,9 @@ export function DataRow({
|
|
|
44
45
|
variant = 'default',
|
|
45
46
|
className,
|
|
46
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.
|
|
47
50
|
const isWarning = variant === 'warning'
|
|
48
|
-
const textColorClass = isWarning ? 'zd:text-solarOrange' : undefined
|
|
49
51
|
|
|
50
52
|
return (
|
|
51
53
|
<div
|
|
@@ -67,9 +69,7 @@ export function DataRow({
|
|
|
67
69
|
isWarning ? { backgroundColor: 'rgba(242, 123, 62, 0.1)' } : undefined
|
|
68
70
|
}
|
|
69
71
|
>
|
|
70
|
-
<Text className=
|
|
71
|
-
{label}
|
|
72
|
-
</Text>
|
|
72
|
+
<Text className="zd:whitespace-nowrap">{label}</Text>
|
|
73
73
|
{info && (
|
|
74
74
|
<Tooltip content={infoTooltip}>
|
|
75
75
|
{onInfoClick ? (
|
|
@@ -85,10 +85,14 @@ export function DataRow({
|
|
|
85
85
|
data-testid="data-row-info"
|
|
86
86
|
>
|
|
87
87
|
<Icon
|
|
88
|
-
name=
|
|
88
|
+
name={isWarning ? 'infoOutline' : 'info'}
|
|
89
89
|
className={cn(
|
|
90
90
|
'zd:w-3.5 zd:h-3.5',
|
|
91
|
-
|
|
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',
|
|
92
96
|
)}
|
|
93
97
|
aria-hidden
|
|
94
98
|
/>
|
|
@@ -108,10 +112,14 @@ export function DataRow({
|
|
|
108
112
|
data-testid="data-row-info"
|
|
109
113
|
>
|
|
110
114
|
<Icon
|
|
111
|
-
name=
|
|
115
|
+
name={isWarning ? 'infoOutline' : 'info'}
|
|
112
116
|
className={cn(
|
|
113
117
|
'zd:w-3.5 zd:h-3.5',
|
|
114
|
-
|
|
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',
|
|
115
123
|
)}
|
|
116
124
|
aria-hidden
|
|
117
125
|
/>
|
|
@@ -128,9 +136,7 @@ export function DataRow({
|
|
|
128
136
|
>
|
|
129
137
|
{leading}
|
|
130
138
|
{typeof value === 'string' ? (
|
|
131
|
-
<Text className=
|
|
132
|
-
{value}
|
|
133
|
-
</Text>
|
|
139
|
+
<Text className="zd:whitespace-nowrap">{value}</Text>
|
|
134
140
|
) : (
|
|
135
141
|
value
|
|
136
142
|
)}
|
|
@@ -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
|
|
@@ -55,6 +60,9 @@ export function Screen({
|
|
|
55
60
|
<div
|
|
56
61
|
data-zd-size={size}
|
|
57
62
|
className={cn(
|
|
63
|
+
// Style boundary. reset.css scopes its preflight replacement under
|
|
64
|
+
// this class.
|
|
65
|
+
'zd-scope',
|
|
58
66
|
// 400×810 by default, but never taller/wider than the parent — a
|
|
59
67
|
// consumer wrapper with its own size caps the Screen (max-w/h-full =
|
|
60
68
|
// 100% of the parent). overflow-hidden clips the frame to its rounded
|
|
@@ -83,7 +91,9 @@ export function Screen({
|
|
|
83
91
|
// gradient border ring thins with the size variants. (Corner radii
|
|
84
92
|
// stay fixed, so at smaller sizes the ring is marginally non-uniform
|
|
85
93
|
// at the corners — a minor cosmetic trade-off.)
|
|
86
|
-
|
|
94
|
+
// Horizontal padding lives on the scroll container so TopNav and
|
|
95
|
+
// footer can span edge-to-edge without escape offsets.
|
|
96
|
+
'zd:flex zd:flex-1 zd:flex-col zd:m-1.5 zd:overflow-hidden zd:rounded-4xl zd:relative',
|
|
87
97
|
contentClassName,
|
|
88
98
|
)}
|
|
89
99
|
// clip-path clips backdrop-filter to the rounded corners; plain
|
|
@@ -96,7 +106,9 @@ export function Screen({
|
|
|
96
106
|
<div className="zd:relative zd:z-10 zd:flex zd:flex-1 zd:flex-col zd:min-h-0">
|
|
97
107
|
{topNav}
|
|
98
108
|
<div
|
|
99
|
-
|
|
109
|
+
// Owns horizontal padding — pages needing edge-to-edge content
|
|
110
|
+
// escape via `zd:-mx-4` on their own outer wrapper.
|
|
111
|
+
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
112
|
// Scale via --zd-spacing (matches TopNav's scaled height) so the
|
|
101
113
|
// top padding shrinks with the frame — otherwise the fixed 68px
|
|
102
114
|
// eats a disproportionate share at smaller sizes and overflows.
|
|
@@ -108,6 +120,18 @@ export function Screen({
|
|
|
108
120
|
{children}
|
|
109
121
|
</ScreenOverlayContext.Provider>
|
|
110
122
|
</div>
|
|
123
|
+
{footer && (
|
|
124
|
+
<div
|
|
125
|
+
// Flex sibling so scrolled content stops at the footer's top
|
|
126
|
+
// edge; internal px-4 keeps the content at the 16px inset.
|
|
127
|
+
className="zd:flex zd:shrink-0 zd:items-center zd:justify-center zd:px-4 zd:pb-4 zd:backdrop-blur-[15px]"
|
|
128
|
+
style={{
|
|
129
|
+
height: `calc(${FOOTER_HEIGHT / 4} * var(--zd-spacing))`,
|
|
130
|
+
}}
|
|
131
|
+
>
|
|
132
|
+
{footer}
|
|
133
|
+
</div>
|
|
134
|
+
)}
|
|
111
135
|
</div>
|
|
112
136
|
</div>
|
|
113
137
|
{/* Overlay is a sibling of the inner card, not a child — so it escapes
|
|
@@ -2,6 +2,7 @@ import { Select as SelectPrimitive } from 'radix-ui'
|
|
|
2
2
|
import type { ComponentProps, Ref } from 'react'
|
|
3
3
|
|
|
4
4
|
import { cn } from '../../utils/common'
|
|
5
|
+
import { useZdPortalContainer } from '../../utils/portal'
|
|
5
6
|
import { Icon } from '../Icon'
|
|
6
7
|
import { Wrapper } from '../Wrapper'
|
|
7
8
|
|
|
@@ -74,8 +75,9 @@ export function SelectContent({
|
|
|
74
75
|
}: ComponentProps<typeof SelectPrimitive.Content> & {
|
|
75
76
|
ref?: Ref<HTMLDivElement>
|
|
76
77
|
}) {
|
|
78
|
+
const portalContainer = useZdPortalContainer()
|
|
77
79
|
return (
|
|
78
|
-
<SelectPrimitive.Portal>
|
|
80
|
+
<SelectPrimitive.Portal container={portalContainer}>
|
|
79
81
|
<SelectPrimitive.Content
|
|
80
82
|
ref={ref}
|
|
81
83
|
position={position}
|
|
@@ -2,6 +2,7 @@ import { Tooltip as TooltipPrimitive } from 'radix-ui'
|
|
|
2
2
|
import type { ComponentProps, ReactNode, Ref } from 'react'
|
|
3
3
|
|
|
4
4
|
import { cn } from '../../utils/common'
|
|
5
|
+
import { useZdPortalContainer } from '../../utils/portal'
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Floating tooltip wrapping the Radix primitive with our token palette.
|
|
@@ -20,7 +21,19 @@ import { cn } from '../../utils/common'
|
|
|
20
21
|
export const TooltipProvider = TooltipPrimitive.Provider
|
|
21
22
|
export const TooltipRoot = TooltipPrimitive.Root
|
|
22
23
|
export const TooltipTrigger = TooltipPrimitive.Trigger
|
|
23
|
-
|
|
24
|
+
|
|
25
|
+
export function TooltipPortal({
|
|
26
|
+
container,
|
|
27
|
+
...props
|
|
28
|
+
}: ComponentProps<typeof TooltipPrimitive.Portal>) {
|
|
29
|
+
const defaultContainer = useZdPortalContainer()
|
|
30
|
+
return (
|
|
31
|
+
<TooltipPrimitive.Portal
|
|
32
|
+
container={container ?? defaultContainer}
|
|
33
|
+
{...props}
|
|
34
|
+
/>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
24
37
|
|
|
25
38
|
export interface TooltipContentProps
|
|
26
39
|
extends ComponentProps<typeof TooltipPrimitive.Content> {
|
|
@@ -34,13 +34,19 @@ export function TopNav({
|
|
|
34
34
|
return (
|
|
35
35
|
<div
|
|
36
36
|
className={cn(
|
|
37
|
-
|
|
37
|
+
// Spans the card edge-to-edge; internal px-4 aligns icons with
|
|
38
|
+
// the scroll container's 16px inset.
|
|
39
|
+
'zd:absolute zd:top-0 zd:left-0 zd:right-0 zd:z-20 zd:flex zd:flex-row zd:items-center zd:justify-between zd:px-4 zd:pt-4',
|
|
40
|
+
// Frosted bg masks scrolled content passing under the nav.
|
|
41
|
+
'zd:backdrop-blur-[15px]',
|
|
38
42
|
className,
|
|
39
43
|
)}
|
|
40
44
|
// Scale via --zd-spacing (the 4px base) like every spacing utility, so
|
|
41
45
|
// the nav height tracks the density variants and doesn't eat a
|
|
42
46
|
// disproportionate share of the shrunken frame at smaller sizes.
|
|
43
|
-
style={{
|
|
47
|
+
style={{
|
|
48
|
+
height: `calc(${(TOP_NAV_HEIGHT + 24) / 4} * var(--zd-spacing))`,
|
|
49
|
+
}}
|
|
44
50
|
>
|
|
45
51
|
{onLeftButtonClick ? (
|
|
46
52
|
<IconButton iconName={leftButtonIcon} onClick={onLeftButtonClick} />
|
package/src/index.ts
CHANGED
|
@@ -50,6 +50,11 @@ export {
|
|
|
50
50
|
PillSkeleton,
|
|
51
51
|
} from './components/Pill'
|
|
52
52
|
export { PoweredBy } from './components/PoweredBy'
|
|
53
|
+
export {
|
|
54
|
+
ProgressStep,
|
|
55
|
+
type ProgressStepProps,
|
|
56
|
+
type ProgressStepStatus,
|
|
57
|
+
} from './components/ProgressStep'
|
|
53
58
|
export { Screen } from './components/Screen'
|
|
54
59
|
export { Section, type SectionProps } from './components/Section'
|
|
55
60
|
export {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react'
|
|
2
|
+
|
|
3
|
+
const PORTAL_ROOT_ID = 'zd-portal-root'
|
|
4
|
+
|
|
5
|
+
/** Find or create the SDK's singleton portal root, a `.zd-scope` div on
|
|
6
|
+
* document.body. Portals target it instead of body so their content stays
|
|
7
|
+
* inside the scoped reset from reset.css with no per-component class. */
|
|
8
|
+
export function getZdPortalRoot(): HTMLElement {
|
|
9
|
+
let root = document.getElementById(PORTAL_ROOT_ID)
|
|
10
|
+
if (!root) {
|
|
11
|
+
root = document.createElement('div')
|
|
12
|
+
root.id = PORTAL_ROOT_ID
|
|
13
|
+
root.className = 'zd-scope'
|
|
14
|
+
document.body.appendChild(root)
|
|
15
|
+
}
|
|
16
|
+
return root
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Default `container` for Radix portals. The element resolves in an effect,
|
|
20
|
+
* so SSR and the first client render return undefined and Radix falls back
|
|
21
|
+
* to document.body. That window is harmless. Tooltips and dropdowns only
|
|
22
|
+
* open after mount, and by then the root exists. */
|
|
23
|
+
export function useZdPortalContainer(): HTMLElement | undefined {
|
|
24
|
+
const [container, setContainer] = useState<HTMLElement>()
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
setContainer(getZdPortalRoot())
|
|
27
|
+
}, [])
|
|
28
|
+
return container
|
|
29
|
+
}
|