juneau 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 (55) hide show
  1. package/README.md +320 -0
  2. package/dist/adapters/dashboardAdapter.d.ts +10 -0
  3. package/dist/adapters/dashboardAdapter.d.ts.map +1 -0
  4. package/dist/adapters/mockAdapter.d.ts +8 -0
  5. package/dist/adapters/mockAdapter.d.ts.map +1 -0
  6. package/dist/components/AiChat/AiChat.d.ts +39 -0
  7. package/dist/components/AiChat/AiChat.d.ts.map +1 -0
  8. package/dist/components/AiChatHeader/AiChatHeader.d.ts +10 -0
  9. package/dist/components/AiChatHeader/AiChatHeader.d.ts.map +1 -0
  10. package/dist/components/AiError/AiError.d.ts +7 -0
  11. package/dist/components/AiError/AiError.d.ts.map +1 -0
  12. package/dist/components/AiInput/AiInput.d.ts +29 -0
  13. package/dist/components/AiInput/AiInput.d.ts.map +1 -0
  14. package/dist/components/AiMessageBubble/AiMessageBubble.d.ts +12 -0
  15. package/dist/components/AiMessageBubble/AiMessageBubble.d.ts.map +1 -0
  16. package/dist/components/AiMessageList/AiMessageList.d.ts +13 -0
  17. package/dist/components/AiMessageList/AiMessageList.d.ts.map +1 -0
  18. package/dist/components/AiSidebar/AiSidebar.d.ts +26 -0
  19. package/dist/components/AiSidebar/AiSidebar.d.ts.map +1 -0
  20. package/dist/components/AiTypingIndicator/AiTypingIndicator.d.ts +2 -0
  21. package/dist/components/AiTypingIndicator/AiTypingIndicator.d.ts.map +1 -0
  22. package/dist/components/JuneauProvider/JuneauProvider.d.ts +43 -0
  23. package/dist/components/JuneauProvider/JuneauProvider.d.ts.map +1 -0
  24. package/dist/components/icons.d.ts +17 -0
  25. package/dist/components/icons.d.ts.map +1 -0
  26. package/dist/components/parts/AiMessagePartRenderer.d.ts +9 -0
  27. package/dist/components/parts/AiMessagePartRenderer.d.ts.map +1 -0
  28. package/dist/components/parts/AiProposalCard.d.ts +9 -0
  29. package/dist/components/parts/AiProposalCard.d.ts.map +1 -0
  30. package/dist/components/parts/AiTablePart.d.ts +7 -0
  31. package/dist/components/parts/AiTablePart.d.ts.map +1 -0
  32. package/dist/core/stream.d.ts +8 -0
  33. package/dist/core/stream.d.ts.map +1 -0
  34. package/dist/core/types.d.ts +59 -0
  35. package/dist/core/types.d.ts.map +1 -0
  36. package/dist/hooks/useAiChat.d.ts +33 -0
  37. package/dist/hooks/useAiChat.d.ts.map +1 -0
  38. package/dist/i18n/context.d.ts +8 -0
  39. package/dist/i18n/context.d.ts.map +1 -0
  40. package/dist/i18n/index.d.ts +4 -0
  41. package/dist/i18n/index.d.ts.map +1 -0
  42. package/dist/i18n/locales/cs.d.ts +3 -0
  43. package/dist/i18n/locales/cs.d.ts.map +1 -0
  44. package/dist/i18n/locales/en.d.ts +3 -0
  45. package/dist/i18n/locales/en.d.ts.map +1 -0
  46. package/dist/i18n/types.d.ts +24 -0
  47. package/dist/i18n/types.d.ts.map +1 -0
  48. package/dist/index.cjs +49 -0
  49. package/dist/index.cjs.map +1 -0
  50. package/dist/index.d.ts +21 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +9513 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/style.css +1 -0
  55. package/package.json +80 -0
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ :root{--juneau-color-primary: #000000;--juneau-color-primary-dark: #252528;--juneau-color-primary-light: #ECECEC;--juneau-color-primary-border: #E8E8EC;--juneau-color-accent: #FF49A4;--juneau-color-accent-dark: #FF6BB3;--juneau-color-accent-light: #FFF0F7;--juneau-color-accent-border: #FFBDD9;--juneau-color-surface: #FFFFFF;--juneau-color-surface-raised: #F4F4F6;--juneau-color-surface-hover: #ECECEC;--juneau-color-border: #E8E8EC;--juneau-color-border-subtle: #ECECEC;--juneau-color-text-primary: #000000;--juneau-color-text-secondary: #474747;--juneau-color-text-muted: #474747;--juneau-color-text-faint: #9090A0;--juneau-color-text-inverse: #FFFFFF;--juneau-color-assistant-avatar: #FF49A4;--juneau-color-error-bg: #FFF0F7;--juneau-color-error-border: #E6244A;--juneau-color-error-text: #C41A3B;--juneau-color-success-bg: #F4FDE8;--juneau-color-success-text: #3F7528;--juneau-color-warning-bg: #FFF6E5;--juneau-color-warning-text: #B37400;--juneau-color-danger-bg: #FFF0F7;--juneau-color-danger-text: #C41A3B;--juneau-radius-sm: 6px;--juneau-radius-md: 8px;--juneau-radius-lg: 12px;--juneau-radius-full: 9999px;--juneau-font-size-xs: 11px;--juneau-font-size-sm: 12px;--juneau-font-size-base: 13px;--juneau-font-size-md: 14px;--juneau-font-size-lg: 15px;--juneau-font-size-xl: 16px;--juneau-font-size-2xl: 22px;--juneau-font-size-3xl: 24px;--juneau-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--juneau-transition-fast: .15s}._root_14q8g_1{display:contents;font-family:var(--juneau-font-family)}._wrapper_v5oy7_1{overflow-x:auto;margin:8px 0;border-radius:var(--juneau-radius-md);border:1px solid var(--juneau-color-border)}._table_v5oy7_8{width:100%;border-collapse:collapse;font-size:var(--juneau-font-size-base)}._th_v5oy7_14{background-color:var(--juneau-color-surface-raised);padding:8px 12px;text-align:left;font-weight:600;color:var(--juneau-color-text-secondary);border-bottom:1px solid var(--juneau-color-border);white-space:nowrap}._tr_v5oy7_24:nth-child(2n){background-color:var(--juneau-color-surface-raised)}._tr_v5oy7_24:hover{background-color:var(--juneau-color-surface-hover)}._td_v5oy7_32{padding:7px 12px;color:var(--juneau-color-text-primary);border-bottom:1px solid var(--juneau-color-border-subtle)}._card_q8nsq_1{background:linear-gradient(135deg,var(--juneau-color-accent-light) 0%,var(--juneau-color-accent-border) 100%);border:1px solid var(--juneau-color-accent-border);border-radius:var(--juneau-radius-lg);padding:14px 16px;margin:8px 0}._header_q8nsq_9{display:flex;align-items:center;gap:8px;margin-bottom:6px}._icon_q8nsq_16{flex-shrink:0;width:16px;height:16px;color:var(--juneau-color-accent)}._title_q8nsq_23{font-weight:600;font-size:var(--juneau-font-size-md);color:var(--juneau-color-accent-dark)}._description_q8nsq_29{font-size:var(--juneau-font-size-base);color:var(--juneau-color-text-secondary);margin:0 0 12px;line-height:1.5}._actions_q8nsq_36{display:flex;gap:8px}._confirm_q8nsq_41{padding:7px 16px;background-color:var(--juneau-color-accent);color:var(--juneau-color-text-inverse);border:none;border-radius:var(--juneau-radius-sm);font-size:var(--juneau-font-size-base);font-weight:500;cursor:pointer;transition:background-color var(--juneau-transition-fast)}._confirm_q8nsq_41:hover{background-color:var(--juneau-color-accent-dark)}._cancel_q8nsq_57{padding:7px 16px;background-color:transparent;color:var(--juneau-color-text-muted);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-sm);font-size:var(--juneau-font-size-base);font-weight:500;cursor:pointer;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._cancel_q8nsq_57:hover{background-color:var(--juneau-color-surface-hover);color:var(--juneau-color-text-secondary)}._markdown_187bn_1{line-height:1.6;font-size:var(--juneau-font-size-md)}._markdown_187bn_1 p{margin:0 0 .5em}._markdown_187bn_1 p:last-child{margin-bottom:0}._markdown_187bn_1 strong{font-weight:700}._markdown_187bn_1 em{font-style:italic}._markdown_187bn_1 code{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,monospace;font-size:.9em;background:var(--juneau-color-surface-raised);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-sm);padding:.1em .35em}._markdown_187bn_1 pre{background:var(--juneau-color-surface-raised);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);padding:10px 14px;overflow-x:auto;margin:.5em 0}._markdown_187bn_1 pre code{background:none;border:none;padding:0;font-size:var(--juneau-font-size-sm)}._markdown_187bn_1 ul,._markdown_187bn_1 ol{margin:.25em 0 .5em;padding-left:1.4em}._markdown_187bn_1 li{margin-bottom:.2em}._markdown_187bn_1 blockquote{margin:.5em 0;padding-left:.75em;border-left:3px solid var(--juneau-color-border);color:var(--juneau-color-text-secondary)}._markdown_187bn_1 a{color:var(--juneau-color-accent);text-decoration:underline}._markdown_187bn_1 h1,._markdown_187bn_1 h2,._markdown_187bn_1 h3,._markdown_187bn_1 h4{margin:.6em 0 .3em;font-weight:700;line-height:1.3}._markdown_187bn_1 h1{font-size:var(--juneau-font-size-xl)}._markdown_187bn_1 h2{font-size:var(--juneau-font-size-lg)}._markdown_187bn_1 h3,._markdown_187bn_1 h4{font-size:var(--juneau-font-size-md)}._errorText_187bn_83{display:inline-flex;align-items:center;gap:5px;color:var(--juneau-color-error-text);font-size:var(--juneau-font-size-base)}._errorIcon_187bn_91{width:14px;height:14px;flex-shrink:0}._wrapper_13l1e_1{display:flex;align-items:flex-start;gap:8px;padding:4px 0}._user_13l1e_8{flex-direction:row-reverse}._assistant_13l1e_12{flex-direction:row}._avatar_13l1e_16{flex-shrink:0;width:30px;height:30px;border-radius:var(--juneau-radius-full);font-size:var(--juneau-font-size-xs);font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:2px}._user_13l1e_8 ._avatar_13l1e_16{background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse)}._assistant_13l1e_12 ._avatar_13l1e_16{background-color:var(--juneau-color-assistant-avatar);color:var(--juneau-color-text-inverse)}._bubble_13l1e_39{max-width:85%;padding:10px 14px;border-radius:var(--juneau-radius-lg);font-size:var(--juneau-font-size-md);line-height:1.6;word-break:break-word}._user_13l1e_8 ._bubble_13l1e_39{background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);border-bottom-right-radius:3px}._assistant_13l1e_12 ._bubble_13l1e_39{background-color:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary);border:1px solid var(--juneau-color-border);border-bottom-left-radius:3px}._empty_13l1e_61{display:inline-block;width:4px;height:16px}._wrapper_c5015_1{display:flex;align-items:center;gap:4px;padding:10px 14px}._dot_c5015_8{width:7px;height:7px;border-radius:var(--juneau-radius-full);background-color:var(--juneau-color-text-faint);animation:_bounce_c5015_1 1.2s infinite ease-in-out}._dot_c5015_8:nth-child(2){animation-delay:.2s}._dot_c5015_8:nth-child(3){animation-delay:.4s}@keyframes _bounce_c5015_1{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-5px);opacity:1}}._list_1f8gn_1{flex:1;overflow-y:auto;padding:16px 12px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}._empty_1f8gn_11{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--juneau-color-text-faint);font-size:var(--juneau-font-size-md);gap:6px;padding:40px 20px}._hint_1f8gn_24{font-size:var(--juneau-font-size-sm);color:var(--juneau-color-text-faint)}._typing_1f8gn_31{display:flex;align-items:flex-start;gap:8px;padding:2px 0}._wrapper_v8iyr_1{display:flex;flex-direction:column;border-top:1px solid var(--juneau-color-border);background-color:var(--juneau-color-surface);flex-shrink:0}._textarea_v8iyr_11{resize:none;border:none;outline:none;padding:12px 14px 6px;font-size:var(--juneau-font-size-md);font-family:inherit;line-height:1.6;color:var(--juneau-color-text-primary);background-color:var(--juneau-color-surface);width:100%}._textarea_v8iyr_11::placeholder{color:var(--juneau-color-text-faint)}._textarea_v8iyr_11:disabled{opacity:.6;cursor:not-allowed}._toolbar_v8iyr_35{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 10px;gap:8px}._actions_v8iyr_45{display:flex;align-items:center;gap:2px;flex-wrap:wrap}._actionBtn_v8iyr_52{display:flex;align-items:center;gap:5px;padding:5px 8px;border:none;border-radius:var(--juneau-radius-sm);background:transparent;color:var(--juneau-color-text-muted);font-size:var(--juneau-font-size-sm);font-family:inherit;cursor:pointer;white-space:nowrap;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._actionBtn_v8iyr_52 svg{font-size:11px;opacity:.8}._actionBtn_v8iyr_52:hover:not(:disabled){background:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary)}._actionBtn_v8iyr_52:disabled{opacity:.4;cursor:not-allowed}._sendBtn_v8iyr_85{display:flex;align-items:center;gap:7px;padding:7px 14px;border:none;border-radius:var(--juneau-radius-md);background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);font-size:var(--juneau-font-size-base);font-family:inherit;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color var(--juneau-transition-fast),opacity var(--juneau-transition-fast)}._sendBtn_v8iyr_85 svg{font-size:12px}._sendBtn_v8iyr_85:hover:not(:disabled){background-color:var(--juneau-color-primary-dark)}._sendBtn_v8iyr_85:disabled{opacity:.4;cursor:not-allowed}._spinnerIcon_v8iyr_116{width:14px;height:14px;animation:_spin_v8iyr_116 .8s linear infinite}@keyframes _spin_v8iyr_116{to{transform:rotate(360deg)}}._stopBtn_v8iyr_126{display:flex;align-items:center;gap:7px;padding:7px 14px;border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);background-color:var(--juneau-color-surface);color:var(--juneau-color-text-secondary);font-size:var(--juneau-font-size-base);font-family:inherit;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._stopBtn_v8iyr_126:hover{background-color:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary)}._stopIcon_v8iyr_149{width:14px;height:14px}._wrapper_1kefv_1{display:flex;align-items:center;gap:8px;padding:10px 14px;background-color:var(--juneau-color-error-bg);border:1px solid var(--juneau-color-error-border);border-radius:var(--juneau-radius-md);margin:4px 12px;font-size:var(--juneau-font-size-base);color:var(--juneau-color-error-text)}._icon_1kefv_14{flex-shrink:0;width:16px;height:16px}._message_1kefv_20{flex:1}._dismiss_1kefv_24{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--juneau-color-error-text);padding:0 2px;opacity:.7;transition:opacity var(--juneau-transition-fast)}._dismiss_1kefv_24 svg{width:14px;height:14px}._dismiss_1kefv_24:hover{opacity:1}._chat_1acbe_1{display:flex;flex-direction:column;height:100%;overflow:hidden}._header_3rkjl_1{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--juneau-color-border);background:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);flex-shrink:0}._left_3rkjl_12{display:flex;align-items:center;gap:8px}._icon_3rkjl_18{font-size:14px;opacity:.9}._title_3rkjl_23{font-size:var(--juneau-font-size-base);font-weight:600;letter-spacing:.02em}._resetBtn_3rkjl_29{background:#ffffff26;border:1px solid rgba(255,255,255,.3);border-radius:var(--juneau-radius-sm);color:var(--juneau-color-text-inverse);width:26px;height:26px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color var(--juneau-transition-fast)}._resetBtn_3rkjl_29:hover{background:#ffffff40}._sidebar_1ukfc_1{display:flex;flex-direction:column;width:380px;min-width:320px;height:100%;background-color:var(--juneau-color-surface);border-left:1px solid var(--juneau-color-border);overflow:hidden}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "juneau",
3
+ "version": "0.1.0",
4
+ "description": "Open-source React/TypeScript library for AI chat UI components",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./dist/style.css": "./dist/style.css"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "sideEffects": [
21
+ "dist/style.css"
22
+ ],
23
+ "scripts": {
24
+ "dev": "vite",
25
+ "build": "npm run build:types && vite build --mode lib",
26
+ "build:types": "tsc --project tsconfig.build.json",
27
+ "build:demo": "vite build",
28
+ "preview": "vite preview --outDir dist-demo",
29
+ "typecheck": "tsc --noEmit",
30
+ "lint": "eslint src --ext .ts,.tsx",
31
+ "storybook": "storybook dev -p 6006",
32
+ "build-storybook": "storybook build",
33
+ "test": "vitest"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^18.0.0 || ^19.0.0",
37
+ "react-dom": "^18.0.0 || ^19.0.0"
38
+ },
39
+ "dependencies": {
40
+ "react-markdown": "^10.1.0",
41
+ "remark-gfm": "^4.0.1"
42
+ },
43
+ "devDependencies": {
44
+ "@chromatic-com/storybook": "latest",
45
+ "@fortawesome/fontawesome-svg-core": "^7.3.1",
46
+ "@fortawesome/free-regular-svg-icons": "^7.3.1",
47
+ "@fortawesome/free-solid-svg-icons": "^7.3.1",
48
+ "@fortawesome/react-fontawesome": "^3.5.0",
49
+ "@storybook/addon-a11y": "^10.5.7",
50
+ "@storybook/addon-docs": "^10.5.7",
51
+ "@storybook/addon-mcp": "latest",
52
+ "@storybook/addon-vitest": "^10.5.7",
53
+ "@storybook/react-vite": "^10.5.7",
54
+ "@testing-library/react": "^16.3.2",
55
+ "@types/react": "^19.0.0",
56
+ "@types/react-dom": "^19.0.0",
57
+ "@vitejs/plugin-react": "^4.3.4",
58
+ "@vitest/browser-playwright": "latest",
59
+ "@vitest/coverage-v8": "latest",
60
+ "jsdom": "^30.0.1",
61
+ "playwright": "latest",
62
+ "storybook": "^10.5.7",
63
+ "typescript": "^5.7.0",
64
+ "vite": "^6.0.0",
65
+ "vitest": "latest"
66
+ },
67
+ "keywords": [
68
+ "react",
69
+ "ai",
70
+ "chat",
71
+ "ui",
72
+ "copilot",
73
+ "streaming"
74
+ ],
75
+ "license": "MIT",
76
+ "allowScripts": {
77
+ "esbuild@0.25.12": true,
78
+ "fsevents@2.3.3": true
79
+ }
80
+ }