@pcoi/components 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 (103) hide show
  1. package/dist/components.css +1 -0
  2. package/dist/index.d.ts +667 -0
  3. package/dist/index.js +2 -0
  4. package/dist/index.mjs +1048 -0
  5. package/package.json +36 -0
  6. package/src/Badge/Badge.css +40 -0
  7. package/src/Badge/Badge.tsx +36 -0
  8. package/src/Badge/index.ts +2 -0
  9. package/src/Button/Button.css +93 -0
  10. package/src/Button/Button.figma.tsx +29 -0
  11. package/src/Button/Button.tsx +47 -0
  12. package/src/Button/index.ts +1 -0
  13. package/src/Callout/Callout.css +43 -0
  14. package/src/Callout/Callout.tsx +39 -0
  15. package/src/Callout/index.ts +1 -0
  16. package/src/Card/Card.css +88 -0
  17. package/src/Card/Card.tsx +60 -0
  18. package/src/Card/index.ts +1 -0
  19. package/src/ChatInterface/ChatInterface.css +49 -0
  20. package/src/ChatInterface/ChatInterface.tsx +120 -0
  21. package/src/ChatInterface/index.ts +6 -0
  22. package/src/ChatMessage/ChatMessage.css +55 -0
  23. package/src/ChatMessage/ChatMessage.tsx +71 -0
  24. package/src/ChatMessage/index.ts +2 -0
  25. package/src/ChatMessageList/ChatMessageList.css +24 -0
  26. package/src/ChatMessageList/ChatMessageList.tsx +51 -0
  27. package/src/ChatMessageList/index.ts +2 -0
  28. package/src/Checkbox/Checkbox.css +97 -0
  29. package/src/Checkbox/Checkbox.tsx +70 -0
  30. package/src/Checkbox/index.ts +2 -0
  31. package/src/CitationMark/CitationMark.css +40 -0
  32. package/src/CitationMark/CitationMark.tsx +38 -0
  33. package/src/CitationMark/index.ts +2 -0
  34. package/src/CitedExcerpt/CitedExcerpt.css +75 -0
  35. package/src/CitedExcerpt/CitedExcerpt.tsx +51 -0
  36. package/src/CitedExcerpt/index.ts +2 -0
  37. package/src/ComparisonTable/ComparisonTable.css +66 -0
  38. package/src/ComparisonTable/ComparisonTable.tsx +48 -0
  39. package/src/ComparisonTable/index.ts +1 -0
  40. package/src/ContactForm/ContactForm.css +38 -0
  41. package/src/ContactForm/ContactForm.tsx +57 -0
  42. package/src/ContactForm/index.ts +1 -0
  43. package/src/DataTable/DataTable.css +56 -0
  44. package/src/DataTable/DataTable.tsx +104 -0
  45. package/src/DataTable/index.ts +2 -0
  46. package/src/DocumentOverlay/DocumentOverlay.css +57 -0
  47. package/src/DocumentOverlay/DocumentOverlay.tsx +86 -0
  48. package/src/DocumentOverlay/index.ts +2 -0
  49. package/src/Footer/Footer.css +72 -0
  50. package/src/Footer/Footer.tsx +56 -0
  51. package/src/Footer/index.ts +1 -0
  52. package/src/FormField/FormField.css +78 -0
  53. package/src/FormField/FormField.tsx +103 -0
  54. package/src/FormField/index.ts +2 -0
  55. package/src/HowStep/HowStep.css +48 -0
  56. package/src/HowStep/HowStep.tsx +38 -0
  57. package/src/HowStep/index.ts +1 -0
  58. package/src/LogoMark/LogoMark.css +16 -0
  59. package/src/LogoMark/LogoMark.tsx +25 -0
  60. package/src/LogoMark/index.ts +2 -0
  61. package/src/Modal/Modal.css +101 -0
  62. package/src/Modal/Modal.tsx +141 -0
  63. package/src/Modal/index.ts +2 -0
  64. package/src/Nav/Nav.css +161 -0
  65. package/src/Nav/Nav.tsx +101 -0
  66. package/src/Nav/index.ts +1 -0
  67. package/src/Panel/Panel.css +35 -0
  68. package/src/Panel/Panel.tsx +61 -0
  69. package/src/Panel/index.ts +2 -0
  70. package/src/PromptBar/PromptBar.css +68 -0
  71. package/src/PromptBar/PromptBar.tsx +93 -0
  72. package/src/PromptBar/index.ts +2 -0
  73. package/src/RadioGroup/RadioGroup.css +117 -0
  74. package/src/RadioGroup/RadioGroup.tsx +112 -0
  75. package/src/RadioGroup/index.ts +2 -0
  76. package/src/SectionHeader/SectionHeader.css +38 -0
  77. package/src/SectionHeader/SectionHeader.tsx +55 -0
  78. package/src/SectionHeader/index.ts +1 -0
  79. package/src/Select/Select.css +90 -0
  80. package/src/Select/Select.tsx +100 -0
  81. package/src/Select/index.ts +2 -0
  82. package/src/SignalsPanel/SignalsPanel.css +51 -0
  83. package/src/SignalsPanel/SignalsPanel.tsx +33 -0
  84. package/src/SignalsPanel/index.ts +1 -0
  85. package/src/SuggestionCard/SuggestionCard.css +51 -0
  86. package/src/SuggestionCard/SuggestionCard.tsx +34 -0
  87. package/src/SuggestionCard/index.ts +2 -0
  88. package/src/SuggestionCards/SuggestionCards.css +15 -0
  89. package/src/SuggestionCards/SuggestionCards.tsx +40 -0
  90. package/src/SuggestionCards/index.ts +2 -0
  91. package/src/Toast/Toast.css +85 -0
  92. package/src/Toast/Toast.tsx +77 -0
  93. package/src/Toast/index.ts +2 -0
  94. package/src/Toggle/Toggle.css +110 -0
  95. package/src/Toggle/Toggle.tsx +73 -0
  96. package/src/Toggle/index.ts +2 -0
  97. package/src/TypingIndicator/TypingIndicator.css +70 -0
  98. package/src/TypingIndicator/TypingIndicator.tsx +37 -0
  99. package/src/TypingIndicator/index.ts +2 -0
  100. package/src/index.ts +37 -0
  101. package/src/styles/utilities.css +14 -0
  102. package/src/styles.css +32 -0
  103. package/src/types.ts +65 -0
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("react"),D=require("react-dom"),y=d.forwardRef(({href:s="#",className:a="",...i},o)=>e.jsxs("a",{ref:o,href:s,className:`pcoi-logo ${a}`,...i,children:[e.jsx("span",{className:"pcoi-logo__mark",children:"P"}),"COI"]}));y.displayName="LogoMark";const b=d.forwardRef(({variant:s="primary",size:a="default",children:i,className:o="",...c},r)=>{const l=["pcoi-btn",`pcoi-btn--${s}`,a!=="default"?`pcoi-btn--${a}`:"",o].filter(Boolean).join(" ");return e.jsx("button",{ref:r,className:l,...c,children:i})});b.displayName="Button";const N=d.forwardRef(({label:s,name:a,multiline:i=!1,rows:o=3,error:c,required:r=!1,disabled:l=!1,className:t="",...p},n)=>{const h=`pcoi-field-${a}`,m=c?`${h}-error`:void 0,f=["pcoi-field",c?"pcoi-field--error":"",l?"pcoi-field--disabled":"",t].filter(Boolean).join(" ");return e.jsxs("div",{className:f,children:[e.jsxs("label",{htmlFor:h,className:"pcoi-field__label",children:[s,r&&e.jsx("span",{className:"pcoi-field__required","aria-hidden":"true",children:"*"})]}),i?e.jsx("textarea",{ref:n,id:h,name:a,rows:o,required:r,disabled:l,"aria-invalid":!!c,"aria-describedby":m,className:"pcoi-field__textarea",...p}):e.jsx("input",{ref:n,id:h,name:a,required:r,disabled:l,"aria-invalid":!!c,"aria-describedby":m,className:"pcoi-field__input",...p}),c&&e.jsx("span",{id:m,className:"pcoi-field__error",role:"alert",children:c})]})});N.displayName="FormField";const P=d.forwardRef(({variant:s="problem",title:a,description:i,icon:o,number:c,headingLevel:r="h3",className:l="",...t},p)=>{const n=r,h=["pcoi-card",`pcoi-card--${s}`,l].filter(Boolean).join(" ");return e.jsxs("div",{ref:p,className:h,...t,children:[s==="problem"&&o&&e.jsx("div",{className:"pcoi-card__icon",children:o}),s==="principle"&&c&&e.jsx("div",{className:"pcoi-card__number",children:c}),e.jsx(n,{className:"pcoi-card__title",children:a}),e.jsx("p",{className:"pcoi-card__description",children:i})]})});P.displayName="Card";const O=d.forwardRef(({links:s=[{label:"Problem",href:"#problem"},{label:"How It Works",href:"#how-it-works"},{label:"Difference",href:"#difference"},{label:"Who It's For",href:"#who"}],ctaLabel:a="Start a Conversation",ctaHref:i="#contact",onCtaClick:o,className:c="",...r},l)=>{const[t,p]=d.useState(!1),[n,h]=d.useState(!1);return d.useEffect(()=>{const m=()=>p(window.scrollY>40);return window.addEventListener("scroll",m,{passive:!0}),m(),()=>window.removeEventListener("scroll",m)},[]),d.useEffect(()=>{if(!n)return;const m=f=>{f.key==="Escape"&&h(!1)};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[n]),e.jsxs("nav",{ref:l,className:`pcoi-nav ${t?"pcoi-nav--scrolled":""} ${n?"pcoi-nav--menu-open":""} ${c}`,"aria-label":"Main",...r,children:[e.jsxs("div",{className:"pcoi-nav__inner",children:[e.jsx(y,{}),e.jsxs("div",{className:"pcoi-nav__links",children:[s.map(m=>e.jsx("a",{href:m.href,"data-track-id":m.trackingId,children:m.label},m.href)),e.jsx("a",{href:i,children:e.jsx(b,{variant:"nav-cta",onClick:o,children:a})})]}),e.jsxs("button",{className:`pcoi-nav__hamburger ${n?"pcoi-nav__hamburger--active":""}`,onClick:()=>h(!n),"aria-label":"Toggle menu","aria-expanded":n,"aria-controls":"pcoi-mobile-menu",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]})]}),e.jsxs("div",{className:"pcoi-nav__mobile-menu",id:"pcoi-mobile-menu",children:[s.map(m=>e.jsx("a",{href:m.href,"data-track-id":m.trackingId,onClick:()=>h(!1),children:m.label},m.href)),e.jsx("a",{href:i,children:e.jsx(b,{variant:"nav-cta",onClick:()=>{o==null||o(),h(!1)},children:a})})]})]})});O.displayName="Nav";const L=d.forwardRef(({label:s,title:a,titleEmphasis:i,description:o,headingLevel:c="h2",className:r="",...l},t)=>{const p=c;return e.jsxs("div",{ref:t,className:`pcoi-section-header ${r}`,...l,children:[e.jsx("span",{className:"pcoi-section-header__label",children:s}),e.jsx(p,{className:"pcoi-section-header__title",children:i?e.jsxs(e.Fragment,{children:[a.replace(i,""),e.jsx("em",{children:i})]}):a}),o&&e.jsx("p",{className:"pcoi-section-header__desc",children:o})]})});L.displayName="SectionHeader";const M=d.forwardRef(({number:s,title:a,description:i,isLast:o=!1,headingLevel:c="h3",className:r="",...l},t)=>{const p=c;return e.jsxs("div",{ref:t,className:`pcoi-how-step ${o?"pcoi-how-step--last":""} ${r}`,...l,children:[e.jsx("div",{className:"pcoi-how-step__number",children:s}),e.jsxs("div",{className:"pcoi-how-step__content",children:[e.jsx(p,{className:"pcoi-how-step__title",children:a}),e.jsx("p",{className:"pcoi-how-step__desc",children:i})]})]})});M.displayName="HowStep";const H=d.forwardRef(({competitorName:s="Typical SaaS AI",pcoiName:a="PCOI",rows:i,className:o="",...c},r)=>e.jsx("div",{ref:r,className:`pcoi-comparison ${o}`,...c,children:e.jsxs("table",{className:"pcoi-comparison__table",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"pcoi-comparison__header",children:[e.jsx("th",{className:"pcoi-comparison__col",scope:"col",children:e.jsx("span",{className:"pcoi-sr-only",children:"Feature"})}),e.jsx("th",{className:"pcoi-comparison__col",scope:"col",children:s}),e.jsx("th",{className:"pcoi-comparison__col pcoi-comparison__col--highlight",scope:"col",children:a})]})}),e.jsx("tbody",{children:i.map((l,t)=>e.jsxs("tr",{className:"pcoi-comparison__row",children:[e.jsx("th",{className:"pcoi-comparison__col pcoi-comparison__col--label",scope:"row",children:l.label}),e.jsx("td",{className:"pcoi-comparison__col",children:l.competitor}),e.jsx("td",{className:"pcoi-comparison__col pcoi-comparison__col--highlight",children:l.pcoi})]},t))})]})}));H.displayName="ComparisonTable";const q=d.forwardRef(({onSubmit:s,className:a="",...i},o)=>{const[c,r]=d.useState(!1),l=t=>{t.preventDefault();const p=t.currentTarget,n=new FormData(p),h=Object.fromEntries(n.entries());s==null||s(h),r(!0),p.reset(),setTimeout(()=>r(!1),3e3)};return e.jsxs("form",{ref:o,className:`pcoi-form ${a}`,onSubmit:l,"aria-label":"Contact form",...i,children:[e.jsxs("div",{className:"pcoi-form__row",children:[e.jsx(N,{label:"Name",name:"name",placeholder:"Your name",required:!0}),e.jsx(N,{label:"Company",name:"company",placeholder:"Company name",required:!0})]}),e.jsxs("div",{className:"pcoi-form__row",children:[e.jsx(N,{label:"Email",name:"email",type:"email",placeholder:"you@company.com",required:!0}),e.jsx(N,{label:"Your Role",name:"role",placeholder:"CEO, COO, VP Ops, etc."})]}),e.jsx(N,{label:"What problem are you trying to solve?",name:"context",multiline:!0,rows:3,placeholder:"Tell us about the knowledge challenges in your organization...",className:"pcoi-form__full"}),e.jsx(b,{type:"submit",variant:"primary",size:"large",disabled:c,children:c?"Message Received":"Start the Conversation"}),e.jsx("p",{className:"pcoi-form__note",children:"No sales automation. A real person reads this and responds personally."})]})});q.displayName="ContactForm";const A=d.forwardRef(({quote:s,attribution:a,attributionTitle:i,sourceUrl:o,sourceLabel:c,className:r="",...l},t)=>e.jsxs("div",{ref:t,className:`pcoi-callout ${r}`,...l,children:[e.jsx("div",{className:"pcoi-callout__line"}),e.jsx("p",{className:"pcoi-callout__quote",children:s}),(a||o)&&e.jsxs("p",{className:"pcoi-callout__attribution",children:[i&&e.jsxs("span",{children:[i,"  ~  "]}),a,o&&e.jsxs(e.Fragment,{children:["  |  ",e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",children:c||"Source"})]})]})]}));A.displayName="Callout";const W=d.forwardRef(({title:s="You'll know this is for you if:",signals:a,headingLevel:i="h3",className:o="",...c},r)=>{const l=i;return e.jsxs("div",{ref:r,className:`pcoi-signals ${o}`,...c,children:[e.jsx(l,{className:"pcoi-signals__title",children:s}),e.jsx("ul",{className:"pcoi-signals__list",children:a.map((t,p)=>e.jsx("li",{className:"pcoi-signals__item",children:t},p))})]})});W.displayName="SignalsPanel";const Y=d.forwardRef(({links:s=[{label:"Problem",href:"#problem"},{label:"How It Works",href:"#how-it-works"},{label:"Difference",href:"#difference"},{label:"Principles",href:"#principles"},{label:"Who It's For",href:"#who"},{label:"Contact",href:"#contact"}],tagline:a=`Portable, Company-Owned
2
+ Operational Intelligence`,copyright:i=`© ${new Date().getFullYear()} PCOI. Operational intelligence you own.`,className:o="",...c},r)=>e.jsxs("footer",{ref:r,className:`pcoi-footer ${o}`,...c,children:[e.jsxs("div",{className:"pcoi-footer__inner",children:[e.jsxs("div",{className:"pcoi-footer__brand",children:[e.jsx(y,{className:"pcoi-footer__logo"}),e.jsx("p",{className:"pcoi-footer__tagline",children:a})]}),e.jsx("div",{className:"pcoi-footer__links",children:s.map(l=>e.jsx("a",{href:l.href,"data-track-id":l.trackingId,children:l.label},l.href))})]}),e.jsx("div",{className:"pcoi-footer__bottom",children:e.jsx("p",{children:i})})]}));Y.displayName="Footer";const K=({size:s=24,title:a,...i})=>e.jsxs("svg",{width:s,height:s,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",role:a?"img":"presentation","aria-hidden":!a,xmlns:"http://www.w3.org/2000/svg",...i,children:[a&&e.jsx("title",{children:a}),e.jsx("polyline",{points:"6 9 12 15 18 9"})]});K.displayName="ChevronDownIcon";const z=d.forwardRef(({label:s,name:a,options:i,placeholder:o,error:c,required:r=!1,disabled:l=!1,className:t="",...p},n)=>{const h=`pcoi-field-${a}`,m=c?`${h}-error`:void 0,f=["pcoi-select",c?"pcoi-select--error":"",l?"pcoi-select--disabled":"",t].filter(Boolean).join(" ");return e.jsxs("div",{className:f,children:[e.jsxs("label",{htmlFor:h,className:"pcoi-select__label",children:[s,r&&e.jsx("span",{className:"pcoi-select__required","aria-hidden":"true",children:"*"})]}),e.jsxs("div",{className:"pcoi-select__wrapper",children:[e.jsxs("select",{ref:n,id:h,name:a,required:r,disabled:l,"aria-invalid":!!c,"aria-describedby":m,className:"pcoi-select__native",defaultValue:o?"":void 0,...p,children:[o&&e.jsx("option",{value:"",disabled:!0,hidden:!0,children:o}),i.map(_=>e.jsx("option",{value:_.value,disabled:_.disabled,children:_.label},_.value))]}),e.jsx("span",{className:"pcoi-select__chevron","aria-hidden":"true",children:e.jsx(K,{size:16})})]}),c&&e.jsx("span",{id:m,className:"pcoi-select__error",role:"alert",children:c})]})});z.displayName="Select";const G=d.forwardRef(({label:s,name:a,error:i,disabled:o=!1,className:c="",...r},l)=>{const t=`pcoi-field-${a}`,p=i?`${t}-error`:void 0,n=["pcoi-checkbox",i?"pcoi-checkbox--error":"",o?"pcoi-checkbox--disabled":"",c].filter(Boolean).join(" ");return e.jsxs("div",{className:n,children:[e.jsxs("label",{htmlFor:t,className:"pcoi-checkbox__control",children:[e.jsx("input",{ref:l,type:"checkbox",id:t,name:a,disabled:o,"aria-invalid":!!i,"aria-describedby":p,className:"pcoi-checkbox__input",...r}),e.jsx("span",{className:"pcoi-checkbox__box","aria-hidden":"true"}),e.jsx("span",{className:"pcoi-checkbox__label",children:s})]}),i&&e.jsx("span",{id:p,className:"pcoi-checkbox__error",role:"alert",children:i})]})});G.displayName="Checkbox";const V=d.forwardRef(({label:s,name:a,error:i,disabled:o=!1,className:c="",...r},l)=>{const t=`pcoi-field-${a}`,p=i?`${t}-error`:void 0,n=["pcoi-toggle",i?"pcoi-toggle--error":"",o?"pcoi-toggle--disabled":"",c].filter(Boolean).join(" ");return e.jsxs("div",{className:n,children:[e.jsxs("label",{htmlFor:t,className:"pcoi-toggle__control",children:[e.jsx("input",{ref:l,type:"checkbox",id:t,name:a,disabled:o,"aria-invalid":!!i,"aria-describedby":p,className:"pcoi-toggle__input",role:"switch",...r}),e.jsx("span",{className:"pcoi-toggle__track","aria-hidden":"true",children:e.jsx("span",{className:"pcoi-toggle__thumb"})}),e.jsx("span",{className:"pcoi-toggle__label",children:s})]}),i&&e.jsx("span",{id:p,className:"pcoi-toggle__error",role:"alert",children:i})]})});V.displayName="Toggle";const J=d.forwardRef(({label:s,name:a,options:i,defaultValue:o,error:c,required:r=!1,disabled:l=!1,onChange:t,className:p="",...n},h)=>{const m=c?`pcoi-field-${a}-error`:void 0,f=["pcoi-radio-group",c?"pcoi-radio-group--error":"",l?"pcoi-radio-group--disabled":"",p].filter(Boolean).join(" "),_=u=>{t==null||t(u.target.value)};return e.jsxs("fieldset",{ref:h,className:f,"aria-invalid":!!c,"aria-describedby":m,...n,children:[e.jsxs("legend",{className:"pcoi-radio-group__legend",children:[s,r&&e.jsx("span",{className:"pcoi-radio-group__required","aria-hidden":"true",children:"*"})]}),e.jsx("div",{className:"pcoi-radio-group__options",children:i.map(u=>{const v=`pcoi-field-${a}-${u.value}`;return e.jsxs("label",{htmlFor:v,className:"pcoi-radio-group__option",children:[e.jsx("input",{type:"radio",id:v,name:a,value:u.value,defaultChecked:o===u.value,required:r,disabled:l||u.disabled,onChange:_,className:"pcoi-radio-group__input"}),e.jsx("span",{className:"pcoi-radio-group__circle","aria-hidden":"true"}),e.jsx("span",{className:"pcoi-radio-group__label",children:u.label})]},u.value)})}),c&&e.jsx("span",{id:m,className:"pcoi-radio-group__error",role:"alert",children:c})]})});J.displayName="RadioGroup";const Q=d.forwardRef(({title:s,headingLevel:a="h3",action:i,children:o,flush:c=!1,className:r="",...l},t)=>{const p=a,n=["pcoi-panel",c?"pcoi-panel--flush":"",r].filter(Boolean).join(" ");return e.jsxs("div",{ref:t,className:n,...l,children:[(s||i)&&e.jsxs("div",{className:"pcoi-panel__header",children:[s&&e.jsx(p,{className:"pcoi-panel__title",children:s}),i&&e.jsx("div",{className:"pcoi-panel__action",children:i})]}),e.jsx("div",{className:"pcoi-panel__body",children:o})]})});Q.displayName="Panel";const X=d.forwardRef(({columns:s,rows:a,rowKey:i,emptyText:o="No data available",ariaLabel:c,className:r="",...l},t)=>{const p=(n,h)=>i?typeof i=="function"?i(n,h):String(n[i]):String(h);return e.jsx("div",{ref:t,className:`pcoi-data-table ${r}`,...l,children:e.jsxs("table",{className:"pcoi-data-table__table","aria-label":c,children:[e.jsx("thead",{className:"pcoi-data-table__head",children:e.jsx("tr",{className:"pcoi-data-table__head-row",children:s.map(n=>e.jsx("th",{className:`pcoi-data-table__th${n.align?` pcoi-data-table__th--${n.align}`:""}`,children:n.header},n.key))})}),e.jsx("tbody",{className:"pcoi-data-table__body",children:a.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:s.length,className:"pcoi-data-table__empty",children:o})}):a.map((n,h)=>e.jsx("tr",{className:"pcoi-data-table__row",children:s.map(m=>{const f=n[m.key];return e.jsx("td",{className:`pcoi-data-table__td${m.align?` pcoi-data-table__td--${m.align}`:""}`,children:m.render?m.render(f,n):String(f??"")},m.key)})},p(n,h)))})]})})});X.displayName="DataTable";const g=d.forwardRef(({children:s,variant:a="default",className:i="",...o},c)=>{const r=["pcoi-badge",`pcoi-badge--${a}`,i].filter(Boolean).join(" ");return e.jsx("span",{ref:c,className:r,...o,children:s})});g.displayName="Badge";const w=({size:s=24,title:a,...i})=>e.jsxs("svg",{width:s,height:s,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",role:a?"img":"presentation","aria-hidden":!a,xmlns:"http://www.w3.org/2000/svg",...i,children:[a&&e.jsx("title",{children:a}),e.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]});w.displayName="CloseIcon";const k=({open:s,onClose:a,title:i,headingLevel:o="h2",size:c="default",children:r,footer:l,className:t="",...p})=>{const n=d.useRef(null),h=d.useRef(null),m=o,f=i?"pcoi-modal-title":void 0,_=d.useCallback(x=>{if(x.key==="Escape"){a();return}if(x.key==="Tab"&&n.current){const j=n.current.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(j.length===0)return;const T=j[0],F=j[j.length-1];x.shiftKey&&document.activeElement===T?(x.preventDefault(),F.focus()):!x.shiftKey&&document.activeElement===F&&(x.preventDefault(),T.focus())}},[a]);d.useEffect(()=>(s&&(h.current=document.activeElement,document.addEventListener("keydown",_),document.body.style.overflow="hidden",requestAnimationFrame(()=>{var j;const x=(j=n.current)==null?void 0:j.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');x==null||x.focus()})),()=>{var x;document.removeEventListener("keydown",_),document.body.style.overflow="",(x=h.current)==null||x.focus()}),[s,_]);const u=x=>{x.target===x.currentTarget&&a()};if(!s)return null;const v=["pcoi-modal",t].filter(Boolean).join(" ");return D.createPortal(e.jsx("div",{className:v,onClick:u,children:e.jsxs("div",{ref:n,className:`pcoi-modal__dialog${c==="wide"?" pcoi-modal__dialog--wide":""}`,role:"dialog","aria-modal":"true","aria-labelledby":f,...p,children:[e.jsxs("div",{className:"pcoi-modal__header",children:[i&&e.jsx(m,{id:f,className:"pcoi-modal__title",children:i}),e.jsx("button",{type:"button",className:"pcoi-modal__close",onClick:a,"aria-label":"Close modal",children:e.jsx(w,{size:20})})]}),e.jsx("div",{className:"pcoi-modal__body",children:r}),l&&e.jsx("div",{className:"pcoi-modal__footer",children:l})]})}),document.body)};k.displayName="Modal";const Z=({message:s,variant:a="info",open:i,onClose:o,duration:c=5e3,className:r="",...l})=>{const t=d.useCallback(()=>{o==null||o()},[o]);if(d.useEffect(()=>{if(!i||c===0)return;const n=setTimeout(t,c);return()=>clearTimeout(n)},[i,c,t]),!i)return null;const p=["pcoi-toast",`pcoi-toast--${a}`,r].filter(Boolean).join(" ");return D.createPortal(e.jsx("div",{className:p,role:"alert",...l,children:e.jsxs("div",{className:"pcoi-toast__content",children:[e.jsx("span",{className:"pcoi-toast__message",children:s}),o&&e.jsx("button",{type:"button",className:"pcoi-toast__close",onClick:t,"aria-label":"Dismiss notification",children:e.jsx(w,{size:16})})]})}),document.body)};Z.displayName="Toast";const C=d.forwardRef(({label:s,icon:a,className:i="",...o},c)=>{const r=["pcoi-suggestion-card",i].filter(Boolean).join(" ");return e.jsxs("button",{ref:c,type:"button",className:r,...o,children:[a&&e.jsx("span",{className:"pcoi-suggestion-card__icon",children:a}),e.jsx("span",{className:"pcoi-suggestion-card__label",children:s})]})});C.displayName="SuggestionCard";const R=d.forwardRef(({index:s,excerpt:a,sourceTitle:i,onSourceClick:o,className:c="",...r},l)=>{const t=["pcoi-cited-excerpt",c].filter(Boolean).join(" ");return e.jsxs("div",{ref:l,className:t,...r,children:[e.jsx("button",{type:"button",className:"pcoi-cited-excerpt__source",onClick:o,children:i}),e.jsxs("div",{className:"pcoi-cited-excerpt__body",children:[e.jsxs("button",{type:"button",className:"pcoi-cited-excerpt__index",onClick:o,children:["[",s,"]"]}),e.jsx("p",{className:"pcoi-cited-excerpt__text",children:a})]})]})});R.displayName="CitedExcerpt";const U=({size:s=24,title:a,...i})=>e.jsxs("svg",{width:s,height:s,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",role:a?"img":"presentation","aria-hidden":!a,xmlns:"http://www.w3.org/2000/svg",...i,children:[a&&e.jsx("title",{children:a}),e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),e.jsx("polyline",{points:"12 5 19 12 12 19"})]});U.displayName="ArrowRightIcon";const $=d.forwardRef(({value:s,onChange:a,onSubmit:i,placeholder:o="Ask a question…",disabled:c=!1,loading:r=!1,className:l="",...t},p)=>{const n=d.useRef(null),h=d.useCallback(_=>{_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),s.trim()&&!c&&!r&&i(s.trim()))},[s,c,r,i]),m=d.useCallback(()=>{s.trim()&&!c&&!r&&i(s.trim())},[s,c,r,i]),f=["pcoi-prompt-bar",l].filter(Boolean).join(" ");return e.jsxs("div",{ref:p,className:f,...t,children:[e.jsx("textarea",{ref:n,className:"pcoi-prompt-bar__input",value:s,onChange:_=>a(_.target.value),onKeyDown:h,placeholder:o,disabled:c,rows:1,"aria-label":o}),e.jsx("div",{className:"pcoi-prompt-bar__actions",children:e.jsx(b,{variant:"primary",className:"pcoi-prompt-bar__send",onClick:m,disabled:c||r||!s.trim(),"aria-label":"Send message",children:e.jsx("span",{className:"pcoi-prompt-bar__send-icon",children:e.jsx(U,{size:16})})})})]})});$.displayName="PromptBar";const S=d.forwardRef(({role:s,children:a,citations:i,timestamp:o,onCitationClick:c,className:r="",...l},t)=>{const p=["pcoi-chat-message",`pcoi-chat-message--${s}`,r].filter(Boolean).join(" ");return e.jsxs("div",{ref:t,className:p,...l,children:[e.jsx("div",{className:"pcoi-chat-message__header",children:e.jsx(g,{variant:s==="assistant"?"default":"info",children:s==="assistant"?"PCOI":"You"})}),e.jsx("div",{className:"pcoi-chat-message__body",children:a}),i&&i.length>0&&e.jsx("div",{className:"pcoi-chat-message__citations",children:i.map(n=>e.jsx(R,{index:n.index,excerpt:n.excerpt,sourceTitle:n.sourceTitle,onSourceClick:()=>c==null?void 0:c(n)},n.index))}),o&&e.jsx("time",{className:"pcoi-chat-message__timestamp",children:o})]})});S.displayName="ChatMessage";const I=d.forwardRef(({suggestions:s,onSelect:a,className:i="",...o},c)=>{const r=["pcoi-suggestion-cards",i].filter(Boolean).join(" ");return e.jsx("div",{ref:c,className:r,...o,children:s.map(l=>e.jsx(C,{label:l.label,icon:l.icon,onClick:()=>a(l)},l.id))})});I.displayName="SuggestionCards";const B=d.forwardRef(({children:s,className:a="",...i},o)=>{const c=d.useRef(null);d.useEffect(()=>{const l=c.current;if(!l)return;const t=()=>{requestAnimationFrame(()=>{l.scrollTop=l.scrollHeight})},p=new MutationObserver(t);return p.observe(l,{childList:!0,subtree:!0}),t(),()=>p.disconnect()},[]);const r=["pcoi-chat-message-list",a].filter(Boolean).join(" ");return e.jsx("div",{ref:o,className:r,...i,children:e.jsx("div",{ref:c,className:"pcoi-chat-message-list__inner",children:s})})});B.displayName="ChatMessageList";const ee=d.forwardRef(({open:s,onClose:a,title:i,sourceLabel:o,children:c,highlightId:r,highlightIndex:l,className:t="",...p},n)=>{const h=d.useRef(null);d.useEffect(()=>{s&&r&&h.current&&requestAnimationFrame(()=>{var u;const _=(u=h.current)==null?void 0:u.querySelector(`#${CSS.escape(r)}`);_&&(_.scrollIntoView({behavior:"smooth",block:"center"}),_.classList.add("pcoi-doc-overlay__highlight"),l!==void 0&&_.setAttribute("data-highlight-index",`[${l}]`))})},[s,r,l]);const m=["pcoi-doc-overlay",t].filter(Boolean).join(" "),f=o?d.createElement("div",{className:"pcoi-doc-overlay__source"},d.createElement(g,null,o)):void 0;return d.createElement(k,{open:s,onClose:a,title:i,size:"wide",footer:f,className:m,...p},d.createElement("div",{ref:h,className:"pcoi-doc-overlay__content"},c))});ee.displayName="DocumentOverlay";const E=d.forwardRef(({label:s="PCOI",className:a="",...i},o)=>{const c=["pcoi-typing-indicator",a].filter(Boolean).join(" ");return e.jsxs("div",{ref:o,className:c,...i,children:[e.jsx("div",{className:"pcoi-typing-indicator__header",children:e.jsx(g,{children:s})}),e.jsxs("div",{className:"pcoi-typing-indicator__dots","aria-label":"Typing",children:[e.jsx("span",{className:"pcoi-typing-indicator__dot"}),e.jsx("span",{className:"pcoi-typing-indicator__dot"}),e.jsx("span",{className:"pcoi-typing-indicator__dot"})]})]})});E.displayName="TypingIndicator";const ae=d.forwardRef(({messages:s,suggestions:a,promptValue:i,onPromptChange:o,onPromptSubmit:c,onSuggestionSelect:r,onCitationClick:l,placeholder:t,loading:p=!1,className:n="",...h},m)=>{const f=s.length===0,_=["pcoi-chat",f?"pcoi-chat--empty":"",n].filter(Boolean).join(" ");return e.jsxs("div",{ref:m,className:_,...h,children:[f?e.jsx("div",{className:"pcoi-chat__empty-state",children:a&&a.length>0&&r&&e.jsx("div",{className:"pcoi-chat__suggestions",children:e.jsx(I,{suggestions:a,onSelect:r})})}):e.jsxs(B,{className:"pcoi-chat__messages",children:[s.map(u=>e.jsx(S,{role:u.role,citations:u.citations,timestamp:u.timestamp,onCitationClick:l,children:u.content},u.id)),p&&e.jsx(E,{})]}),e.jsx("div",{className:"pcoi-chat__prompt",children:e.jsx($,{value:i,onChange:o,onSubmit:c,placeholder:t,loading:p,disabled:p})})]})});ae.displayName="ChatInterface";exports.Badge=g;exports.Button=b;exports.Callout=A;exports.Card=P;exports.ChatInterface=ae;exports.ChatMessage=S;exports.ChatMessageList=B;exports.Checkbox=G;exports.CitedExcerpt=R;exports.ComparisonTable=H;exports.ContactForm=q;exports.DataTable=X;exports.DocumentOverlay=ee;exports.Footer=Y;exports.FormField=N;exports.HowStep=M;exports.LogoMark=y;exports.Modal=k;exports.Nav=O;exports.Panel=Q;exports.PromptBar=$;exports.RadioGroup=J;exports.SectionHeader=L;exports.Select=z;exports.SignalsPanel=W;exports.SuggestionCard=C;exports.SuggestionCards=I;exports.Toast=Z;exports.Toggle=V;exports.TypingIndicator=E;