@liminalcash/nim-chat 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.
Files changed (45) hide show
  1. package/README.md +160 -0
  2. package/dist/NimChat.d.ts +4 -0
  3. package/dist/NimChat.d.ts.map +1 -0
  4. package/dist/components/ChatInput.d.ts +8 -0
  5. package/dist/components/ChatInput.d.ts.map +1 -0
  6. package/dist/components/ChatMessage.d.ts +8 -0
  7. package/dist/components/ChatMessage.d.ts.map +1 -0
  8. package/dist/components/ChatPanel.d.ts +17 -0
  9. package/dist/components/ChatPanel.d.ts.map +1 -0
  10. package/dist/components/ConfirmationCard.d.ts +10 -0
  11. package/dist/components/ConfirmationCard.d.ts.map +1 -0
  12. package/dist/components/LoginPanel.d.ts +7 -0
  13. package/dist/components/LoginPanel.d.ts.map +1 -0
  14. package/dist/components/ThinkingIndicator.d.ts +2 -0
  15. package/dist/components/ThinkingIndicator.d.ts.map +1 -0
  16. package/dist/fonts/abc-marist/ABCMarist-Black.otf +0 -0
  17. package/dist/fonts/abc-marist/ABCMarist-BlackItalic.otf +0 -0
  18. package/dist/fonts/abc-marist/ABCMarist-Bold.otf +0 -0
  19. package/dist/fonts/abc-marist/ABCMarist-BoldItalic.otf +0 -0
  20. package/dist/fonts/abc-marist/ABCMarist-Book.otf +0 -0
  21. package/dist/fonts/abc-marist/ABCMarist-BookItalic.otf +0 -0
  22. package/dist/fonts/abc-marist/ABCMarist-Medium.otf +0 -0
  23. package/dist/fonts/abc-marist/ABCMarist-MediumItalic.otf +0 -0
  24. package/dist/fonts/abc-marist/ABCMarist-Regular.otf +0 -0
  25. package/dist/fonts/abc-marist/ABCMarist-RegularItalic.otf +0 -0
  26. package/dist/fonts/abc-marist/ABCMarist-SemiBold.otf +0 -0
  27. package/dist/fonts/abc-marist/ABCMarist-SemiBoldItalic.otf +0 -0
  28. package/dist/fonts/helvetica-monospaced-pro/HelveticaMonospacedPro-Bd.otf +0 -0
  29. package/dist/fonts/helvetica-monospaced-pro/HelveticaMonospacedPro-BdIt.otf +0 -0
  30. package/dist/fonts/helvetica-monospaced-pro/HelveticaMonospacedPro-It.otf +0 -0
  31. package/dist/fonts/helvetica-monospaced-pro/HelveticaMonospacedPro-Rg.otf +0 -0
  32. package/dist/hooks/useNimWebSocket.d.ts +20 -0
  33. package/dist/hooks/useNimWebSocket.d.ts.map +1 -0
  34. package/dist/index.cjs +53 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +7515 -0
  38. package/dist/styles/theme.d.ts +90 -0
  39. package/dist/styles/theme.d.ts.map +1 -0
  40. package/dist/styles.css +1 -0
  41. package/dist/types.d.ts +67 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/utils/auth.d.ts +12 -0
  44. package/dist/utils/auth.d.ts.map +1 -0
  45. package/package.json +60 -0
@@ -0,0 +1,90 @@
1
+ export declare const colors: {
2
+ readonly orange: "#FF6D00";
3
+ readonly cream: "#F1EDE7";
4
+ readonly blue: "#9BC1F3";
5
+ readonly black: "#231F18";
6
+ readonly brown: "#492610";
7
+ readonly green: "#188A31";
8
+ readonly white: "#FFFFFF";
9
+ };
10
+ export declare const typography: {
11
+ readonly fontFamily: {
12
+ readonly display: "Marist, Georgia, serif";
13
+ readonly body: "Helvetica, Arial, sans-serif";
14
+ };
15
+ readonly fontSize: {
16
+ readonly xs: "0.75rem";
17
+ readonly sm: "0.875rem";
18
+ readonly base: "1rem";
19
+ readonly lg: "1.125rem";
20
+ readonly xl: "1.25rem";
21
+ };
22
+ };
23
+ export declare const spacing: {
24
+ readonly xs: "0.25rem";
25
+ readonly sm: "0.5rem";
26
+ readonly md: "1rem";
27
+ readonly lg: "1.5rem";
28
+ readonly xl: "2rem";
29
+ };
30
+ export declare const borderRadius: {
31
+ readonly sm: "0.5rem";
32
+ readonly md: "0.75rem";
33
+ readonly lg: "1rem";
34
+ readonly xl: "1.5rem";
35
+ readonly full: "9999px";
36
+ readonly bubble: "16px";
37
+ };
38
+ export declare const shadows: {
39
+ readonly sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)";
40
+ readonly md: "0 4px 6px -1px rgb(0 0 0 / 0.1)";
41
+ readonly lg: "0 10px 15px -3px rgb(0 0 0 / 0.1)";
42
+ readonly xl: "0 20px 25px -5px rgb(0 0 0 / 0.1)";
43
+ };
44
+ export declare const theme: {
45
+ readonly colors: {
46
+ readonly orange: "#FF6D00";
47
+ readonly cream: "#F1EDE7";
48
+ readonly blue: "#9BC1F3";
49
+ readonly black: "#231F18";
50
+ readonly brown: "#492610";
51
+ readonly green: "#188A31";
52
+ readonly white: "#FFFFFF";
53
+ };
54
+ readonly typography: {
55
+ readonly fontFamily: {
56
+ readonly display: "Marist, Georgia, serif";
57
+ readonly body: "Helvetica, Arial, sans-serif";
58
+ };
59
+ readonly fontSize: {
60
+ readonly xs: "0.75rem";
61
+ readonly sm: "0.875rem";
62
+ readonly base: "1rem";
63
+ readonly lg: "1.125rem";
64
+ readonly xl: "1.25rem";
65
+ };
66
+ };
67
+ readonly spacing: {
68
+ readonly xs: "0.25rem";
69
+ readonly sm: "0.5rem";
70
+ readonly md: "1rem";
71
+ readonly lg: "1.5rem";
72
+ readonly xl: "2rem";
73
+ };
74
+ readonly borderRadius: {
75
+ readonly sm: "0.5rem";
76
+ readonly md: "0.75rem";
77
+ readonly lg: "1rem";
78
+ readonly xl: "1.5rem";
79
+ readonly full: "9999px";
80
+ readonly bubble: "16px";
81
+ };
82
+ readonly shadows: {
83
+ readonly sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)";
84
+ readonly md: "0 4px 6px -1px rgb(0 0 0 / 0.1)";
85
+ readonly lg: "0 10px 15px -3px rgb(0 0 0 / 0.1)";
86
+ readonly xl: "0 20px 25px -5px rgb(0 0 0 / 0.1)";
87
+ };
88
+ };
89
+ export default theme;
90
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/styles/theme.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,MAAM;;;;;;;;CAQT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;CAYb,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;;CAMV,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;CAOf,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;CAKV,CAAC;AAEX,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMR,CAAC;AAEX,eAAe,KAAK,CAAC"}
@@ -0,0 +1 @@
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:Helvetica Monospaced Pro,SF Mono,Monaco,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-16{bottom:4rem}.bottom-4{bottom:1rem}.left-4{left:1rem}.right-4{right:1rem}.z-50{z-index:50}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.flex{display:flex}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-8{height:2rem}.h-\[min\(600px\2c calc\(100vh-8rem\)\)\]{height:min(600px,calc(100vh - 8rem))}.h-full{height:100%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-8{width:2rem}.w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.min-w-0{min-width:0}.max-w-bubble{max-width:85%}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.rotate-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate:0deg}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-nim-black{--tw-border-opacity:1;border-color:rgb(35 31 24/var(--tw-border-opacity,1))}.border-nim-cream{--tw-border-opacity:1;border-color:rgb(241 237 231/var(--tw-border-opacity,1))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity,1))}.bg-nim-black{--tw-bg-opacity:1;background-color:rgb(35 31 24/var(--tw-bg-opacity,1))}.bg-nim-cream{--tw-bg-opacity:1;background-color:rgb(241 237 231/var(--tw-bg-opacity,1))}.bg-nim-orange{--tw-bg-opacity:1;background-color:rgb(255 109 0/var(--tw-bg-opacity,1))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-body{font-family:Helvetica Monospaced Pro,SF Mono,Monaco,Courier New,monospace}.font-display{font-family:ABC Marist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.font-mono{font-family:Helvetica Monospaced Pro,SF Mono,Monaco,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.tracking-widest{letter-spacing:.1em}.text-nim-black{--tw-text-opacity:1;color:rgb(35 31 24/var(--tw-text-opacity,1))}.text-nim-brown\/40{color:rgba(73,38,16,.4)}.text-nim-brown\/60{color:rgba(73,38,16,.6)}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.placeholder-nim-brown\/40::-moz-placeholder{color:rgba(73,38,16,.4)}.placeholder-nim-brown\/40::placeholder{color:rgba(73,38,16,.4)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}@font-face{font-family:ABC Marist;src:url(/fonts/abc-marist/ABCMarist-Regular.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ABC Marist;src:url(/fonts/abc-marist/ABCMarist-Medium.otf) format("opentype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:ABC Marist;src:url(/fonts/abc-marist/ABCMarist-SemiBold.otf) format("opentype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:ABC Marist;src:url(/fonts/abc-marist/ABCMarist-Bold.otf) format("opentype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"Helvetica Monospaced Pro";src:url(/fonts/helvetica-monospaced-pro/HelveticaMonospacedPro-Rg.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Helvetica Monospaced Pro";src:url(/fonts/helvetica-monospaced-pro/HelveticaMonospacedPro-Bd.otf) format("opentype");font-weight:700;font-style:normal;font-display:swap}.nim-chat-widget{font-family:"Helvetica Monospaced Pro",SF Mono,Monaco,Courier New,monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.nim-chat-messages::-webkit-scrollbar{width:6px}.nim-chat-messages::-webkit-scrollbar-track{background:transparent}.nim-chat-messages::-webkit-scrollbar-thumb{background:#b6b6b6;border-radius:3px}.nim-chat-messages::-webkit-scrollbar-thumb:hover{background:#6b6b6b}@keyframes nim-bounce{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1);opacity:1}}.nim-thinking-dot{animation:nim-bounce 1.4s ease-in-out infinite both}.nim-thinking-dot:first-child{animation-delay:-.32s}.nim-thinking-dot:nth-child(2){animation-delay:-.16s}.nim-thinking-dot:nth-child(3){animation-delay:0s}@keyframes nim-slide-in{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.nim-panel-enter{animation:nim-slide-in .2s ease-out forwards}@keyframes nim-countdown{0%{stroke-dashoffset:0}to{stroke-dashoffset:100}}.nim-message-content p{margin:0}.nim-message-content p+p{margin-top:.5rem}.nim-message-content code{background:rgba(35,31,24,.1);padding:.125rem .25rem;border-radius:.25rem;font-size:.875em;font-family:"Helvetica Monospaced Pro",monospace}.nim-message-content pre{background:rgba(35,31,24,.1);padding:.75rem;border-radius:.5rem;overflow-x:auto;margin:.5rem 0}.nim-message-content pre code{background:none;padding:0}.nim-message-content ol,.nim-message-content ul{margin:.5rem 0;padding-left:1.5rem}.nim-message-content li{margin:.25rem 0}.nim-message-content a{color:inherit;text-decoration:underline}.nim-message-content strong{font-weight:600}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-105:hover,.hover\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:bg-nim-cream:hover{--tw-bg-opacity:1;background-color:rgb(241 237 231/var(--tw-bg-opacity,1))}.hover\:bg-nim-cream\/80:hover{background-color:hsla(36,26%,93%,.8)}.hover\:bg-orange-600:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.hover\:text-nim-brown:hover{--tw-text-opacity:1;color:rgb(73 38 16/var(--tw-text-opacity,1))}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:border-nim-orange:focus{--tw-border-opacity:1;border-color:rgb(255 109 0/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-nim-orange:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(255 109 0/var(--tw-ring-opacity,1))}.active\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:scale-100:hover:disabled{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:640px){.sm\:bottom-6{bottom:1.5rem}.sm\:left-6{left:1.5rem}.sm\:right-6{right:1.5rem}.sm\:w-96{width:24rem}}
@@ -0,0 +1,67 @@
1
+ export interface Message {
2
+ id: string;
3
+ role: 'user' | 'assistant';
4
+ content: string;
5
+ timestamp: number;
6
+ }
7
+ export type ClientMessage = {
8
+ type: 'new_conversation';
9
+ } | {
10
+ type: 'resume_conversation';
11
+ conversationId: string;
12
+ } | {
13
+ type: 'message';
14
+ content: string;
15
+ } | {
16
+ type: 'confirm';
17
+ actionId: string;
18
+ } | {
19
+ type: 'cancel';
20
+ actionId: string;
21
+ };
22
+ export type ServerMessage = {
23
+ type: 'conversation_started';
24
+ conversationId: string;
25
+ } | {
26
+ type: 'conversation_resumed';
27
+ conversationId: string;
28
+ messages: Message[];
29
+ } | {
30
+ type: 'text_chunk';
31
+ content: string;
32
+ } | {
33
+ type: 'text';
34
+ content: string;
35
+ } | {
36
+ type: 'confirm_request';
37
+ actionId: string;
38
+ tool: string;
39
+ summary: string;
40
+ expiresAt: string;
41
+ } | {
42
+ type: 'complete';
43
+ tokenUsage?: TokenUsage;
44
+ } | {
45
+ type: 'error';
46
+ content: string;
47
+ };
48
+ export interface TokenUsage {
49
+ inputTokens: number;
50
+ outputTokens: number;
51
+ }
52
+ export interface ConfirmationRequest {
53
+ actionId: string;
54
+ tool: string;
55
+ summary: string;
56
+ expiresAt: Date;
57
+ }
58
+ export type ConnectionState = 'connecting' | 'connected' | 'disconnected' | 'reconnecting' | 'error';
59
+ export type WidgetPosition = 'bottom-right' | 'bottom-left';
60
+ export interface NimChatProps {
61
+ wsUrl: string;
62
+ apiUrl?: string;
63
+ title?: string;
64
+ position?: WidgetPosition;
65
+ defaultOpen?: boolean;
66
+ }
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAGzC,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,OAAO,CAAC;AAGrG,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;AAG5D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,12 @@
1
+ export interface TokenState {
2
+ accessToken: string;
3
+ refreshToken: string;
4
+ expiresAt: number;
5
+ userId: string;
6
+ email?: string;
7
+ }
8
+ export declare function getStoredTokens(): TokenState | null;
9
+ export declare function clearStoredTokens(): void;
10
+ export declare function isTokenExpiringSoon(expiresAt: number, bufferSeconds?: number): boolean;
11
+ export declare function refreshAccessToken(refreshToken: string, apiUrl?: string): Promise<TokenState>;
12
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,eAAe,IAAI,UAAU,GAAG,IAAI,CAkBnD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,GAAE,MAAW,GAAG,OAAO,CAG1F;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAmC,GAC1C,OAAO,CAAC,UAAU,CAAC,CA+BrB"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@liminalcash/nim-chat",
3
+ "version": "0.1.0",
4
+ "description": "React chat widget for nim SDK backends",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.cjs",
13
+ "types": "./dist/index.d.ts"
14
+ },
15
+ "./styles.css": "./dist/styles.css"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "dev": "vite example",
22
+ "build": "vite build && npm run build:css",
23
+ "build:css": "tailwindcss -i ./src/styles/index.css -o ./dist/styles.css --minify",
24
+ "preview": "vite preview",
25
+ "typecheck": "tsc --noEmit"
26
+ },
27
+ "peerDependencies": {
28
+ "react": "^18.0.0",
29
+ "react-dom": "^18.0.0"
30
+ },
31
+ "dependencies": {
32
+ "react-markdown": "^9.0.0"
33
+ },
34
+ "devDependencies": {
35
+ "@types/react": "^18.2.0",
36
+ "@types/react-dom": "^18.2.0",
37
+ "@vitejs/plugin-react": "^4.2.0",
38
+ "autoprefixer": "^10.4.16",
39
+ "postcss": "^8.4.32",
40
+ "react": "^18.2.0",
41
+ "react-dom": "^18.2.0",
42
+ "tailwindcss": "^3.4.0",
43
+ "typescript": "^5.3.0",
44
+ "vite": "^5.0.0",
45
+ "vite-plugin-dts": "^3.7.0"
46
+ },
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "https://github.com/liminalcash/nim-chat"
50
+ },
51
+ "keywords": [
52
+ "nim",
53
+ "chat",
54
+ "widget",
55
+ "react",
56
+ "websocket"
57
+ ],
58
+ "author": "Liminal",
59
+ "license": "MIT"
60
+ }