@bitbaum/chatkit 0.17.1 → 0.18.1

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 (46) hide show
  1. package/README.md +152 -0
  2. package/dist/conversations.d.ts +99 -0
  3. package/dist/conversations.d.ts.map +1 -0
  4. package/dist/conversations.js +146 -0
  5. package/dist/conversations.js.map +1 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/react/ChatApp.d.ts +123 -0
  11. package/dist/react/ChatApp.d.ts.map +1 -0
  12. package/dist/react/ChatApp.js +215 -0
  13. package/dist/react/ChatApp.js.map +1 -0
  14. package/dist/react/ChatHistory.d.ts +28 -0
  15. package/dist/react/ChatHistory.d.ts.map +1 -0
  16. package/dist/react/ChatHistory.js +58 -0
  17. package/dist/react/ChatHistory.js.map +1 -0
  18. package/dist/react/Composer.d.ts +4 -1
  19. package/dist/react/Composer.d.ts.map +1 -1
  20. package/dist/react/Composer.js +3 -3
  21. package/dist/react/Composer.js.map +1 -1
  22. package/dist/react/Thread.d.ts +4 -0
  23. package/dist/react/Thread.d.ts.map +1 -1
  24. package/dist/react/Thread.js +2 -2
  25. package/dist/react/Thread.js.map +1 -1
  26. package/dist/react/hooks.d.ts.map +1 -1
  27. package/dist/react/hooks.js +11 -0
  28. package/dist/react/hooks.js.map +1 -1
  29. package/dist/react/icons.d.ts +7 -0
  30. package/dist/react/icons.d.ts.map +1 -1
  31. package/dist/react/icons.js +8 -0
  32. package/dist/react/icons.js.map +1 -1
  33. package/dist/react/index.d.ts +6 -0
  34. package/dist/react/index.d.ts.map +1 -1
  35. package/dist/react/index.js +3 -0
  36. package/dist/react/index.js.map +1 -1
  37. package/dist/react/use-chat-app.d.ts +81 -0
  38. package/dist/react/use-chat-app.d.ts.map +1 -0
  39. package/dist/react/use-chat-app.js +380 -0
  40. package/dist/react/use-chat-app.js.map +1 -0
  41. package/dist/stores.d.ts +63 -0
  42. package/dist/stores.d.ts.map +1 -0
  43. package/dist/stores.js +291 -0
  44. package/dist/stores.js.map +1 -0
  45. package/package.json +3 -3
  46. package/styles.css +409 -0
package/styles.css CHANGED
@@ -58,6 +58,8 @@
58
58
  }
59
59
 
60
60
  .ck-screen,
61
+ .ck-app,
62
+ .ck-app-drawer,
61
63
  .ck-composer-wrap,
62
64
  .ck-thread-wrap,
63
65
  .ck-starters,
@@ -67,6 +69,8 @@
67
69
  }
68
70
 
69
71
  .ck-screen *,
72
+ .ck-app *,
73
+ .ck-app-drawer *,
70
74
  .ck-composer-wrap *,
71
75
  .ck-thread-wrap *,
72
76
  .ck-starters *,
@@ -1938,3 +1942,408 @@ details.ck-thinking[open] > summary svg {
1938
1942
  bottom: 1rem;
1939
1943
  z-index: 10;
1940
1944
  }
1945
+
1946
+ /* ── ChatApp: the whole app ─────────────────────────────────────────────
1947
+ The chat list is a drawer from the left edge on a phone (a native <dialog>:
1948
+ Escape, the focus trap and focus restore come from the browser) and a rail
1949
+ beside the chat from a wide screen. One row anatomy in the list: title,
1950
+ date, one "…". demo/app.html is the reference at 390px and 1440px. */
1951
+ .ck-app {
1952
+ position: relative;
1953
+ display: flex;
1954
+ height: 100%;
1955
+ min-height: 0;
1956
+ min-width: 0;
1957
+ overflow: hidden;
1958
+ background: var(--ck-page);
1959
+ }
1960
+ .ck-app-viewport {
1961
+ height: var(--ck-viewport-height, 100dvh);
1962
+ }
1963
+ .ck-app-screen {
1964
+ flex: 1;
1965
+ }
1966
+ .ck-app-rail {
1967
+ display: flex;
1968
+ flex: 0 0 18rem;
1969
+ flex-direction: column;
1970
+ width: 18rem;
1971
+ min-height: 0;
1972
+ border-right: 1px solid var(--ck-line);
1973
+ background: var(--ck-bg);
1974
+ }
1975
+ .ck-app-drawer {
1976
+ position: fixed;
1977
+ inset: 0 auto 0 0;
1978
+ width: min(20rem, 88vw);
1979
+ max-width: none;
1980
+ height: 100%;
1981
+ max-height: none;
1982
+ margin: 0;
1983
+ padding: 0;
1984
+ border: 0;
1985
+ background: var(--ck-bg);
1986
+ color: var(--ck-fg);
1987
+ }
1988
+ .ck-app-drawer::backdrop {
1989
+ background: color-mix(in srgb, #000 40%, transparent);
1990
+ }
1991
+ .ck-app-drawer[open] .ck-app-drawer-panel {
1992
+ animation: ck-slide-in 0.2s ease-out;
1993
+ }
1994
+ @keyframes ck-slide-in {
1995
+ from {
1996
+ transform: translateX(-1.5rem);
1997
+ opacity: 0;
1998
+ }
1999
+ }
2000
+ .ck-app-drawer-panel {
2001
+ display: flex;
2002
+ flex-direction: column;
2003
+ height: 100%;
2004
+ padding: env(safe-area-inset-top, 0px) 0 env(safe-area-inset-bottom, 0px);
2005
+ }
2006
+ .ck-history {
2007
+ display: flex;
2008
+ flex: 1;
2009
+ flex-direction: column;
2010
+ gap: 0.5rem;
2011
+ min-height: 0;
2012
+ padding: 0.75rem;
2013
+ }
2014
+ .ck-history-head {
2015
+ display: flex;
2016
+ align-items: center;
2017
+ justify-content: space-between;
2018
+ min-height: var(--ck-target);
2019
+ }
2020
+ .ck-history-title {
2021
+ padding-inline: 0.5rem;
2022
+ font-size: 1rem;
2023
+ font-weight: 600;
2024
+ }
2025
+ .ck-history-close {
2026
+ border-color: transparent;
2027
+ background: transparent;
2028
+ }
2029
+ .ck-history-new,
2030
+ .ck-history-search {
2031
+ display: flex;
2032
+ align-items: center;
2033
+ gap: 0.625rem;
2034
+ min-height: var(--ck-target);
2035
+ padding: 0 0.75rem;
2036
+ border: 1px solid var(--ck-line);
2037
+ border-radius: var(--ck-radius-sm);
2038
+ font-size: 0.9375rem;
2039
+ }
2040
+ .ck-history-new {
2041
+ background: var(--ck-raised);
2042
+ color: var(--ck-fg);
2043
+ font-family: inherit;
2044
+ cursor: pointer;
2045
+ }
2046
+ .ck-history-new:hover {
2047
+ border-color: var(--ck-line-2);
2048
+ }
2049
+ .ck-history-search {
2050
+ background: var(--ck-bg);
2051
+ color: var(--ck-fg-3);
2052
+ }
2053
+ .ck-history-search:focus-within {
2054
+ border-color: var(--ck-line-2);
2055
+ }
2056
+ .ck-history-search input {
2057
+ flex: 1;
2058
+ min-width: 0;
2059
+ min-height: var(--ck-target);
2060
+ padding: 0;
2061
+ border: 0;
2062
+ outline: none;
2063
+ background: transparent;
2064
+ color: var(--ck-fg);
2065
+ font: inherit;
2066
+ font-size: max(16px, var(--ck-text));
2067
+ }
2068
+ .ck-history-list {
2069
+ flex: 1;
2070
+ min-height: 0;
2071
+ margin-inline: -0.25rem;
2072
+ padding-inline: 0.25rem;
2073
+ overflow-y: auto;
2074
+ overscroll-behavior: contain;
2075
+ }
2076
+ .ck-history-group-title {
2077
+ margin: 0.875rem 0.5rem 0.25rem;
2078
+ color: var(--ck-muted);
2079
+ font-size: 0.75rem;
2080
+ font-weight: 600;
2081
+ }
2082
+ .ck-history-group ul {
2083
+ display: flex;
2084
+ flex-direction: column;
2085
+ gap: 2px;
2086
+ margin: 0;
2087
+ padding: 0;
2088
+ list-style: none;
2089
+ }
2090
+ .ck-history-row {
2091
+ border-radius: var(--ck-radius-sm);
2092
+ }
2093
+ .ck-history-row-active {
2094
+ background: var(--ck-raised);
2095
+ }
2096
+ .ck-history-line {
2097
+ display: flex;
2098
+ align-items: center;
2099
+ min-width: 0;
2100
+ }
2101
+ .ck-history-open {
2102
+ display: flex;
2103
+ flex: 1;
2104
+ align-items: baseline;
2105
+ gap: 0.5rem;
2106
+ min-width: 0;
2107
+ min-height: var(--ck-target);
2108
+ padding: 0.5rem;
2109
+ border: 0;
2110
+ border-radius: var(--ck-radius-sm);
2111
+ background: transparent;
2112
+ color: var(--ck-fg);
2113
+ font: inherit;
2114
+ font-size: 0.9375rem;
2115
+ text-align: left;
2116
+ cursor: pointer;
2117
+ }
2118
+ .ck-history-name {
2119
+ flex: 1;
2120
+ min-width: 0;
2121
+ overflow: hidden;
2122
+ text-overflow: ellipsis;
2123
+ white-space: nowrap;
2124
+ }
2125
+ .ck-history-date {
2126
+ flex: none;
2127
+ color: var(--ck-muted);
2128
+ font-size: 0.75rem;
2129
+ font-variant-numeric: tabular-nums;
2130
+ }
2131
+ .ck-history-more {
2132
+ display: inline-flex;
2133
+ flex: none;
2134
+ align-items: center;
2135
+ justify-content: center;
2136
+ width: var(--ck-target);
2137
+ height: var(--ck-target);
2138
+ border: 0;
2139
+ border-radius: 999px;
2140
+ background: transparent;
2141
+ color: var(--ck-fg-3);
2142
+ cursor: pointer;
2143
+ }
2144
+ .ck-history-open:hover,
2145
+ .ck-history-more:hover {
2146
+ background: color-mix(in srgb, var(--ck-line) 60%, transparent);
2147
+ }
2148
+ .ck-history-pair {
2149
+ display: grid;
2150
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2151
+ gap: 0.5rem;
2152
+ padding: 0.25rem 0.5rem 0.5rem;
2153
+ }
2154
+ .ck-history-pair > button,
2155
+ .ck-history-retry {
2156
+ min-height: var(--ck-target);
2157
+ padding: 0 0.75rem;
2158
+ border: 1px solid var(--ck-line);
2159
+ border-radius: var(--ck-radius-sm);
2160
+ background: var(--ck-bg);
2161
+ color: var(--ck-fg);
2162
+ font: inherit;
2163
+ font-size: 0.9375rem;
2164
+ cursor: pointer;
2165
+ }
2166
+ .ck-history-pair > button:hover,
2167
+ .ck-history-retry:hover {
2168
+ border-color: var(--ck-line-2);
2169
+ }
2170
+ .ck-history-pair > .ck-history-danger,
2171
+ .ck-app-menu-item.ck-history-danger {
2172
+ color: var(--ck-danger);
2173
+ }
2174
+ .ck-history-confirm p,
2175
+ .ck-app-confirm p {
2176
+ margin: 0.25rem 0.5rem 0;
2177
+ font-size: 0.9375rem;
2178
+ }
2179
+ .ck-history-rename {
2180
+ padding: 0.25rem 0.5rem 0;
2181
+ }
2182
+ .ck-history-rename .ck-history-pair {
2183
+ padding-inline: 0;
2184
+ }
2185
+ .ck-history-rename input,
2186
+ .ck-app-rename input {
2187
+ width: 100%;
2188
+ min-height: var(--ck-target);
2189
+ padding: 0 0.75rem;
2190
+ border: 1px solid var(--ck-line-2);
2191
+ border-radius: var(--ck-radius-sm);
2192
+ background: var(--ck-bg);
2193
+ color: var(--ck-fg);
2194
+ font: inherit;
2195
+ font-size: max(16px, var(--ck-text));
2196
+ }
2197
+ .ck-history-empty {
2198
+ display: flex;
2199
+ flex-direction: column;
2200
+ align-items: flex-start;
2201
+ gap: 0.75rem;
2202
+ margin: 1.5rem 0.5rem;
2203
+ color: var(--ck-fg-3);
2204
+ font-size: 0.9375rem;
2205
+ }
2206
+ .ck-history-empty p {
2207
+ margin: 0;
2208
+ }
2209
+ .ck-history-new:focus-visible,
2210
+ .ck-history-open:focus-visible,
2211
+ .ck-history-more:focus-visible,
2212
+ .ck-history-pair > button:focus-visible,
2213
+ .ck-history-retry:focus-visible,
2214
+ .ck-app-menu-item:focus-visible {
2215
+ outline: 2px solid var(--ck-accent);
2216
+ outline-offset: -2px;
2217
+ }
2218
+
2219
+ /* The header: Chats · title · New chat · More, as frosted pills. */
2220
+ .ck-app-icon {
2221
+ flex: none;
2222
+ width: var(--ck-target);
2223
+ padding: 0;
2224
+ font-size: 1.125rem;
2225
+ }
2226
+ .ck-app-title {
2227
+ display: flex;
2228
+ flex: 1;
2229
+ flex-direction: column;
2230
+ align-items: center;
2231
+ min-width: 0;
2232
+ text-align: center;
2233
+ }
2234
+ .ck-app-title-text {
2235
+ display: inline-flex;
2236
+ align-items: center;
2237
+ gap: 0.375rem;
2238
+ max-width: 100%;
2239
+ min-width: 0;
2240
+ font-size: 1rem;
2241
+ font-weight: 600;
2242
+ }
2243
+ .ck-app-title-note {
2244
+ max-width: 100%;
2245
+ overflow: hidden;
2246
+ color: var(--ck-muted);
2247
+ font-size: 0.75rem;
2248
+ text-overflow: ellipsis;
2249
+ white-space: nowrap;
2250
+ }
2251
+ .ck-app-rename {
2252
+ width: 100%;
2253
+ max-width: 24rem;
2254
+ }
2255
+ .ck-app-menu-wrap {
2256
+ position: relative;
2257
+ flex: none;
2258
+ }
2259
+ .ck-app-menu {
2260
+ position: absolute;
2261
+ top: calc(100% + 0.375rem);
2262
+ right: 0;
2263
+ z-index: 5;
2264
+ display: flex;
2265
+ flex-direction: column;
2266
+ min-width: 14rem;
2267
+ padding: 0.375rem;
2268
+ border: 1px solid var(--ck-line);
2269
+ border-radius: var(--ck-radius);
2270
+ background: var(--ck-bg);
2271
+ box-shadow: 0 12px 32px -12px rgb(0 0 0 / 0.35);
2272
+ }
2273
+ .ck-app-menu-item {
2274
+ display: flex;
2275
+ align-items: center;
2276
+ gap: 0.625rem;
2277
+ min-height: var(--ck-target);
2278
+ padding: 0 0.75rem;
2279
+ border: 0;
2280
+ border-radius: var(--ck-radius-sm);
2281
+ background: transparent;
2282
+ color: var(--ck-fg);
2283
+ font: inherit;
2284
+ font-size: 0.9375rem;
2285
+ text-align: left;
2286
+ white-space: nowrap;
2287
+ cursor: pointer;
2288
+ }
2289
+ .ck-app-menu-item:hover {
2290
+ background: var(--ck-raised);
2291
+ }
2292
+ .ck-app-menu-check {
2293
+ width: 0.5rem;
2294
+ height: 0.5rem;
2295
+ margin-left: auto;
2296
+ border-radius: 999px;
2297
+ background: var(--ck-fg);
2298
+ }
2299
+
2300
+ /* Above the composer: a delete to confirm, the messages queued behind a turn. */
2301
+ .ck-app-confirm {
2302
+ padding-top: 0.5rem;
2303
+ border: 1px solid var(--ck-line);
2304
+ border-radius: var(--ck-radius);
2305
+ background: var(--ck-bg);
2306
+ }
2307
+ .ck-app-queue {
2308
+ display: flex;
2309
+ flex-direction: column;
2310
+ gap: 0.25rem;
2311
+ margin: 0;
2312
+ padding: 0;
2313
+ list-style: none;
2314
+ }
2315
+ .ck-app-queue li {
2316
+ display: flex;
2317
+ align-items: center;
2318
+ gap: 0.5rem;
2319
+ padding: 0.25rem 0.25rem 0.25rem 0.875rem;
2320
+ border: 1px solid var(--ck-line);
2321
+ border-radius: 1.5rem;
2322
+ background: color-mix(in srgb, var(--ck-bg) 90%, transparent);
2323
+ }
2324
+ .ck-app-queue-text {
2325
+ display: flex;
2326
+ flex: 1;
2327
+ flex-direction: column;
2328
+ min-width: 0;
2329
+ font-size: 0.9375rem;
2330
+ }
2331
+ .ck-app-queue-text small {
2332
+ color: var(--ck-muted);
2333
+ font-size: 0.75rem;
2334
+ }
2335
+
2336
+ /* What the person sent with their words, above their bubble. */
2337
+ .ck-turn-files {
2338
+ display: flex;
2339
+ flex-wrap: wrap;
2340
+ justify-content: flex-end;
2341
+ gap: 0.5rem;
2342
+ max-width: min(85%, 42rem);
2343
+ margin-bottom: 0.375rem;
2344
+ }
2345
+ @media (prefers-reduced-motion: reduce) {
2346
+ .ck-app-drawer[open] .ck-app-drawer-panel {
2347
+ animation: none;
2348
+ }
2349
+ }