@krrli/cm-designsystem 1.28.0 → 1.30.0
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/cm-designsystem.css +1 -1
- package/dist/compositions/post/Post.d.ts +8 -2
- package/dist/compositions/post/Post.js +4 -3
- package/dist/compositions/post-base/PostBase.d.ts +0 -12
- package/dist/compositions/post-base/PostBase.js +3 -5
- package/dist/compositions/post-creator/PostCreator.d.ts +11 -2
- package/dist/compositions/post-creator/PostCreator.js +4 -3
- package/dist/compositions/profile-banner/ProfileBanner.d.ts +54 -36
- package/dist/compositions/profile-banner/ProfileBanner.js +11 -48
- package/dist/compositions/profile-banner-image/ProfileBannerImage.d.ts +54 -0
- package/dist/compositions/profile-banner-image/ProfileBannerImage.js +57 -0
- package/dist/compositions/profile-banner-info/ProfileBannerInfo.d.ts +17 -1
- package/dist/compositions/profile-banner-info/ProfileBannerInfo.js +5 -3
- package/dist/compositions/response/Response.d.ts +75 -0
- package/dist/compositions/response/Response.js +23 -0
- package/dist/compositions/{comment-creator/CommentCreator.d.ts → response-creator/ResponseCreator.d.ts} +12 -12
- package/dist/compositions/response-creator/ResponseCreator.js +27 -0
- package/package.json +1 -1
- package/dist/compositions/comment-creator/CommentCreator.js +0 -36
package/dist/cm-designsystem.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking: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-outline-style:solid;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--tracking-normal:0em;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--color-black:oklch(0% 0 0);--color-white:oklch(100% 0 0);--color-error:oklch(57.7% .245 27.325);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-pink-50:oklch(97.1% .014 343.198);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-200:oklch(89.9% .061 343.231);--color-pink-300:oklch(82.3% .12 346.018);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--color-pink-700:oklch(52.5% .223 3.958);--color-pink-800:oklch(45.9% .187 3.815);--color-pink-900:oklch(40.8% .153 2.432);--color-pink-950:oklch(28.4% .109 3.907);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-900:oklch(38% .189 293.745);--color-violet-950:oklch(28.3% .141 291.089);--spacing:4px;--font-poppins:Poppins,sans-serif;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700}}@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(--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(--default-font-feature-settings,normal);font-variation-settings:var(--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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--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}html{font-family:var(--font-poppins);color:var(--color-slate-600)}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4\.5{top:calc(var(--spacing)*4.5)}.top-6{top:calc(var(--spacing)*6)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.bottom-2{bottom:calc(var(--spacing)*2)}.-left-5{left:calc(var(--spacing)*-5)}.left-1\/2{left:50%}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-1{margin:calc(var(--spacing)*1)}.m-\[\`\<spacing\>\`\]{margin:`<spacing>`}.-ml-3{margin-left:calc(var(--spacing)*-3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-16{height:calc(var(--spacing)*16)}.h-24{height:calc(var(--spacing)*24)}.h-31\.25{height:calc(var(--spacing)*31.25)}.h-40{height:calc(var(--spacing)*40)}.h-80{height:calc(var(--spacing)*80)}.h-\[44px\]{height:44px}.h-\[\`\<spacing\>\`\]{height:`<spacing>`}.h-full{height:100%}.min-h-10{min-height:calc(var(--spacing)*10)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-31\.25{width:calc(var(--spacing)*31.25)}.w-40{width:calc(var(--spacing)*40)}.w-123{width:calc(var(--spacing)*123)}.w-146{width:calc(var(--spacing)*146)}.w-148{width:calc(var(--spacing)*148)}.w-170{width:calc(var(--spacing)*170)}.w-\[\`\<spacing\>\`\]{width:`<spacing>`}.w-auto{width:auto}.w-full{width:100%}.min-w-10{min-width:calc(var(--spacing)*10)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-15{rotate:15deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-10{gap:calc(var(--spacing)*10)}.gap-12{gap:calc(var(--spacing)*12)}.gap-16{gap:calc(var(--spacing)*16)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-6{border-style:var(--tw-border-style);border-width:6px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid{--tw-border-style:solid;border-style:solid}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-error{background-color:var(--color-error)}.bg-pink-50{background-color:var(--color-pink-50)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-pink-200{background-color:var(--color-pink-200)}.bg-pink-300{background-color:var(--color-pink-300)}.bg-pink-400{background-color:var(--color-pink-400)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-pink-600{background-color:var(--color-pink-600)}.bg-pink-700{background-color:var(--color-pink-700)}.bg-pink-800{background-color:var(--color-pink-800)}.bg-pink-900{background-color:var(--color-pink-900)}.bg-pink-950{background-color:var(--color-pink-950)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-600{background-color:var(--color-slate-600)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-950{background-color:var(--color-slate-950)}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-100{background-color:var(--color-violet-100)}.bg-violet-200{background-color:var(--color-violet-200)}.bg-violet-300{background-color:var(--color-violet-300)}.bg-violet-400{background-color:var(--color-violet-400)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-violet-600{background-color:var(--color-violet-600)}.bg-violet-600\/0{background-color:#0000}@supports (color:color-mix(in lab,red,red)){.bg-violet-600\/0{background-color:color-mix(in oklab,var(--color-violet-600)0%,transparent)}}.bg-violet-700{background-color:var(--color-violet-700)}.bg-violet-800{background-color:var(--color-violet-800)}.bg-violet-900{background-color:var(--color-violet-900)}.bg-violet-950{background-color:var(--color-violet-950)}.bg-white{background-color:var(--color-white)}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-pink-500{--tw-gradient-from:var(--color-pink-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-0\%{--tw-gradient-from-position:0%}.to-violet-600{--tw-gradient-to:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-100\%{--tw-gradient-to-position:100%}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.p-10{padding:calc(var(--spacing)*10)}.p-\[\`\<spacing\>\`\]{padding:`<spacing>`}.px-3{padding-inline:calc(var(--spacing)*3)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-12{padding-top:calc(var(--spacing)*12)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-6{padding-right:calc(var(--spacing)*6)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.pr-12{padding-right:calc(var(--spacing)*12)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-12{padding-bottom:calc(var(--spacing)*12)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-12{padding-left:calc(var(--spacing)*12)}.align-middle{vertical-align:middle}.text-\[14px\]\/\[100\%\]{font-size:14px;line-height:100%}.text-\[16px\]\/\[100\%\]{font-size:16px;line-height:100%}.text-\[18px\]\/\[140\%\]{font-size:18px;line-height:140%}.text-\[20px\]\/\[100\%\]{font-size:20px;line-height:100%}.text-\[20px\]\/\[135\%\]{font-size:20px;line-height:135%}.text-\[24px\]\/\[100\%\]{font-size:24px;line-height:100%}.text-\[24px\]\/\[125\%\]{font-size:24px;line-height:125%}.text-\[24px\]\/\[145\%\]{font-size:24px;line-height:145%}.text-\[32px\]\/\[125\%\]{font-size:32px;line-height:125%}.text-\[40px\]\/\[125\%\]{font-size:40px;line-height:125%}.text-\[48px\]\/\[125\%\]{font-size:48px;line-height:125%}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.text-black{color:var(--color-black)}.text-error{color:var(--color-error)}.text-inherit{color:inherit}.text-pink-50{color:var(--color-pink-50)}.text-pink-100{color:var(--color-pink-100)}.text-pink-200{color:var(--color-pink-200)}.text-pink-300{color:var(--color-pink-300)}.text-pink-400{color:var(--color-pink-400)}.text-pink-500{color:var(--color-pink-500)}.text-pink-600{color:var(--color-pink-600)}.text-pink-700{color:var(--color-pink-700)}.text-pink-800{color:var(--color-pink-800)}.text-pink-900{color:var(--color-pink-900)}.text-pink-950{color:var(--color-pink-950)}.text-slate-50{color:var(--color-slate-50)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-slate-950{color:var(--color-slate-950)}.text-violet-50{color:var(--color-violet-50)}.text-violet-100{color:var(--color-violet-100)}.text-violet-200{color:var(--color-violet-200)}.text-violet-300{color:var(--color-violet-300)}.text-violet-400{color:var(--color-violet-400)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-violet-800{color:var(--color-violet-800)}.text-violet-900{color:var(--color-violet-900)}.text-violet-950{color:var(--color-violet-950)}.text-white{color:var(--color-white)}.underline{text-decoration-line:underline}.decoration-violet-600{-webkit-text-decoration-color:var(--color-violet-600);text-decoration-color:var(--color-violet-600)}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-100{opacity:1}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-350{--tw-duration:.35s;transition-duration:.35s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}:is(.\*\*\:cursor-pointer *){cursor:pointer}@media(hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:hidden:is(:where(.group):hover *){display:none}.group-hover\:rotate-0:is(:where(.group):hover *){rotate:none}.group-hover\:rotate-90:is(:where(.group):hover *){rotate:90deg}.group-hover\:pr-6:is(:where(.group):hover *){padding-right:calc(var(--spacing)*6)}.group-hover\:pl-6:is(:where(.group):hover *){padding-left:calc(var(--spacing)*6)}.group-hover\:text-slate-800:is(:where(.group):hover *){color:var(--color-slate-800)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-\[16px\]\/\[100\%\]::placeholder{font-size:16px;line-height:100%}.placeholder\:text-\[20px\]\/\[135\%\]::placeholder{font-size:20px;line-height:135%}.placeholder\:font-medium::placeholder{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\:tracking-normal::placeholder{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.placeholder\:text-slate-300::placeholder{color:var(--color-slate-300)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}.focus-within\:ring-violet-600:focus-within{--tw-ring-color:var(--color-violet-600)}@media(hover:hover){.hover\:scale-95:hover{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:bg-pink-50:hover{background-color:var(--color-pink-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-300:hover{background-color:var(--color-slate-300)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-violet-50:hover{background-color:var(--color-violet-50)}.hover\:bg-violet-600\/50:hover{background-color:#7f22fe80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-violet-600\/50:hover{background-color:color-mix(in oklab,var(--color-violet-600)50%,transparent)}}.hover\:bg-violet-700:hover{background-color:var(--color-violet-700)}.hover\:to-80\%:hover{--tw-gradient-to-position:80%}.hover\:text-pink-600:hover{color:var(--color-pink-600)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-violet-600:hover{color:var(--color-violet-600)}.hover\:text-violet-900:hover{color:var(--color-violet-900)}.hover\:decoration-violet-200:hover{-webkit-text-decoration-color:var(--color-violet-200);text-decoration-color:var(--color-violet-200)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-3:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-slate-100:hover{--tw-ring-color:var(--color-slate-100)}.hover\:ring-slate-200:hover{--tw-ring-color:var(--color-slate-200)}.hover\:ring-slate-300:hover{--tw-ring-color:var(--color-slate-300)}.hover\:ring-violet-100:hover{--tw-ring-color:var(--color-violet-100)}.hover\:ring-violet-600:hover{--tw-ring-color:var(--color-violet-600)}.hover\:transition-all:hover{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.hover\:duration-300:hover{--tw-duration:.3s;transition-duration:.3s}.hover\:duration-350:hover{--tw-duration:.35s;transition-duration:.35s}.hover\:ease-in-out:hover{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.hover\:ease-out:hover{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-violet-600:focus{--tw-ring-color:var(--color-violet-600)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-violet-600:focus-visible{--tw-ring-color:var(--color-violet-600)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:to-70\%:active{--tw-gradient-to-position:70%}.active\:ring-4:active{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.active\:ring-violet-200:active{--tw-ring-color:var(--color-violet-200)}.active\:duration-300:active{--tw-duration:.3s;transition-duration:.3s}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media(hover:hover){.group-hover\:\[\&\>g\]\:\[\&\>path\:first-child\]\:translate-x-0\.5:is(:where(.group):hover *)>g>path:first-child{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}}}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
1
|
+
@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking: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-outline-style:solid;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--tracking-normal:0em;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--color-black:oklch(0% 0 0);--color-white:oklch(100% 0 0);--color-error:oklch(57.7% .245 27.325);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-pink-50:oklch(97.1% .014 343.198);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-200:oklch(89.9% .061 343.231);--color-pink-300:oklch(82.3% .12 346.018);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--color-pink-700:oklch(52.5% .223 3.958);--color-pink-800:oklch(45.9% .187 3.815);--color-pink-900:oklch(40.8% .153 2.432);--color-pink-950:oklch(28.4% .109 3.907);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-900:oklch(38% .189 293.745);--color-violet-950:oklch(28.3% .141 291.089);--spacing:4px;--font-poppins:Poppins,sans-serif;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700}}@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(--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(--default-font-feature-settings,normal);font-variation-settings:var(--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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--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}html{font-family:var(--font-poppins);color:var(--color-slate-600)}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4\.5{top:calc(var(--spacing)*4.5)}.top-6{top:calc(var(--spacing)*6)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.-bottom-20{bottom:calc(var(--spacing)*-20)}.bottom-2{bottom:calc(var(--spacing)*2)}.-left-8{left:calc(var(--spacing)*-8)}.left-1\/2{left:50%}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-1{margin:calc(var(--spacing)*1)}.m-\[\`\<spacing\>\`\]{margin:`<spacing>`}.-mt-0\.5{margin-top:calc(var(--spacing)*-.5)}.-ml-3{margin-left:calc(var(--spacing)*-3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-16{height:calc(var(--spacing)*16)}.h-24{height:calc(var(--spacing)*24)}.h-31\.25{height:calc(var(--spacing)*31.25)}.h-40{height:calc(var(--spacing)*40)}.h-80{height:calc(var(--spacing)*80)}.h-\[44px\]{height:44px}.h-\[\`\<spacing\>\`\]{height:`<spacing>`}.h-full{height:100%}.min-h-10{min-height:calc(var(--spacing)*10)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-31\.25{width:calc(var(--spacing)*31.25)}.w-40{width:calc(var(--spacing)*40)}.w-123{width:calc(var(--spacing)*123)}.w-148{width:calc(var(--spacing)*148)}.w-170{width:calc(var(--spacing)*170)}.w-\[\`\<spacing\>\`\]{width:`<spacing>`}.w-auto{width:auto}.w-full{width:100%}.min-w-10{min-width:calc(var(--spacing)*10)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-15{rotate:15deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-10{gap:calc(var(--spacing)*10)}.gap-12{gap:calc(var(--spacing)*12)}.gap-16{gap:calc(var(--spacing)*16)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-6{border-style:var(--tw-border-style);border-width:6px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid{--tw-border-style:solid;border-style:solid}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-error{background-color:var(--color-error)}.bg-pink-50{background-color:var(--color-pink-50)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-pink-200{background-color:var(--color-pink-200)}.bg-pink-300{background-color:var(--color-pink-300)}.bg-pink-400{background-color:var(--color-pink-400)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-pink-600{background-color:var(--color-pink-600)}.bg-pink-700{background-color:var(--color-pink-700)}.bg-pink-800{background-color:var(--color-pink-800)}.bg-pink-900{background-color:var(--color-pink-900)}.bg-pink-950{background-color:var(--color-pink-950)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-600{background-color:var(--color-slate-600)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-950{background-color:var(--color-slate-950)}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-100{background-color:var(--color-violet-100)}.bg-violet-200{background-color:var(--color-violet-200)}.bg-violet-300{background-color:var(--color-violet-300)}.bg-violet-400{background-color:var(--color-violet-400)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-violet-600{background-color:var(--color-violet-600)}.bg-violet-600\/0{background-color:#0000}@supports (color:color-mix(in lab,red,red)){.bg-violet-600\/0{background-color:color-mix(in oklab,var(--color-violet-600)0%,transparent)}}.bg-violet-700{background-color:var(--color-violet-700)}.bg-violet-800{background-color:var(--color-violet-800)}.bg-violet-900{background-color:var(--color-violet-900)}.bg-violet-950{background-color:var(--color-violet-950)}.bg-white{background-color:var(--color-white)}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-pink-500{--tw-gradient-from:var(--color-pink-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-0\%{--tw-gradient-from-position:0%}.to-violet-600{--tw-gradient-to:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-100\%{--tw-gradient-to-position:100%}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.p-10{padding:calc(var(--spacing)*10)}.p-\[\`\<spacing\>\`\]{padding:`<spacing>`}.px-3{padding-inline:calc(var(--spacing)*3)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-12{padding-top:calc(var(--spacing)*12)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-6{padding-right:calc(var(--spacing)*6)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.pr-12{padding-right:calc(var(--spacing)*12)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-12{padding-bottom:calc(var(--spacing)*12)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-12{padding-left:calc(var(--spacing)*12)}.align-middle{vertical-align:middle}.text-\[14px\]\/\[100\%\]{font-size:14px;line-height:100%}.text-\[16px\]\/\[100\%\]{font-size:16px;line-height:100%}.text-\[18px\]\/\[140\%\]{font-size:18px;line-height:140%}.text-\[20px\]\/\[100\%\]{font-size:20px;line-height:100%}.text-\[20px\]\/\[135\%\]{font-size:20px;line-height:135%}.text-\[24px\]\/\[100\%\]{font-size:24px;line-height:100%}.text-\[24px\]\/\[125\%\]{font-size:24px;line-height:125%}.text-\[24px\]\/\[145\%\]{font-size:24px;line-height:145%}.text-\[32px\]\/\[125\%\]{font-size:32px;line-height:125%}.text-\[40px\]\/\[125\%\]{font-size:40px;line-height:125%}.text-\[48px\]\/\[125\%\]{font-size:48px;line-height:125%}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.text-black{color:var(--color-black)}.text-error{color:var(--color-error)}.text-inherit{color:inherit}.text-pink-50{color:var(--color-pink-50)}.text-pink-100{color:var(--color-pink-100)}.text-pink-200{color:var(--color-pink-200)}.text-pink-300{color:var(--color-pink-300)}.text-pink-400{color:var(--color-pink-400)}.text-pink-500{color:var(--color-pink-500)}.text-pink-600{color:var(--color-pink-600)}.text-pink-700{color:var(--color-pink-700)}.text-pink-800{color:var(--color-pink-800)}.text-pink-900{color:var(--color-pink-900)}.text-pink-950{color:var(--color-pink-950)}.text-slate-50{color:var(--color-slate-50)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-slate-950{color:var(--color-slate-950)}.text-violet-50{color:var(--color-violet-50)}.text-violet-100{color:var(--color-violet-100)}.text-violet-200{color:var(--color-violet-200)}.text-violet-300{color:var(--color-violet-300)}.text-violet-400{color:var(--color-violet-400)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-violet-800{color:var(--color-violet-800)}.text-violet-900{color:var(--color-violet-900)}.text-violet-950{color:var(--color-violet-950)}.text-white{color:var(--color-white)}.underline{text-decoration-line:underline}.decoration-violet-600{-webkit-text-decoration-color:var(--color-violet-600);text-decoration-color:var(--color-violet-600)}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-100{opacity:1}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-350{--tw-duration:.35s;transition-duration:.35s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}:is(.\*\*\:cursor-pointer *){cursor:pointer}@media(hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:hidden:is(:where(.group):hover *){display:none}.group-hover\:rotate-0:is(:where(.group):hover *){rotate:none}.group-hover\:rotate-90:is(:where(.group):hover *){rotate:90deg}.group-hover\:pr-6:is(:where(.group):hover *){padding-right:calc(var(--spacing)*6)}.group-hover\:pl-6:is(:where(.group):hover *){padding-left:calc(var(--spacing)*6)}.group-hover\:text-slate-800:is(:where(.group):hover *){color:var(--color-slate-800)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-\[16px\]\/\[100\%\]::placeholder{font-size:16px;line-height:100%}.placeholder\:text-\[20px\]\/\[135\%\]::placeholder{font-size:20px;line-height:135%}.placeholder\:font-medium::placeholder{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\:tracking-normal::placeholder{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.placeholder\:text-slate-300::placeholder{color:var(--color-slate-300)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}.focus-within\:ring-violet-600:focus-within{--tw-ring-color:var(--color-violet-600)}@media(hover:hover){.hover\:scale-95:hover{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:bg-pink-50:hover{background-color:var(--color-pink-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-300:hover{background-color:var(--color-slate-300)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-violet-50:hover{background-color:var(--color-violet-50)}.hover\:bg-violet-600\/50:hover{background-color:#7f22fe80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-violet-600\/50:hover{background-color:color-mix(in oklab,var(--color-violet-600)50%,transparent)}}.hover\:bg-violet-700:hover{background-color:var(--color-violet-700)}.hover\:to-80\%:hover{--tw-gradient-to-position:80%}.hover\:text-pink-600:hover{color:var(--color-pink-600)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-violet-600:hover{color:var(--color-violet-600)}.hover\:text-violet-900:hover{color:var(--color-violet-900)}.hover\:decoration-violet-200:hover{-webkit-text-decoration-color:var(--color-violet-200);text-decoration-color:var(--color-violet-200)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-3:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-slate-100:hover{--tw-ring-color:var(--color-slate-100)}.hover\:ring-slate-200:hover{--tw-ring-color:var(--color-slate-200)}.hover\:ring-slate-300:hover{--tw-ring-color:var(--color-slate-300)}.hover\:ring-violet-100:hover{--tw-ring-color:var(--color-violet-100)}.hover\:ring-violet-600:hover{--tw-ring-color:var(--color-violet-600)}.hover\:transition-all:hover{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.hover\:duration-300:hover{--tw-duration:.3s;transition-duration:.3s}.hover\:duration-350:hover{--tw-duration:.35s;transition-duration:.35s}.hover\:ease-in-out:hover{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.hover\:ease-out:hover{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-violet-600:focus{--tw-ring-color:var(--color-violet-600)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-violet-600:focus-visible{--tw-ring-color:var(--color-violet-600)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:to-70\%:active{--tw-gradient-to-position:70%}.active\:ring-4:active{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.active\:ring-violet-200:active{--tw-ring-color:var(--color-violet-200)}.active\:duration-300:active{--tw-duration:.3s;transition-duration:.3s}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media(hover:hover){.group-hover\:\[\&\>g\]\:\[\&\>path\:first-child\]\:translate-x-0\.5:is(:where(.group):hover *)>g>path:first-child{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}}}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type VariantProps } from "tailwind-variants";
|
|
2
|
-
import { type PostBaseProps } from "../post-base/PostBase";
|
|
3
2
|
declare const PostStyles: import("tailwind-variants").TVReturnType<{
|
|
4
3
|
size: {
|
|
5
4
|
lg: {
|
|
@@ -9,6 +8,7 @@ declare const PostStyles: import("tailwind-variants").TVReturnType<{
|
|
|
9
8
|
};
|
|
10
9
|
}, {
|
|
11
10
|
base: never[];
|
|
11
|
+
avatar: string[];
|
|
12
12
|
content: string[];
|
|
13
13
|
text: string[];
|
|
14
14
|
action: string[];
|
|
@@ -21,6 +21,7 @@ declare const PostStyles: import("tailwind-variants").TVReturnType<{
|
|
|
21
21
|
};
|
|
22
22
|
}, {
|
|
23
23
|
base: never[];
|
|
24
|
+
avatar: string[];
|
|
24
25
|
content: string[];
|
|
25
26
|
text: string[];
|
|
26
27
|
action: string[];
|
|
@@ -33,13 +34,14 @@ declare const PostStyles: import("tailwind-variants").TVReturnType<{
|
|
|
33
34
|
};
|
|
34
35
|
}, {
|
|
35
36
|
base: never[];
|
|
37
|
+
avatar: string[];
|
|
36
38
|
content: string[];
|
|
37
39
|
text: string[];
|
|
38
40
|
action: string[];
|
|
39
41
|
}, undefined, unknown, unknown, undefined>>;
|
|
40
42
|
type PostVariants = VariantProps<typeof PostStyles>;
|
|
41
43
|
type PostSize = "md" | "lg";
|
|
42
|
-
interface PostProps extends PostVariants
|
|
44
|
+
interface PostProps extends PostVariants {
|
|
43
45
|
/** Size of the post, affecting layout and styling. */
|
|
44
46
|
size: PostSize;
|
|
45
47
|
/** The display name of the user who created the post. */
|
|
@@ -50,6 +52,10 @@ interface PostProps extends PostVariants, Omit<PostBaseProps, "children"> {
|
|
|
50
52
|
timestamp: Date;
|
|
51
53
|
/** The main text content of the post. */
|
|
52
54
|
text: string;
|
|
55
|
+
/** Avatar image URL */
|
|
56
|
+
src: string;
|
|
57
|
+
/** Triggered when the avatar is clicked. */
|
|
58
|
+
onAvatarClick: () => void;
|
|
53
59
|
/** Optional image source URL displayed within the post. */
|
|
54
60
|
imageSrc?: string;
|
|
55
61
|
/** Optional alt text for the post image, used for accessibility. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { tv } from "tailwind-variants";
|
|
3
|
-
import { LikeToggle, Paragraph, TimedButton, Toggle } from "../../components";
|
|
3
|
+
import { Avatar, LikeToggle, Paragraph, TimedButton, Toggle, } from "../../components";
|
|
4
4
|
import { Share } from "../../components/icons/generated";
|
|
5
5
|
import { ImageBanner } from "../image-banner/ImageBanner";
|
|
6
6
|
import { PostBase } from "../post-base/PostBase";
|
|
@@ -8,6 +8,7 @@ import { UserInfo } from "../user-info/UserInfo";
|
|
|
8
8
|
const PostStyles = tv({
|
|
9
9
|
slots: {
|
|
10
10
|
base: [],
|
|
11
|
+
avatar: ["absolute", "-left-8", "top-6"],
|
|
11
12
|
content: ["flex", "flex-col", "gap-6"],
|
|
12
13
|
text: ["text-slate-900"],
|
|
13
14
|
action: ["flex", "gap-10", "justify-start", "-ml-3"],
|
|
@@ -24,6 +25,6 @@ const PostStyles = tv({
|
|
|
24
25
|
* optional image, and action buttons (comment, like, share).
|
|
25
26
|
*/
|
|
26
27
|
export const Post = (props) => {
|
|
27
|
-
const { base, content, text, action } = PostStyles(props);
|
|
28
|
-
return (
|
|
28
|
+
const { base, avatar, content, text, action } = PostStyles(props);
|
|
29
|
+
return (_jsxs(PostBase, { className: base(), children: [_jsx("div", { className: avatar(), children: _jsx(Avatar, { alt: "Profile", size: "md", src: props.src, onAvatarClick: props.onAvatarClick }) }), _jsxs("div", { className: content(), children: [_jsx(UserInfo, { size: props.size, displayName: props.displayName, userName: props.userName, timestamp: props.timestamp, onClick: props.onAvatarClick }), _jsx(Paragraph, { size: props.size, className: text(), children: props.text }), props.imageSrc && (_jsx(ImageBanner, { src: props.imageSrc, alt: props.imageAlt ?? "", onClick: () => { } })), _jsxs("div", { className: action(), children: [_jsx(Toggle, { ariaLabel: "Comment", labelText: "Comment", onToggle: props.onCommentClick }), _jsx(LikeToggle, { onLikeChange: props.onLikeClick }), _jsx(TimedButton, { icon: Share, label: "Copy Link", labelActive: "Link copied", onClick: props.onShareClick })] })] })] }));
|
|
29
30
|
};
|
|
@@ -3,41 +3,29 @@ declare const PostBaseStyles: import("tailwind-variants").TVReturnType<{
|
|
|
3
3
|
[key: string]: {
|
|
4
4
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
5
5
|
base?: import("tailwind-merge").ClassNameValue;
|
|
6
|
-
avatar?: import("tailwind-merge").ClassNameValue;
|
|
7
6
|
};
|
|
8
7
|
};
|
|
9
8
|
} | {
|
|
10
9
|
[x: string]: {
|
|
11
10
|
[x: string]: import("tailwind-merge").ClassNameValue | {
|
|
12
11
|
base?: import("tailwind-merge").ClassNameValue;
|
|
13
|
-
avatar?: import("tailwind-merge").ClassNameValue;
|
|
14
12
|
};
|
|
15
13
|
};
|
|
16
14
|
} | {}, {
|
|
17
15
|
base: string[];
|
|
18
|
-
avatar: string[];
|
|
19
16
|
}, undefined, {
|
|
20
17
|
[key: string]: {
|
|
21
18
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
22
19
|
base?: import("tailwind-merge").ClassNameValue;
|
|
23
|
-
avatar?: import("tailwind-merge").ClassNameValue;
|
|
24
20
|
};
|
|
25
21
|
};
|
|
26
22
|
} | {}, {
|
|
27
23
|
base: string[];
|
|
28
|
-
avatar: string[];
|
|
29
24
|
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
30
25
|
base: string[];
|
|
31
|
-
avatar: string[];
|
|
32
26
|
}, undefined, unknown, unknown, undefined>>;
|
|
33
27
|
type PostBaseVariants = VariantProps<typeof PostBaseStyles>;
|
|
34
28
|
export interface PostBaseProps extends PostBaseVariants {
|
|
35
|
-
/** Avatar image URL */
|
|
36
|
-
src: string;
|
|
37
|
-
/**
|
|
38
|
-
* Triggered when the avatar is clicked.
|
|
39
|
-
*/
|
|
40
|
-
onAvatarClick: () => void;
|
|
41
29
|
/**
|
|
42
30
|
* Additional CSS class names to apply to the component.
|
|
43
31
|
*/
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn, tv } from "tailwind-variants";
|
|
3
|
-
import { Avatar } from "../../components/avatar/Avatar";
|
|
4
3
|
const PostBaseStyles = tv({
|
|
5
4
|
slots: {
|
|
6
5
|
base: [
|
|
@@ -16,7 +15,6 @@ const PostBaseStyles = tv({
|
|
|
16
15
|
"hover:ring-2",
|
|
17
16
|
"hover:ring-slate-200",
|
|
18
17
|
],
|
|
19
|
-
avatar: ["absolute", "-left-5", "top-6"],
|
|
20
18
|
},
|
|
21
19
|
});
|
|
22
20
|
/**
|
|
@@ -24,6 +22,6 @@ const PostBaseStyles = tv({
|
|
|
24
22
|
* and content area.
|
|
25
23
|
*/
|
|
26
24
|
export const PostBase = (props) => {
|
|
27
|
-
const { base
|
|
28
|
-
return (
|
|
25
|
+
const { base } = PostBaseStyles(props);
|
|
26
|
+
return _jsx("div", { className: cn(base(), props.className), children: props.children });
|
|
29
27
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type VariantProps } from "tailwind-variants";
|
|
2
|
-
import { type PostBaseProps } from "../post-base/PostBase";
|
|
3
2
|
declare const PostCreatorStyles: import("tailwind-variants").TVReturnType<{
|
|
4
3
|
[key: string]: {
|
|
5
4
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
6
5
|
input?: import("tailwind-merge").ClassNameValue;
|
|
7
6
|
title?: import("tailwind-merge").ClassNameValue;
|
|
7
|
+
avatar?: import("tailwind-merge").ClassNameValue;
|
|
8
8
|
action?: import("tailwind-merge").ClassNameValue;
|
|
9
9
|
content?: import("tailwind-merge").ClassNameValue;
|
|
10
10
|
};
|
|
@@ -14,12 +14,14 @@ declare const PostCreatorStyles: import("tailwind-variants").TVReturnType<{
|
|
|
14
14
|
[x: string]: import("tailwind-merge").ClassNameValue | {
|
|
15
15
|
input?: import("tailwind-merge").ClassNameValue;
|
|
16
16
|
title?: import("tailwind-merge").ClassNameValue;
|
|
17
|
+
avatar?: import("tailwind-merge").ClassNameValue;
|
|
17
18
|
action?: import("tailwind-merge").ClassNameValue;
|
|
18
19
|
content?: import("tailwind-merge").ClassNameValue;
|
|
19
20
|
};
|
|
20
21
|
};
|
|
21
22
|
} | {}, {
|
|
22
23
|
content: string[];
|
|
24
|
+
avatar: string[];
|
|
23
25
|
title: string[];
|
|
24
26
|
input: string[];
|
|
25
27
|
action: string[];
|
|
@@ -28,23 +30,30 @@ declare const PostCreatorStyles: import("tailwind-variants").TVReturnType<{
|
|
|
28
30
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
29
31
|
input?: import("tailwind-merge").ClassNameValue;
|
|
30
32
|
title?: import("tailwind-merge").ClassNameValue;
|
|
33
|
+
avatar?: import("tailwind-merge").ClassNameValue;
|
|
31
34
|
action?: import("tailwind-merge").ClassNameValue;
|
|
32
35
|
content?: import("tailwind-merge").ClassNameValue;
|
|
33
36
|
};
|
|
34
37
|
};
|
|
35
38
|
} | {}, {
|
|
36
39
|
content: string[];
|
|
40
|
+
avatar: string[];
|
|
37
41
|
title: string[];
|
|
38
42
|
input: string[];
|
|
39
43
|
action: string[];
|
|
40
44
|
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
41
45
|
content: string[];
|
|
46
|
+
avatar: string[];
|
|
42
47
|
title: string[];
|
|
43
48
|
input: string[];
|
|
44
49
|
action: string[];
|
|
45
50
|
}, undefined, unknown, unknown, undefined>>;
|
|
46
51
|
type PostCreatorVariants = VariantProps<typeof PostCreatorStyles>;
|
|
47
|
-
interface PostCreatorProps extends PostCreatorVariants
|
|
52
|
+
interface PostCreatorProps extends PostCreatorVariants {
|
|
53
|
+
/** Avatar image URL */
|
|
54
|
+
src: string;
|
|
55
|
+
/** Triggered when the avatar is clicked. */
|
|
56
|
+
onAvatarClick: () => void;
|
|
48
57
|
/**
|
|
49
58
|
* Callback fired when the "Send" button is clicked.
|
|
50
59
|
* Receives the textarea text and the optionally uploaded file.
|
|
@@ -2,12 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { Form } from "@radix-ui/react-form";
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { tv } from "tailwind-variants";
|
|
5
|
-
import { Button, FileUpload, Heading, Modal, Textarea } from "../../components";
|
|
5
|
+
import { Avatar, Button, FileUpload, Heading, Modal, Textarea, } from "../../components";
|
|
6
6
|
import { Cancel, Checkmark, Send, Upload, } from "../../components/icons/generated";
|
|
7
7
|
import { PostBase } from "../post-base/PostBase";
|
|
8
8
|
const PostCreatorStyles = tv({
|
|
9
9
|
slots: {
|
|
10
10
|
content: ["flex", "flex-col", "gap-4", "w-full"],
|
|
11
|
+
avatar: ["absolute", "-left-8", "top-6"],
|
|
11
12
|
title: ["text-slate-900"],
|
|
12
13
|
input: ["w-full", "h-40"],
|
|
13
14
|
action: ["flex", "gap-4"],
|
|
@@ -19,9 +20,9 @@ const PostCreatorStyles = tv({
|
|
|
19
20
|
* Renders a post creation component.
|
|
20
21
|
*/
|
|
21
22
|
export const PostCreator = (props) => {
|
|
22
|
-
const { content, title, input, action } = PostCreatorStyles(props);
|
|
23
|
+
const { content, avatar, title, input, action } = PostCreatorStyles(props);
|
|
23
24
|
const [open, setOpen] = useState(false);
|
|
24
25
|
const [file, setFile] = useState(null);
|
|
25
26
|
const [text, setText] = useState("");
|
|
26
|
-
return (_jsxs(_Fragment, { children: [
|
|
27
|
+
return (_jsxs(_Fragment, { children: [_jsxs(PostBase, { children: [_jsx("div", { className: avatar(), children: _jsx(Avatar, { alt: "Profile", size: "md", src: props.src, onAvatarClick: props.onAvatarClick }) }), _jsxs(Form, { className: content(), children: [_jsx(Heading, { size: "4", as: "h4", className: title(), children: "Hey, what's up?" }), _jsx("div", { className: input(), children: _jsx(Textarea, { name: "post", placeholder: "Your opinion matters!", onChange: setText }) }), _jsxs("div", { className: action(), children: [_jsx(Button, { intent: "primary", size: "md", icon: Upload, onClick: () => setOpen(true), children: "Picture upload" }), _jsx(Button, { intent: "secondary", size: "md", icon: Send, onClick: () => props.onSendClick(text, file), children: "Send" })] })] })] }), _jsxs(Modal, { open: open, onOpenChange: setOpen, title: "Picture upload", children: [_jsx(Modal.Body, { children: _jsx(FileUpload, { onFileSelect: setFile }) }), _jsxs(Modal.Actions, { children: [_jsx(Button, { intent: "primary", size: "md", icon: Cancel, onClick: () => setOpen(false), children: "Cancel" }), _jsx(Button, { intent: "secondary", size: "md", icon: Checkmark, onClick: () => setOpen(false), children: "Save" })] })] })] }));
|
|
27
28
|
};
|
|
@@ -1,54 +1,72 @@
|
|
|
1
1
|
import { type VariantProps } from "tailwind-variants";
|
|
2
2
|
declare const ProfileBannerStyles: import("tailwind-variants").TVReturnType<{
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
[key: string]: {
|
|
4
|
+
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
5
|
+
base?: import("tailwind-merge").ClassNameValue;
|
|
6
|
+
avatar?: import("tailwind-merge").ClassNameValue;
|
|
7
|
+
info?: import("tailwind-merge").ClassNameValue;
|
|
8
|
+
description?: import("tailwind-merge").ClassNameValue;
|
|
6
9
|
};
|
|
7
10
|
};
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
true: {
|
|
16
|
-
image: string[];
|
|
11
|
+
} | {
|
|
12
|
+
[x: string]: {
|
|
13
|
+
[x: string]: import("tailwind-merge").ClassNameValue | {
|
|
14
|
+
base?: import("tailwind-merge").ClassNameValue;
|
|
15
|
+
avatar?: import("tailwind-merge").ClassNameValue;
|
|
16
|
+
info?: import("tailwind-merge").ClassNameValue;
|
|
17
|
+
description?: import("tailwind-merge").ClassNameValue;
|
|
17
18
|
};
|
|
18
19
|
};
|
|
19
|
-
}, {
|
|
20
|
+
} | {}, {
|
|
20
21
|
base: string[];
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
avatar: string[];
|
|
23
|
+
info: string[];
|
|
24
|
+
description: string[];
|
|
25
|
+
}, undefined, {
|
|
26
|
+
[key: string]: {
|
|
27
|
+
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
28
|
+
base?: import("tailwind-merge").ClassNameValue;
|
|
29
|
+
avatar?: import("tailwind-merge").ClassNameValue;
|
|
30
|
+
info?: import("tailwind-merge").ClassNameValue;
|
|
31
|
+
description?: import("tailwind-merge").ClassNameValue;
|
|
28
32
|
};
|
|
29
33
|
};
|
|
30
|
-
}, {
|
|
34
|
+
} | {}, {
|
|
35
|
+
base: string[];
|
|
36
|
+
avatar: string[];
|
|
37
|
+
info: string[];
|
|
38
|
+
description: string[];
|
|
39
|
+
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
31
40
|
base: string[];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
avatar: string[];
|
|
42
|
+
info: string[];
|
|
43
|
+
description: string[];
|
|
35
44
|
}, undefined, unknown, unknown, undefined>>;
|
|
36
45
|
type ProfileBannerVariants = VariantProps<typeof ProfileBannerStyles>;
|
|
37
46
|
interface ProfileBannerProps extends ProfileBannerVariants {
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
|
|
47
|
+
/** URL of the user's avatar image. */
|
|
48
|
+
avatarSrc: string;
|
|
49
|
+
/** Alt text for the avatar image. */
|
|
50
|
+
avatarAlt: string;
|
|
51
|
+
/** URL of the profile banner or main image. */
|
|
52
|
+
imageSrc: string;
|
|
53
|
+
/** Alt text for the main image. */
|
|
54
|
+
imageAlt: string;
|
|
55
|
+
/** The user's display name. */
|
|
56
|
+
displayName: string;
|
|
57
|
+
/** The user’s username/handle. */
|
|
58
|
+
userName: string;
|
|
59
|
+
/** The user’s location string. */
|
|
60
|
+
location: string;
|
|
61
|
+
/** Date when the user joined. */
|
|
62
|
+
joinedTimestamp: Date;
|
|
63
|
+
/** Bio or profile description text. */
|
|
64
|
+
description: string;
|
|
65
|
+
/** Whether the profile being viewed belongs to the logged-in user. */
|
|
66
|
+
isCurrentUser: boolean;
|
|
46
67
|
}
|
|
47
68
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* Displays a banner image with a fixed aspect ratio (17:8) and an optional overlay icon.
|
|
51
|
-
* If the image fails to load, a fallback element is displayed instead.
|
|
69
|
+
* Profile banner component for displaying user profile info.
|
|
52
70
|
*/
|
|
53
71
|
export declare const ProfileBanner: React.FC<ProfileBannerProps>;
|
|
54
72
|
export {};
|
|
@@ -1,57 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
3
|
+
import { Avatar, Paragraph } from "../../components";
|
|
4
|
+
import { ProfileBannerImage } from "../profile-banner-image/ProfileBannerImage";
|
|
5
|
+
import { ProfileBannerInfo } from "../profile-banner-info/ProfileBannerInfo";
|
|
6
6
|
const ProfileBannerStyles = tv({
|
|
7
7
|
slots: {
|
|
8
|
-
base: ["w-170", "h-80"],
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"cursor-pointer",
|
|
13
|
-
"rounded-2xl",
|
|
14
|
-
"object-cover",
|
|
15
|
-
],
|
|
16
|
-
overlay: [
|
|
17
|
-
"group",
|
|
18
|
-
"absolute",
|
|
19
|
-
"flex",
|
|
20
|
-
"items-center",
|
|
21
|
-
"justify-center",
|
|
22
|
-
"text-white",
|
|
23
|
-
"inset-0",
|
|
24
|
-
"bg-violet-600/0",
|
|
25
|
-
"hover:bg-violet-600/50",
|
|
26
|
-
"transition",
|
|
27
|
-
"duration-500",
|
|
28
|
-
"ease-in-out",
|
|
29
|
-
],
|
|
30
|
-
icon: [
|
|
31
|
-
"w-8",
|
|
32
|
-
"h-8",
|
|
33
|
-
"opacity-0",
|
|
34
|
-
"group-hover:opacity-100",
|
|
35
|
-
"transition",
|
|
36
|
-
"duration-500",
|
|
37
|
-
"rotate-15",
|
|
38
|
-
"group-hover:rotate-0",
|
|
39
|
-
],
|
|
40
|
-
},
|
|
41
|
-
variants: {
|
|
42
|
-
isFallback: {
|
|
43
|
-
true: { image: ["bg-violet-200"] },
|
|
44
|
-
},
|
|
8
|
+
base: ["flex", "flex-col", "gap-6", "w-170", "h-80", "relative"],
|
|
9
|
+
avatar: ["absolute", "-bottom-20", "right-6"],
|
|
10
|
+
info: ["flex", "flex-col", "gap-3"],
|
|
11
|
+
description: ["text-slate-500"],
|
|
45
12
|
},
|
|
46
13
|
});
|
|
47
14
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* Displays a banner image with a fixed aspect ratio (17:8) and an optional overlay icon.
|
|
51
|
-
* If the image fails to load, a fallback element is displayed instead.
|
|
15
|
+
* Profile banner component for displaying user profile info.
|
|
52
16
|
*/
|
|
53
17
|
export const ProfileBanner = (props) => {
|
|
54
|
-
const { base,
|
|
55
|
-
|
|
56
|
-
return (_jsx("div", { className: base(), children: src ? (_jsxs(AspectRatio.Root, { ratio: 17 / 8, children: [_jsx("img", { className: image(), src: src, alt: props.alt, onError: () => setSrc("") }), _jsx("button", { className: cn(image(), overlay()), onClick: props.onClick, children: _jsx(Edit, { className: icon() }) })] })) : (_jsx("div", { className: image({ isFallback: true }) })) }));
|
|
18
|
+
const { base, avatar, info, description } = ProfileBannerStyles(props);
|
|
19
|
+
return (_jsxs("div", { className: base(), children: [_jsx(ProfileBannerImage, { src: props.imageSrc, alt: props.imageAlt, onClick: () => { } }), _jsx("div", { className: avatar(), children: _jsx(Avatar, { src: props.avatarSrc, alt: props.avatarAlt, size: "xl", onActionClick: props.isCurrentUser ? () => { } : undefined }) }), _jsxs("div", { className: info(), children: [_jsx(ProfileBannerInfo, { isCurrentUser: props.isCurrentUser, displayName: props.displayName, userName: props.userName, location: props.location, joinedTimestamp: props.joinedTimestamp, onProfileClick: () => { } }), _jsx(Paragraph, { size: "md", className: description(), children: props.description })] })] }));
|
|
57
20
|
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type VariantProps } from "tailwind-variants";
|
|
2
|
+
declare const ProfileBannerImageStyles: import("tailwind-variants").TVReturnType<{
|
|
3
|
+
isFallback: {
|
|
4
|
+
true: {
|
|
5
|
+
image: string[];
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
}, {
|
|
9
|
+
base: string[];
|
|
10
|
+
image: string[];
|
|
11
|
+
overlay: string[];
|
|
12
|
+
icon: string[];
|
|
13
|
+
}, undefined, {
|
|
14
|
+
isFallback: {
|
|
15
|
+
true: {
|
|
16
|
+
image: string[];
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}, {
|
|
20
|
+
base: string[];
|
|
21
|
+
image: string[];
|
|
22
|
+
overlay: string[];
|
|
23
|
+
icon: string[];
|
|
24
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
25
|
+
isFallback: {
|
|
26
|
+
true: {
|
|
27
|
+
image: string[];
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}, {
|
|
31
|
+
base: string[];
|
|
32
|
+
image: string[];
|
|
33
|
+
overlay: string[];
|
|
34
|
+
icon: string[];
|
|
35
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
36
|
+
type ProfileBannerImageVariants = VariantProps<typeof ProfileBannerImageStyles>;
|
|
37
|
+
interface ProfileBannerImageProps extends ProfileBannerImageVariants {
|
|
38
|
+
/** Avatar image URL */
|
|
39
|
+
src: string;
|
|
40
|
+
/**
|
|
41
|
+
* Alternative text for the image, used for accessibility.
|
|
42
|
+
*/
|
|
43
|
+
alt: string;
|
|
44
|
+
/** Click handler for the whole ProfileBannerImage component */
|
|
45
|
+
onClick: () => void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* ProfileBannerImage component
|
|
49
|
+
*
|
|
50
|
+
* Displays a banner image with a fixed aspect ratio (17:8) and an optional overlay icon.
|
|
51
|
+
* If the image fails to load, a fallback element is displayed instead.
|
|
52
|
+
*/
|
|
53
|
+
export declare const ProfileBannerImage: React.FC<ProfileBannerImageProps>;
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as AspectRatio from "@radix-ui/react-aspect-ratio";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { cn, tv } from "tailwind-variants";
|
|
5
|
+
import { Edit } from "../../components/icons/generated";
|
|
6
|
+
const ProfileBannerImageStyles = tv({
|
|
7
|
+
slots: {
|
|
8
|
+
base: ["w-170", "h-80"],
|
|
9
|
+
image: [
|
|
10
|
+
"h-full",
|
|
11
|
+
"w-full",
|
|
12
|
+
"cursor-pointer",
|
|
13
|
+
"rounded-2xl",
|
|
14
|
+
"object-cover",
|
|
15
|
+
],
|
|
16
|
+
overlay: [
|
|
17
|
+
"group",
|
|
18
|
+
"absolute",
|
|
19
|
+
"flex",
|
|
20
|
+
"items-center",
|
|
21
|
+
"justify-center",
|
|
22
|
+
"text-white",
|
|
23
|
+
"inset-0",
|
|
24
|
+
"bg-violet-600/0",
|
|
25
|
+
"hover:bg-violet-600/50",
|
|
26
|
+
"transition",
|
|
27
|
+
"duration-500",
|
|
28
|
+
"ease-in-out",
|
|
29
|
+
],
|
|
30
|
+
icon: [
|
|
31
|
+
"w-8",
|
|
32
|
+
"h-8",
|
|
33
|
+
"opacity-0",
|
|
34
|
+
"group-hover:opacity-100",
|
|
35
|
+
"transition",
|
|
36
|
+
"duration-500",
|
|
37
|
+
"rotate-15",
|
|
38
|
+
"group-hover:rotate-0",
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
variants: {
|
|
42
|
+
isFallback: {
|
|
43
|
+
true: { image: ["bg-violet-200"] },
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* ProfileBannerImage component
|
|
49
|
+
*
|
|
50
|
+
* Displays a banner image with a fixed aspect ratio (17:8) and an optional overlay icon.
|
|
51
|
+
* If the image fails to load, a fallback element is displayed instead.
|
|
52
|
+
*/
|
|
53
|
+
export const ProfileBannerImage = (props) => {
|
|
54
|
+
const { base, image, overlay, icon } = ProfileBannerImageStyles(props);
|
|
55
|
+
const [src, setSrc] = useState(props.src);
|
|
56
|
+
return (_jsx("div", { className: base(), children: src ? (_jsxs(AspectRatio.Root, { ratio: 17 / 8, children: [_jsx("img", { className: image(), src: src, alt: props.alt, onError: () => setSrc("") }), _jsx("button", { className: cn(image(), overlay()), onClick: props.onClick, children: _jsx(Edit, { className: icon() }) })] })) : (_jsx("div", { className: image({ isFallback: true }) })) }));
|
|
57
|
+
};
|
|
@@ -4,6 +4,8 @@ declare const profileBannerInfoStyles: import("tailwind-variants").TVReturnType<
|
|
|
4
4
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
5
5
|
displayName?: import("tailwind-merge").ClassNameValue;
|
|
6
6
|
base?: import("tailwind-merge").ClassNameValue;
|
|
7
|
+
title?: import("tailwind-merge").ClassNameValue;
|
|
8
|
+
icon?: import("tailwind-merge").ClassNameValue;
|
|
7
9
|
detailInfo?: import("tailwind-merge").ClassNameValue;
|
|
8
10
|
secondaryInfo?: import("tailwind-merge").ClassNameValue;
|
|
9
11
|
};
|
|
@@ -13,12 +15,16 @@ declare const profileBannerInfoStyles: import("tailwind-variants").TVReturnType<
|
|
|
13
15
|
[x: string]: import("tailwind-merge").ClassNameValue | {
|
|
14
16
|
displayName?: import("tailwind-merge").ClassNameValue;
|
|
15
17
|
base?: import("tailwind-merge").ClassNameValue;
|
|
18
|
+
title?: import("tailwind-merge").ClassNameValue;
|
|
19
|
+
icon?: import("tailwind-merge").ClassNameValue;
|
|
16
20
|
detailInfo?: import("tailwind-merge").ClassNameValue;
|
|
17
21
|
secondaryInfo?: import("tailwind-merge").ClassNameValue;
|
|
18
22
|
};
|
|
19
23
|
};
|
|
20
24
|
} | {}, {
|
|
21
25
|
base: string[];
|
|
26
|
+
title: string[];
|
|
27
|
+
icon: string[];
|
|
22
28
|
displayName: string[];
|
|
23
29
|
detailInfo: string[];
|
|
24
30
|
secondaryInfo: string[];
|
|
@@ -27,23 +33,31 @@ declare const profileBannerInfoStyles: import("tailwind-variants").TVReturnType<
|
|
|
27
33
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
28
34
|
displayName?: import("tailwind-merge").ClassNameValue;
|
|
29
35
|
base?: import("tailwind-merge").ClassNameValue;
|
|
36
|
+
title?: import("tailwind-merge").ClassNameValue;
|
|
37
|
+
icon?: import("tailwind-merge").ClassNameValue;
|
|
30
38
|
detailInfo?: import("tailwind-merge").ClassNameValue;
|
|
31
39
|
secondaryInfo?: import("tailwind-merge").ClassNameValue;
|
|
32
40
|
};
|
|
33
41
|
};
|
|
34
42
|
} | {}, {
|
|
35
43
|
base: string[];
|
|
44
|
+
title: string[];
|
|
45
|
+
icon: string[];
|
|
36
46
|
displayName: string[];
|
|
37
47
|
detailInfo: string[];
|
|
38
48
|
secondaryInfo: string[];
|
|
39
49
|
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
40
50
|
base: string[];
|
|
51
|
+
title: string[];
|
|
52
|
+
icon: string[];
|
|
41
53
|
displayName: string[];
|
|
42
54
|
detailInfo: string[];
|
|
43
55
|
secondaryInfo: string[];
|
|
44
56
|
}, undefined, unknown, unknown, undefined>>;
|
|
45
57
|
type ProfileBannerInfoVariants = VariantProps<typeof profileBannerInfoStyles>;
|
|
46
58
|
interface ProfileBannerInfoProps extends ProfileBannerInfoVariants {
|
|
59
|
+
/** Whether the profile being viewed belongs to the logged-in user. */
|
|
60
|
+
isCurrentUser: boolean;
|
|
47
61
|
/**
|
|
48
62
|
* The user's full display name (e.g., "John Doe").
|
|
49
63
|
*/
|
|
@@ -65,7 +79,9 @@ interface ProfileBannerInfoProps extends ProfileBannerInfoVariants {
|
|
|
65
79
|
* Callback fired whenever any profile-related element is clicked.
|
|
66
80
|
* Typically used to open the profile or navigate to a user page.
|
|
67
81
|
*/
|
|
68
|
-
|
|
82
|
+
onProfileClick: () => void;
|
|
83
|
+
/** A function called when the settings button is clicked. */
|
|
84
|
+
onSettingsClick?: () => void;
|
|
69
85
|
}
|
|
70
86
|
/**
|
|
71
87
|
* ProfileBannerInfo Component
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { tv } from "tailwind-variants";
|
|
3
3
|
import { IconButton } from "../../components/icon-button/IconButton";
|
|
4
|
-
import { Profile, Location, Calendar } from "../../components/icons/generated";
|
|
4
|
+
import { Profile, Location, Calendar, Settings, } from "../../components/icons/generated";
|
|
5
5
|
import { Label } from "../../components/typography/Label";
|
|
6
6
|
const profileBannerInfoStyles = tv({
|
|
7
7
|
slots: {
|
|
8
8
|
base: ["flex", "flex-col", "gap-2", "items-start"],
|
|
9
|
+
title: ["flex", "gap-1", "items-center"],
|
|
10
|
+
icon: ["text-violet-600", "-mt-0.5"],
|
|
9
11
|
displayName: ["text-slate-900", "**:cursor-pointer"],
|
|
10
12
|
detailInfo: ["flex", "gap-4"],
|
|
11
13
|
secondaryInfo: ["text-slate-500"],
|
|
@@ -40,6 +42,6 @@ const memberSincePrefix = "Member since ";
|
|
|
40
42
|
* Renders profile information used in a user profile banner
|
|
41
43
|
*/
|
|
42
44
|
export const ProfileBannerInfo = (props) => {
|
|
43
|
-
const { base, displayName, detailInfo, secondaryInfo } = profileBannerInfoStyles(props);
|
|
44
|
-
return (_jsxs("div", { className: base(), children: [_jsx("button", { onClick: props.
|
|
45
|
+
const { base, title, icon, displayName, detailInfo, secondaryInfo } = profileBannerInfoStyles(props);
|
|
46
|
+
return (_jsxs("div", { className: base(), children: [_jsxs("div", { className: title(), children: [_jsx("button", { onClick: props.onProfileClick, className: displayName(), children: _jsx(Label, { size: "xl", children: props.displayName }) }), props.isCurrentUser && _jsx(Settings, { className: icon() })] }), _jsxs("div", { className: detailInfo(), children: [_jsx(IconButton, { intent: "secondary", icon: Profile, onClick: props.onProfileClick, children: props.userName }), _jsx(IconButton, { intent: "primary", icon: Location, onClick: props.onProfileClick, className: secondaryInfo(), children: props.location }), _jsx(IconButton, { intent: "primary", icon: Calendar, onClick: props.onProfileClick, className: secondaryInfo(), children: memberSincePrefix + timeSince(props.joinedTimestamp) })] })] }));
|
|
45
47
|
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { type VariantProps } from "tailwind-variants";
|
|
2
|
+
declare const ResponseStyles: import("tailwind-variants").TVReturnType<{
|
|
3
|
+
[key: string]: {
|
|
4
|
+
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
5
|
+
base?: import("tailwind-merge").ClassNameValue;
|
|
6
|
+
text?: import("tailwind-merge").ClassNameValue;
|
|
7
|
+
action?: import("tailwind-merge").ClassNameValue;
|
|
8
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
} | {
|
|
12
|
+
[x: string]: {
|
|
13
|
+
[x: string]: import("tailwind-merge").ClassNameValue | {
|
|
14
|
+
base?: import("tailwind-merge").ClassNameValue;
|
|
15
|
+
text?: import("tailwind-merge").ClassNameValue;
|
|
16
|
+
action?: import("tailwind-merge").ClassNameValue;
|
|
17
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
} | {}, {
|
|
21
|
+
base: never[];
|
|
22
|
+
content: string[];
|
|
23
|
+
text: string[];
|
|
24
|
+
action: string[];
|
|
25
|
+
}, undefined, {
|
|
26
|
+
[key: string]: {
|
|
27
|
+
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
28
|
+
base?: import("tailwind-merge").ClassNameValue;
|
|
29
|
+
text?: import("tailwind-merge").ClassNameValue;
|
|
30
|
+
action?: import("tailwind-merge").ClassNameValue;
|
|
31
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
} | {}, {
|
|
35
|
+
base: never[];
|
|
36
|
+
content: string[];
|
|
37
|
+
text: string[];
|
|
38
|
+
action: string[];
|
|
39
|
+
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
40
|
+
base: never[];
|
|
41
|
+
content: string[];
|
|
42
|
+
text: string[];
|
|
43
|
+
action: string[];
|
|
44
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
45
|
+
type ResponseVariants = VariantProps<typeof ResponseStyles>;
|
|
46
|
+
interface ResponseProps extends ResponseVariants {
|
|
47
|
+
/** The display name of the user who created the Response. */
|
|
48
|
+
displayName: string;
|
|
49
|
+
/** The username or handle associated with the Response. */
|
|
50
|
+
userName: string;
|
|
51
|
+
/** The date and time when the Response was created. */
|
|
52
|
+
timestamp: Date;
|
|
53
|
+
/** The main text content of the Response. */
|
|
54
|
+
text: string;
|
|
55
|
+
/** Avatar image URL */
|
|
56
|
+
src: string;
|
|
57
|
+
/** Triggered when the avatar is clicked. */
|
|
58
|
+
onAvatarClick: () => void;
|
|
59
|
+
/** Optional image source URL displayed within the Response. */
|
|
60
|
+
imageSrc?: string;
|
|
61
|
+
/** Optional alt text for the Response image, used for accessibility. */
|
|
62
|
+
imageAlt?: string;
|
|
63
|
+
/** Callback fired when the comment button is clicked. */
|
|
64
|
+
onCommentClick: () => void;
|
|
65
|
+
/** Callback fired when the like button is clicked. */
|
|
66
|
+
onLikeClick: () => void;
|
|
67
|
+
/** Callback fired when the share button is clicked. */
|
|
68
|
+
onShareClick: () => void;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Detailed Response component displaying user info, text content,
|
|
72
|
+
* optional image, and action buttons (comment, like, share).
|
|
73
|
+
*/
|
|
74
|
+
export declare const Response: React.FC<ResponseProps>;
|
|
75
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
3
|
+
import { LikeToggle, Paragraph, TimedButton, Toggle } from "../../components";
|
|
4
|
+
import { Share } from "../../components/icons/generated";
|
|
5
|
+
import { ImageBanner } from "../image-banner/ImageBanner";
|
|
6
|
+
import { PostBase } from "../post-base/PostBase";
|
|
7
|
+
import { UserInfo } from "../user-info/UserInfo";
|
|
8
|
+
const ResponseStyles = tv({
|
|
9
|
+
slots: {
|
|
10
|
+
base: [],
|
|
11
|
+
content: ["flex", "flex-col", "gap-4"],
|
|
12
|
+
text: ["text-slate-900"],
|
|
13
|
+
action: ["flex", "gap-10", "justify-start", "-ml-3"],
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Detailed Response component displaying user info, text content,
|
|
18
|
+
* optional image, and action buttons (comment, like, share).
|
|
19
|
+
*/
|
|
20
|
+
export const Response = (props) => {
|
|
21
|
+
const { base, content, text, action } = ResponseStyles(props);
|
|
22
|
+
return (_jsx(PostBase, { className: base(), children: _jsxs("div", { className: content(), children: [_jsx(UserInfo, { size: "sm", src: props.src, displayName: props.displayName, userName: props.userName, timestamp: props.timestamp, onClick: props.onAvatarClick }), _jsx(Paragraph, { size: "md", className: text(), children: props.text }), props.imageSrc && (_jsx(ImageBanner, { src: props.imageSrc, alt: props.imageAlt ?? "", onClick: () => { } })), _jsxs("div", { className: action(), children: [_jsx(Toggle, { ariaLabel: "Comment", labelText: "Comment", onToggle: props.onCommentClick }), _jsx(LikeToggle, { onLikeChange: props.onLikeClick }), _jsx(TimedButton, { icon: Share, label: "Copy Link", labelActive: "Link copied", onClick: props.onShareClick })] })] }) }));
|
|
23
|
+
};
|
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
import { type VariantProps } from "tailwind-variants";
|
|
2
|
-
declare const
|
|
2
|
+
declare const ResponseCreatorStyles: import("tailwind-variants").TVReturnType<{
|
|
3
3
|
[key: string]: {
|
|
4
4
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
5
|
-
base?: import("tailwind-merge").ClassNameValue;
|
|
6
5
|
input?: import("tailwind-merge").ClassNameValue;
|
|
7
6
|
action?: import("tailwind-merge").ClassNameValue;
|
|
7
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
} | {
|
|
11
11
|
[x: string]: {
|
|
12
12
|
[x: string]: import("tailwind-merge").ClassNameValue | {
|
|
13
|
-
base?: import("tailwind-merge").ClassNameValue;
|
|
14
13
|
input?: import("tailwind-merge").ClassNameValue;
|
|
15
14
|
action?: import("tailwind-merge").ClassNameValue;
|
|
15
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
18
|
} | {}, {
|
|
19
|
-
|
|
19
|
+
content: string[];
|
|
20
20
|
input: string[];
|
|
21
21
|
action: string[];
|
|
22
22
|
}, undefined, {
|
|
23
23
|
[key: string]: {
|
|
24
24
|
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
25
|
-
base?: import("tailwind-merge").ClassNameValue;
|
|
26
25
|
input?: import("tailwind-merge").ClassNameValue;
|
|
27
26
|
action?: import("tailwind-merge").ClassNameValue;
|
|
27
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
30
|
} | {}, {
|
|
31
|
-
|
|
31
|
+
content: string[];
|
|
32
32
|
input: string[];
|
|
33
33
|
action: string[];
|
|
34
34
|
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
35
|
-
|
|
35
|
+
content: string[];
|
|
36
36
|
input: string[];
|
|
37
37
|
action: string[];
|
|
38
38
|
}, undefined, unknown, unknown, undefined>>;
|
|
39
|
-
type
|
|
40
|
-
interface
|
|
39
|
+
type ResponseCreatorVariants = VariantProps<typeof ResponseCreatorStyles>;
|
|
40
|
+
interface ResponseCreatorProps extends ResponseCreatorVariants {
|
|
41
41
|
/** Avatar image URL */
|
|
42
42
|
src: string;
|
|
43
43
|
/** Display name of the user */
|
|
@@ -55,9 +55,9 @@ interface CommentCreatorProps extends CommentCreatorVariants {
|
|
|
55
55
|
onAvatarClick: () => void;
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
58
|
+
* ResponseCreator component
|
|
59
59
|
*
|
|
60
|
-
* Renders a
|
|
60
|
+
* Renders a Response creation component.
|
|
61
61
|
*/
|
|
62
|
-
export declare const
|
|
62
|
+
export declare const ResponseCreator: React.FC<ResponseCreatorProps>;
|
|
63
63
|
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Form } from "@radix-ui/react-form";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { tv } from "tailwind-variants";
|
|
5
|
+
import { Button, FileUpload, Modal, Textarea } from "../../components";
|
|
6
|
+
import { Cancel, Checkmark, Send, Upload, } from "../../components/icons/generated";
|
|
7
|
+
import { PostBase } from "../post-base/PostBase";
|
|
8
|
+
import { UserInfo } from "../user-info/UserInfo";
|
|
9
|
+
const ResponseCreatorStyles = tv({
|
|
10
|
+
slots: {
|
|
11
|
+
content: ["flex", "flex-col", "gap-4", "w-full"],
|
|
12
|
+
input: ["w-full", "h-40"],
|
|
13
|
+
action: ["flex", "gap-4"],
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* ResponseCreator component
|
|
18
|
+
*
|
|
19
|
+
* Renders a Response creation component.
|
|
20
|
+
*/
|
|
21
|
+
export const ResponseCreator = (props) => {
|
|
22
|
+
const { content, input, action } = ResponseCreatorStyles(props);
|
|
23
|
+
const [open, setOpen] = useState(false);
|
|
24
|
+
const [file, setFile] = useState(null);
|
|
25
|
+
const [text, setText] = useState("");
|
|
26
|
+
return (_jsxs(_Fragment, { children: [_jsx(PostBase, { children: _jsxs(Form, { className: content(), children: [_jsx(UserInfo, { displayName: props.displayName, onClick: props.onAvatarClick, size: "sm", src: props.src, userName: props.userName }), _jsx("div", { className: input(), children: _jsx(Textarea, { name: "post", placeholder: "Your opinion matters!", onChange: setText }) }), _jsxs("div", { className: action(), children: [_jsx(Button, { intent: "primary", size: "md", icon: Upload, onClick: () => setOpen(true), children: "Picture upload" }), _jsx(Button, { intent: "secondary", size: "md", icon: Send, onClick: () => props.onSendClick(text, file), children: "Send" })] })] }) }), _jsxs(Modal, { open: open, onOpenChange: setOpen, title: "Picture upload", children: [_jsx(Modal.Body, { children: _jsx(FileUpload, { onFileSelect: setFile }) }), _jsxs(Modal.Actions, { children: [_jsx(Button, { intent: "primary", size: "md", icon: Cancel, onClick: () => setOpen(false), children: "Cancel" }), _jsx(Button, { intent: "secondary", size: "md", icon: Checkmark, onClick: () => setOpen(false), children: "Save" })] })] })] }));
|
|
27
|
+
};
|
package/package.json
CHANGED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Form } from "@radix-ui/react-form";
|
|
3
|
-
import { useState } from "react";
|
|
4
|
-
import { tv } from "tailwind-variants";
|
|
5
|
-
import { Button, FileUpload, Modal, Textarea } from "../../components";
|
|
6
|
-
import { Cancel, Checkmark, Send, Upload, } from "../../components/icons/generated";
|
|
7
|
-
import { UserInfo } from "../user-info/UserInfo";
|
|
8
|
-
const CommentCreatorStyles = tv({
|
|
9
|
-
slots: {
|
|
10
|
-
base: [
|
|
11
|
-
"flex",
|
|
12
|
-
"flex-col",
|
|
13
|
-
"gap-4",
|
|
14
|
-
"bg-white",
|
|
15
|
-
"rounded-2xl",
|
|
16
|
-
"pl-12",
|
|
17
|
-
"pr-12",
|
|
18
|
-
"pt-8",
|
|
19
|
-
"pb-8",
|
|
20
|
-
],
|
|
21
|
-
input: ["w-146", "h-40"],
|
|
22
|
-
action: ["flex", "gap-4"],
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
/**
|
|
26
|
-
* CommentCreator component
|
|
27
|
-
*
|
|
28
|
-
* Renders a comment creation component.
|
|
29
|
-
*/
|
|
30
|
-
export const CommentCreator = (props) => {
|
|
31
|
-
const { base, input, action } = CommentCreatorStyles(props);
|
|
32
|
-
const [open, setOpen] = useState(false);
|
|
33
|
-
const [file, setFile] = useState(null);
|
|
34
|
-
const [text, setText] = useState("");
|
|
35
|
-
return (_jsxs(_Fragment, { children: [_jsx(Form, { children: _jsxs("div", { className: base(), children: [_jsx(UserInfo, { displayName: props.displayName, onClick: props.onAvatarClick, size: "sm", src: props.src, userName: props.userName }), _jsx("div", { className: input(), children: _jsx(Textarea, { name: "post", placeholder: "Your opinion matters!", onChange: setText }) }), _jsxs("div", { className: action(), children: [_jsx(Button, { intent: "primary", size: "md", icon: Upload, onClick: () => setOpen(true), children: "Picture upload" }), _jsx(Button, { intent: "secondary", size: "md", icon: Send, onClick: () => props.onSendClick(text, file), children: "Send" })] })] }) }), _jsxs(Modal, { open: open, onOpenChange: setOpen, title: "Picture upload", children: [_jsx(Modal.Body, { children: _jsx(FileUpload, { onFileSelect: setFile }) }), _jsxs(Modal.Actions, { children: [_jsx(Button, { intent: "primary", size: "md", icon: Cancel, onClick: () => setOpen(false), children: "Cancel" }), _jsx(Button, { intent: "secondary", size: "md", icon: Checkmark, onClick: () => setOpen(false), children: "Save" })] })] })] }));
|
|
36
|
-
};
|