@maebgch/rcs-emulator 0.1.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/README.md +202 -0
- package/dist/rcs-emulator.cjs.js +218 -0
- package/dist/rcs-emulator.cjs.js.map +1 -0
- package/dist/rcs-emulator.es.js +2084 -0
- package/dist/rcs-emulator.es.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/types/index.d.ts +405 -0
- package/package.json +76 -0
package/dist/style.css
ADDED
|
@@ -0,0 +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-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--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-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-green-100:oklch(96.2% .044 156.743);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--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}}@layer components{.rcs-emulator{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Google Sans,Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.rcs-scrollbar::-webkit-scrollbar{width:4px}.rcs-scrollbar::-webkit-scrollbar-track{background:0 0}.rcs-scrollbar::-webkit-scrollbar-thumb{background:#c4c4c4;border-radius:2px}.rcs-scrollbar::-webkit-scrollbar-thumb:hover{background:#a0a0a0}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-10{top:calc(var(--spacing)*-10)}.top-1\/2{top:50%}.top-14{top:calc(var(--spacing)*14)}.-right-0\.5{right:calc(var(--spacing)*-.5)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.-bottom-0\.5{bottom:calc(var(--spacing)*-.5)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.z-10{z-index:10}.z-50{z-index: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}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.-mx-3{margin-inline:calc(var(--spacing)*-3)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-1\.5{margin-left:calc(var(--spacing)*-1.5)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing)*1)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-36{height:calc(var(--spacing)*36)}.h-40{height:calc(var(--spacing)*40)}.h-44{height:calc(var(--spacing)*44)}.h-56{height:calc(var(--spacing)*56)}.h-\[50\%\]{height:50%}.h-\[80\%\]{height:80%}.h-full{height:100%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-32{width:calc(var(--spacing)*32)}.w-44{width:calc(var(--spacing)*44)}.w-52{width:calc(var(--spacing)*52)}.w-full{width:100%}.max-w-\[85\%\]{max-width:85%}.max-w-\[90\%\]{max-width:90%}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;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)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-start{scroll-snap-align:start}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}:where(.divide-zinc-600>:not(:last-child)){border-color:var(--color-zinc-600)}:where(.divide-zinc-700>:not(:last-child)){border-color:var(--color-zinc-700)}:where(.divide-zinc-800>:not(:last-child)){border-color:var(--color-zinc-800)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-bl-sm{border-bottom-left-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-3{border-style:var(--tw-border-style);border-width:3px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-white{border-color:var(--color-white)}.border-zinc-600{border-color:var(--color-zinc-600)}.border-zinc-700{border-color:var(--color-zinc-700)}.border-zinc-800{border-color:var(--color-zinc-800)}.border-zinc-950{border-color:var(--color-zinc-950)}.border-t-transparent{border-top-color:#0000}.bg-\[\#e8f5e9\]{background-color:#e8f5e9}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-green-100{background-color:var(--color-green-100)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-zinc-500{background-color:var(--color-zinc-500)}.bg-zinc-600{background-color:var(--color-zinc-600)}.bg-zinc-700{background-color:var(--color-zinc-700)}.bg-zinc-800{background-color:var(--color-zinc-800)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-950{background-color:var(--color-zinc-950)}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-3\.5{padding-block:calc(var(--spacing)*3.5)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-12{padding-top:calc(var(--spacing)*12)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.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-8{padding-bottom:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-amber-500{color:var(--color-amber-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.italic{font-style:italic}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--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))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-zinc-600:hover{background-color:var(--color-zinc-600)}.hover\:bg-zinc-700:hover{background-color:var(--color-zinc-700)}.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-zinc-200:hover{color:var(--color-zinc-200)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.active\:scale-\[0\.98\]:active{scale:.98}@media(prefers-color-scheme:dark){.dark\:bg-zinc-800{background-color:var(--color-zinc-800)}}}@keyframes rcs-typing-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-4px)}}.rcs-typing-dot{animation:1.4s ease-in-out infinite rcs-typing-bounce}.rcs-typing-dot:first-child{animation-delay:0s}.rcs-typing-dot:nth-child(2){animation-delay:.2s}.rcs-typing-dot:nth-child(3){animation-delay:.4s}@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-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-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-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { NamedExoticComponent } from 'react';
|
|
2
|
+
|
|
3
|
+
export declare type ActionData = {
|
|
4
|
+
type: "openUrl";
|
|
5
|
+
url: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: "webview";
|
|
8
|
+
url: string;
|
|
9
|
+
viewMode: RbmWebViewMode;
|
|
10
|
+
description?: string;
|
|
11
|
+
} | {
|
|
12
|
+
type: "dial";
|
|
13
|
+
phoneNumber: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: "shareLocation";
|
|
16
|
+
} | {
|
|
17
|
+
type: "viewLocation";
|
|
18
|
+
latitude?: number;
|
|
19
|
+
longitude?: number;
|
|
20
|
+
query?: string;
|
|
21
|
+
} | {
|
|
22
|
+
type: "createCalendarEvent";
|
|
23
|
+
title: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export declare interface BusinessEmail {
|
|
28
|
+
/** Email address */
|
|
29
|
+
email: string;
|
|
30
|
+
/** Description label */
|
|
31
|
+
label?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export declare interface BusinessInfo {
|
|
35
|
+
/** Business display name */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Logo URL */
|
|
38
|
+
logo?: string;
|
|
39
|
+
/** Whether business is verified */
|
|
40
|
+
verified?: boolean;
|
|
41
|
+
/** Brand color (hex) */
|
|
42
|
+
brandColor?: string;
|
|
43
|
+
/** Banner/hero image URL */
|
|
44
|
+
bannerImage?: string;
|
|
45
|
+
/** Business tagline or description */
|
|
46
|
+
description?: string;
|
|
47
|
+
/** Phone numbers */
|
|
48
|
+
phoneNumbers?: BusinessPhoneNumber[];
|
|
49
|
+
/** Websites */
|
|
50
|
+
websites?: BusinessWebsite[];
|
|
51
|
+
/** Email addresses */
|
|
52
|
+
emails?: BusinessEmail[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export declare interface BusinessPhoneNumber {
|
|
56
|
+
/** Phone number */
|
|
57
|
+
number: string;
|
|
58
|
+
/** Description (e.g., "From U.S. and Canada") */
|
|
59
|
+
label?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export declare interface BusinessWebsite {
|
|
63
|
+
/** Website URL */
|
|
64
|
+
url: string;
|
|
65
|
+
/** Display label */
|
|
66
|
+
label?: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export declare type EmulatorDevice = "android" | "ios";
|
|
70
|
+
|
|
71
|
+
export declare type EmulatorTheme = "light" | "dark";
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Get preview text from the first message for lock screen notification
|
|
75
|
+
*/
|
|
76
|
+
export declare function getFirstMessagePreview(flow: RbmConversationFlow): string;
|
|
77
|
+
|
|
78
|
+
/** Get WebView config from action */
|
|
79
|
+
export declare function getWebViewConfig(suggestion: RbmSuggestedAction): RbmOpenUrl | null;
|
|
80
|
+
|
|
81
|
+
export declare function isSuggestedAction(suggestion: RbmSuggestion): suggestion is RbmSuggestedAction;
|
|
82
|
+
|
|
83
|
+
export declare function isSuggestedReply(suggestion: RbmSuggestion): suggestion is RbmSuggestedReply;
|
|
84
|
+
|
|
85
|
+
/** Check if an action should open in WebView */
|
|
86
|
+
export declare function isWebViewAction(suggestion: RbmSuggestion): boolean;
|
|
87
|
+
|
|
88
|
+
export declare interface RbmCardContent {
|
|
89
|
+
/** Media content (image/video) */
|
|
90
|
+
media?: RbmMedia;
|
|
91
|
+
/** Card title */
|
|
92
|
+
title?: string;
|
|
93
|
+
/** Card description */
|
|
94
|
+
description?: string;
|
|
95
|
+
/** Interactive suggestions */
|
|
96
|
+
suggestions?: RbmSuggestion[];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
declare interface RbmCardLayout {
|
|
100
|
+
cardOrientation: "VERTICAL" | "HORIZONTAL";
|
|
101
|
+
cardWidth?: "SMALL_WIDTH" | "MEDIUM_WIDTH";
|
|
102
|
+
imageAlignment?: "LEFT" | "RIGHT";
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare interface RbmCarouselLayout {
|
|
106
|
+
cardWidth: "SMALL_WIDTH" | "MEDIUM_WIDTH";
|
|
107
|
+
cardOrientation?: "VERTICAL" | "HORIZONTAL";
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
declare interface RbmChoice {
|
|
111
|
+
/** Display text for the choice */
|
|
112
|
+
display_text: string;
|
|
113
|
+
/** Message ID to navigate to */
|
|
114
|
+
next_message: string;
|
|
115
|
+
/** Context variables to pass */
|
|
116
|
+
variables?: Record<string, unknown>;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
declare interface RbmContentInfo {
|
|
120
|
+
fileUrl: string;
|
|
121
|
+
thumbnailUrl?: string;
|
|
122
|
+
forceRefresh?: boolean;
|
|
123
|
+
/** MIME type of the file */
|
|
124
|
+
mimeType?: string;
|
|
125
|
+
/** File size in bytes */
|
|
126
|
+
fileSize?: number;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* RCS Business Messaging (RBM) JSON Schema Types
|
|
131
|
+
*
|
|
132
|
+
* These interfaces define the structure of RBM conversation flows
|
|
133
|
+
* as documented in the RBM specification.
|
|
134
|
+
*/
|
|
135
|
+
export declare interface RbmConversationFlow {
|
|
136
|
+
/** Campaign / flow identifier */
|
|
137
|
+
name: string;
|
|
138
|
+
/** All conversation nodes (message states) */
|
|
139
|
+
messages: Record<string, RbmMessage>;
|
|
140
|
+
/** Keyword to restart the conversation flow */
|
|
141
|
+
reset_keyword?: string;
|
|
142
|
+
/** Session validity window in hours */
|
|
143
|
+
expireInHours?: number;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export declare interface RbmGeneralPurposeCard {
|
|
147
|
+
layout: RbmCardLayout;
|
|
148
|
+
content: RbmCardContent;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export declare interface RbmGeneralPurposeCardCarousel {
|
|
152
|
+
layout: RbmCarouselLayout;
|
|
153
|
+
content: RbmCardContent[];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
declare interface RbmKeywordResponse {
|
|
157
|
+
keyword_response: {
|
|
158
|
+
choices: Record<string, RbmChoice>;
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* RBM Media - supports both API formats:
|
|
164
|
+
* - Flat format: mediaUrl, mediaContentType, mediaFileSize (from messagingstudio API)
|
|
165
|
+
* - Nested format: contentInfo.fileUrl (alternate format)
|
|
166
|
+
*/
|
|
167
|
+
export declare interface RbmMedia {
|
|
168
|
+
height: "SHORT_HEIGHT" | "MEDIUM_HEIGHT" | "TALL_HEIGHT";
|
|
169
|
+
/** Media URL (flat format from API) */
|
|
170
|
+
mediaUrl?: string;
|
|
171
|
+
/** MIME type (flat format from API) */
|
|
172
|
+
mediaContentType?: string;
|
|
173
|
+
/** File size in bytes (flat format from API) */
|
|
174
|
+
mediaFileSize?: number;
|
|
175
|
+
/** Nested content info (alternate format) */
|
|
176
|
+
contentInfo?: RbmContentInfo;
|
|
177
|
+
/** Thumbnail URL for video content */
|
|
178
|
+
thumbnailUri?: string;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export declare interface RbmMessage {
|
|
182
|
+
/** Unique identifier for this message node */
|
|
183
|
+
id: string;
|
|
184
|
+
/** Marks the entry point of the conversation (only one should be true) */
|
|
185
|
+
is_first: boolean;
|
|
186
|
+
/** Response handlers for user interactions */
|
|
187
|
+
responses: RbmResponses;
|
|
188
|
+
/** UI components to render */
|
|
189
|
+
parts: RbmMessagePart[];
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
declare interface RbmMessageContact {
|
|
193
|
+
userContact: string;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export declare interface RbmMessagePart {
|
|
197
|
+
RCSMessage: RCSMessage;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Open URL configuration */
|
|
201
|
+
export declare interface RbmOpenUrl {
|
|
202
|
+
/** Target URL */
|
|
203
|
+
url: string;
|
|
204
|
+
/** Application to open URL in */
|
|
205
|
+
application?: RbmUrlApplication;
|
|
206
|
+
/** WebView display mode (only when application is WEBVIEW) */
|
|
207
|
+
webviewViewMode?: RbmWebViewMode;
|
|
208
|
+
/** Description/title for WebView header */
|
|
209
|
+
description?: string;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export declare interface RbmPostback {
|
|
213
|
+
data: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
declare interface RbmResponses {
|
|
217
|
+
keyword?: RbmKeywordResponse;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export declare interface RbmRichCardMessage {
|
|
221
|
+
message: {
|
|
222
|
+
generalPurposeCard?: RbmGeneralPurposeCard;
|
|
223
|
+
generalPurposeCardCarousel?: RbmGeneralPurposeCardCarousel;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export declare interface RbmSuggestedAction {
|
|
228
|
+
action: {
|
|
229
|
+
displayText: string;
|
|
230
|
+
postback: RbmPostback;
|
|
231
|
+
/** Open URL action (legacy simple format) */
|
|
232
|
+
openUrlAction?: {
|
|
233
|
+
url: string;
|
|
234
|
+
};
|
|
235
|
+
/** URL action with WebView support (from messagingstudio API) */
|
|
236
|
+
urlAction?: {
|
|
237
|
+
openUrl: RbmOpenUrl;
|
|
238
|
+
};
|
|
239
|
+
/** Dial phone action (legacy format) */
|
|
240
|
+
dialAction?: {
|
|
241
|
+
phoneNumber: string;
|
|
242
|
+
};
|
|
243
|
+
/** Dialer action (from messagingstudio API) */
|
|
244
|
+
dialerAction?: {
|
|
245
|
+
dialPhoneNumber: {
|
|
246
|
+
phoneNumber: string;
|
|
247
|
+
};
|
|
248
|
+
};
|
|
249
|
+
/** Share location action */
|
|
250
|
+
shareLocationAction?: Record<string, never>;
|
|
251
|
+
/** View location action (legacy format) */
|
|
252
|
+
viewLocationAction?: {
|
|
253
|
+
latLong?: {
|
|
254
|
+
latitude: number;
|
|
255
|
+
longitude: number;
|
|
256
|
+
};
|
|
257
|
+
query?: string;
|
|
258
|
+
label?: string;
|
|
259
|
+
};
|
|
260
|
+
/** Map action (from messagingstudio API) */
|
|
261
|
+
mapAction?: {
|
|
262
|
+
showLocation: {
|
|
263
|
+
location: {
|
|
264
|
+
latitude: number;
|
|
265
|
+
longitude: number;
|
|
266
|
+
label?: string;
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
/** Create calendar event action */
|
|
271
|
+
createCalendarEventAction?: {
|
|
272
|
+
title: string;
|
|
273
|
+
description?: string;
|
|
274
|
+
startTime?: string;
|
|
275
|
+
endTime?: string;
|
|
276
|
+
};
|
|
277
|
+
/** Calendar action (from messagingstudio API) */
|
|
278
|
+
calendarAction?: {
|
|
279
|
+
createCalendarEvent: {
|
|
280
|
+
title: string;
|
|
281
|
+
description?: string;
|
|
282
|
+
startTime?: string;
|
|
283
|
+
endTime?: string;
|
|
284
|
+
};
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export declare interface RbmSuggestedChipList {
|
|
290
|
+
suggestions: RbmSuggestion[];
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export declare interface RbmSuggestedReply {
|
|
294
|
+
reply: {
|
|
295
|
+
displayText: string;
|
|
296
|
+
postback: RbmPostback;
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
export declare type RbmSuggestion = RbmSuggestedReply | RbmSuggestedAction;
|
|
301
|
+
|
|
302
|
+
/** Application type for URL actions */
|
|
303
|
+
export declare type RbmUrlApplication = "BROWSER" | "WEBVIEW";
|
|
304
|
+
|
|
305
|
+
/** WebView mode for opening URLs */
|
|
306
|
+
export declare type RbmWebViewMode = "FULL" | "TALL" | "HALF";
|
|
307
|
+
|
|
308
|
+
declare const RcsEmulator: NamedExoticComponent<RcsEmulatorProps>;
|
|
309
|
+
export { RcsEmulator }
|
|
310
|
+
export default RcsEmulator;
|
|
311
|
+
|
|
312
|
+
export declare interface RcsEmulatorProps {
|
|
313
|
+
/** RBM conversation flow JSON payload (provide either this OR jsonUrl) */
|
|
314
|
+
messages?: RbmConversationFlow;
|
|
315
|
+
/** URL to fetch RBM JSON from (provide either this OR messages) */
|
|
316
|
+
jsonUrl?: string;
|
|
317
|
+
/** Callback when user interacts with suggestions */
|
|
318
|
+
onUserReply: (payload: UserReplyPayload) => void;
|
|
319
|
+
/** Color theme */
|
|
320
|
+
theme?: EmulatorTheme;
|
|
321
|
+
/** Device style (affects some UI elements) */
|
|
322
|
+
device?: EmulatorDevice;
|
|
323
|
+
/** Override business branding */
|
|
324
|
+
businessInfo?: BusinessInfo;
|
|
325
|
+
/** Additional CSS classes for container */
|
|
326
|
+
className?: string;
|
|
327
|
+
/** Width of emulator (default: 375px) */
|
|
328
|
+
width?: number;
|
|
329
|
+
/** Height of emulator (default: 667px) */
|
|
330
|
+
height?: number;
|
|
331
|
+
/** Show/hide suggestions bar (default: true) */
|
|
332
|
+
showSuggestions?: boolean;
|
|
333
|
+
/** Show lock screen on start (default: false) */
|
|
334
|
+
showLockScreen?: boolean;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
export declare interface RCSMessage {
|
|
338
|
+
/** Traffic type classification */
|
|
339
|
+
trafficType?: "advertisement" | "transactional" | "promotional";
|
|
340
|
+
/** Simple text message */
|
|
341
|
+
textMessage?: string;
|
|
342
|
+
/** Rich card message */
|
|
343
|
+
richcardMessage?: RbmRichCardMessage;
|
|
344
|
+
/** Suggested chip list (for text messages with suggestions) */
|
|
345
|
+
suggestedChipList?: RbmSuggestedChipList;
|
|
346
|
+
/** Message contact info */
|
|
347
|
+
messageContact?: RbmMessageContact;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export declare function useJsonFetch(url: string | undefined): UseJsonFetchResult;
|
|
351
|
+
|
|
352
|
+
export declare interface UseJsonFetchResult {
|
|
353
|
+
/** Fetched data */
|
|
354
|
+
data: RbmConversationFlow | null;
|
|
355
|
+
/** Loading state */
|
|
356
|
+
isLoading: boolean;
|
|
357
|
+
/** Error message if fetch failed */
|
|
358
|
+
error: string | null;
|
|
359
|
+
/** Refetch function */
|
|
360
|
+
refetch: () => void;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export declare interface UserReplyPayload {
|
|
364
|
+
/** Type of interaction */
|
|
365
|
+
type: "reply" | "action";
|
|
366
|
+
/** Postback data from the suggestion */
|
|
367
|
+
postbackData: string;
|
|
368
|
+
/** Display text shown to user */
|
|
369
|
+
displayText: string;
|
|
370
|
+
/** Action-specific data */
|
|
371
|
+
actionData?: ActionData;
|
|
372
|
+
/** Timestamp of interaction */
|
|
373
|
+
timestamp: number;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Validate RBM conversation flow structure
|
|
378
|
+
*/
|
|
379
|
+
export declare function validateConversationFlow(flow: unknown): flow is RbmConversationFlow;
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* WebViewRenderer Component
|
|
383
|
+
*
|
|
384
|
+
* Renders an embedded WebView that mimics real mobile RCS client behavior.
|
|
385
|
+
* Supports three view modes:
|
|
386
|
+
* - FULL: Covers entire device screen (100%)
|
|
387
|
+
* - TALL: Bottom sheet covering 80% of screen
|
|
388
|
+
* - HALF: Bottom sheet covering 50% of screen
|
|
389
|
+
*/
|
|
390
|
+
export declare const WebViewRenderer: NamedExoticComponent<object>;
|
|
391
|
+
|
|
392
|
+
export declare interface WebViewState {
|
|
393
|
+
/** Whether WebView is open */
|
|
394
|
+
isOpen: boolean;
|
|
395
|
+
/** URL to display */
|
|
396
|
+
url: string;
|
|
397
|
+
/** View mode (FULL or TALL) */
|
|
398
|
+
viewMode: RbmWebViewMode;
|
|
399
|
+
/** Title for WebView header */
|
|
400
|
+
title: string;
|
|
401
|
+
/** Postback data from the action */
|
|
402
|
+
postbackData: string;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export { }
|
package/package.json
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@maebgch/rcs-emulator",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A production-ready React component library for emulating RCS Business Messaging (RBM) device UI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/rcs-emulator.cjs.js",
|
|
7
|
+
"module": "dist/rcs-emulator.es.js",
|
|
8
|
+
"types": "dist/types/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/rcs-emulator.es.js",
|
|
12
|
+
"require": "./dist/rcs-emulator.cjs.js",
|
|
13
|
+
"types": "./dist/types/index.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"./style.css": "./dist/style.css"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist/rcs-emulator.cjs.js",
|
|
19
|
+
"dist/rcs-emulator.cjs.js.map",
|
|
20
|
+
"dist/rcs-emulator.es.js",
|
|
21
|
+
"dist/rcs-emulator.es.js.map",
|
|
22
|
+
"dist/style.css",
|
|
23
|
+
"dist/types"
|
|
24
|
+
],
|
|
25
|
+
"sideEffects": false,
|
|
26
|
+
"scripts": {
|
|
27
|
+
"dev": "vite",
|
|
28
|
+
"build": "tsc -b && vite build",
|
|
29
|
+
"build:lib": "tsc --project tsconfig.lib.json && vite build --config vite.library.config.ts",
|
|
30
|
+
"lint": "eslint .",
|
|
31
|
+
"preview": "vite preview",
|
|
32
|
+
"prepublishOnly": "npm run build:lib"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"react",
|
|
36
|
+
"rcs",
|
|
37
|
+
"rcs-business-messaging",
|
|
38
|
+
"rbm",
|
|
39
|
+
"emulator",
|
|
40
|
+
"chat",
|
|
41
|
+
"messaging",
|
|
42
|
+
"ui-component",
|
|
43
|
+
"typescript"
|
|
44
|
+
],
|
|
45
|
+
"author": "",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": ""
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"react-device-frameset": "^1.3.4"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"react": ">=18.0.0",
|
|
56
|
+
"react-dom": ">=18.0.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@eslint/js": "^9.39.1",
|
|
60
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
61
|
+
"@types/node": "^24.10.1",
|
|
62
|
+
"@types/react": "^19.2.5",
|
|
63
|
+
"@types/react-dom": "^19.2.3",
|
|
64
|
+
"@vitejs/plugin-react": "^5.1.1",
|
|
65
|
+
"babel-plugin-react-compiler": "^1.0.0",
|
|
66
|
+
"eslint": "^9.39.1",
|
|
67
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
68
|
+
"eslint-plugin-react-refresh": "^0.4.24",
|
|
69
|
+
"globals": "^16.5.0",
|
|
70
|
+
"tailwindcss": "^4.1.18",
|
|
71
|
+
"typescript": "~5.9.3",
|
|
72
|
+
"typescript-eslint": "^8.46.4",
|
|
73
|
+
"vite": "^7.2.4",
|
|
74
|
+
"vite-plugin-dts": "^4.5.4"
|
|
75
|
+
}
|
|
76
|
+
}
|