@thewhatmatters/wmds 0.3.0 → 0.4.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 (243) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/CONSUMING.md +9 -4
  3. package/dist/collapse.css +9 -1
  4. package/dist/colors.css +7 -0
  5. package/dist/components/atoms/Badge/Badge.d.ts +16 -4
  6. package/dist/components/atoms/Badge/Badge.d.ts.map +1 -1
  7. package/dist/components/atoms/Badge/Badge.js +54 -42
  8. package/dist/components/atoms/Badge/badgeStyles.d.ts +12 -2
  9. package/dist/components/atoms/Badge/badgeStyles.d.ts.map +1 -1
  10. package/dist/components/atoms/Badge/badgeStyles.js +24 -13
  11. package/dist/components/atoms/Button/Button.d.ts +11 -3
  12. package/dist/components/atoms/Button/Button.d.ts.map +1 -1
  13. package/dist/components/atoms/Button/Button.js +118 -98
  14. package/dist/components/atoms/Button/ButtonStatusButton.d.ts +3 -1
  15. package/dist/components/atoms/Button/ButtonStatusButton.d.ts.map +1 -1
  16. package/dist/components/atoms/Button/ButtonStatusButton.js +19 -18
  17. package/dist/components/atoms/Button/ButtonStatusContent.d.ts +7 -1
  18. package/dist/components/atoms/Button/ButtonStatusContent.d.ts.map +1 -1
  19. package/dist/components/atoms/Button/ButtonStatusContent.js +9 -6
  20. package/dist/components/atoms/Button/buttonStatusStyles.d.ts +5 -0
  21. package/dist/components/atoms/Button/buttonStatusStyles.d.ts.map +1 -1
  22. package/dist/components/atoms/Button/buttonStatusStyles.js +10 -10
  23. package/dist/components/atoms/Button/buttonStyles.d.ts +2 -0
  24. package/dist/components/atoms/Button/buttonStyles.d.ts.map +1 -1
  25. package/dist/components/atoms/Button/buttonStyles.js +12 -12
  26. package/dist/components/atoms/Checkbox/Checkbox.d.ts +7 -0
  27. package/dist/components/atoms/Checkbox/Checkbox.d.ts.map +1 -1
  28. package/dist/components/atoms/Checkbox/Checkbox.js +86 -69
  29. package/dist/components/atoms/Checkbox/checkboxStyles.d.ts +6 -0
  30. package/dist/components/atoms/Checkbox/checkboxStyles.d.ts.map +1 -1
  31. package/dist/components/atoms/Checkbox/checkboxStyles.js +11 -11
  32. package/dist/components/atoms/IconButton/IconButton.d.ts +5 -0
  33. package/dist/components/atoms/IconButton/IconButton.d.ts.map +1 -1
  34. package/dist/components/atoms/IconButton/IconButton.js +73 -68
  35. package/dist/components/atoms/IconButton/iconButtonStyles.d.ts +5 -0
  36. package/dist/components/atoms/IconButton/iconButtonStyles.d.ts.map +1 -1
  37. package/dist/components/atoms/IconButton/iconButtonStyles.js +4 -4
  38. package/dist/components/atoms/Kbd/useKbdChoiceKeys.d.ts +13 -4
  39. package/dist/components/atoms/Kbd/useKbdChoiceKeys.d.ts.map +1 -1
  40. package/dist/components/atoms/Kbd/useKbdChoiceKeys.js +32 -13
  41. package/dist/components/atoms/Prose/Prose.d.ts +23 -0
  42. package/dist/components/atoms/Prose/Prose.d.ts.map +1 -0
  43. package/dist/components/atoms/Prose/Prose.js +15 -0
  44. package/dist/components/atoms/Prose/proseStyles.d.ts +17 -0
  45. package/dist/components/atoms/Prose/proseStyles.d.ts.map +1 -0
  46. package/dist/components/atoms/Prose/proseStyles.js +16 -0
  47. package/dist/components/atoms/SectionCaption/SectionCaption.d.ts +26 -0
  48. package/dist/components/atoms/SectionCaption/SectionCaption.d.ts.map +1 -0
  49. package/dist/components/atoms/SectionCaption/SectionCaption.js +25 -0
  50. package/dist/components/atoms/SectionCaption/sectionCaptionStyles.d.ts +11 -0
  51. package/dist/components/atoms/SectionCaption/sectionCaptionStyles.d.ts.map +1 -0
  52. package/dist/components/atoms/SectionCaption/sectionCaptionStyles.js +12 -0
  53. package/dist/components/atoms/TextLink/TextLink.d.ts +10 -2
  54. package/dist/components/atoms/TextLink/TextLink.d.ts.map +1 -1
  55. package/dist/components/atoms/TextLink/TextLink.js +15 -15
  56. package/dist/components/atoms/TextLink/textLinkStyles.d.ts +13 -0
  57. package/dist/components/atoms/TextLink/textLinkStyles.d.ts.map +1 -1
  58. package/dist/components/atoms/TextLink/textLinkStyles.js +7 -3
  59. package/dist/components/molecules/Accordion/Accordion.d.ts +6 -1
  60. package/dist/components/molecules/Accordion/Accordion.d.ts.map +1 -1
  61. package/dist/components/molecules/Accordion/Accordion.js +57 -50
  62. package/dist/components/molecules/Accordion/accordionStyles.d.ts +9 -0
  63. package/dist/components/molecules/Accordion/accordionStyles.d.ts.map +1 -1
  64. package/dist/components/molecules/Accordion/accordionStyles.js +2 -2
  65. package/dist/components/molecules/CheckboxGroup/CheckboxGroupItem.d.ts +5 -1
  66. package/dist/components/molecules/CheckboxGroup/CheckboxGroupItem.d.ts.map +1 -1
  67. package/dist/components/molecules/CheckboxGroup/CheckboxGroupItem.js +12 -10
  68. package/dist/components/molecules/DescriptionList/DescriptionList.d.ts +37 -0
  69. package/dist/components/molecules/DescriptionList/DescriptionList.d.ts.map +1 -0
  70. package/dist/components/molecules/DescriptionList/DescriptionList.js +50 -0
  71. package/dist/components/molecules/DescriptionList/descriptionListStyles.d.ts +21 -0
  72. package/dist/components/molecules/DescriptionList/descriptionListStyles.d.ts.map +1 -0
  73. package/dist/components/molecules/DescriptionList/descriptionListStyles.js +27 -0
  74. package/dist/components/molecules/IndexList/IndexList.d.ts +58 -0
  75. package/dist/components/molecules/IndexList/IndexList.d.ts.map +1 -0
  76. package/dist/components/molecules/IndexList/IndexList.js +96 -0
  77. package/dist/components/molecules/IndexList/indexListStyles.d.ts +29 -0
  78. package/dist/components/molecules/IndexList/indexListStyles.d.ts.map +1 -0
  79. package/dist/components/molecules/IndexList/indexListStyles.js +24 -0
  80. package/dist/components/molecules/PromptBar/PromptBar.d.ts +11 -1
  81. package/dist/components/molecules/PromptBar/PromptBar.d.ts.map +1 -1
  82. package/dist/components/molecules/PromptBar/PromptBar.js +54 -43
  83. package/dist/components/molecules/PromptBar/promptBarStyles.d.ts +16 -0
  84. package/dist/components/molecules/PromptBar/promptBarStyles.d.ts.map +1 -1
  85. package/dist/components/molecules/PromptBar/promptBarStyles.js +5 -2
  86. package/dist/components/organisms/ChatDock/ChatDock.d.ts +203 -0
  87. package/dist/components/organisms/ChatDock/ChatDock.d.ts.map +1 -0
  88. package/dist/components/organisms/ChatDock/ChatDock.js +697 -0
  89. package/dist/components/organisms/ChatDock/ChatDockGate.d.ts +52 -0
  90. package/dist/components/organisms/ChatDock/ChatDockGate.d.ts.map +1 -0
  91. package/dist/components/organisms/ChatDock/ChatDockGate.js +161 -0
  92. package/dist/components/organisms/ChatDock/chatDockGateStyles.d.ts +16 -0
  93. package/dist/components/organisms/ChatDock/chatDockGateStyles.d.ts.map +1 -0
  94. package/dist/components/organisms/ChatDock/chatDockGateStyles.js +8 -0
  95. package/dist/components/organisms/ChatDock/chatDockStyles.d.ts +98 -0
  96. package/dist/components/organisms/ChatDock/chatDockStyles.d.ts.map +1 -0
  97. package/dist/components/organisms/ChatDock/chatDockStyles.js +21 -0
  98. package/dist/components/organisms/ChatDock/chatDockViewport.d.ts +21 -0
  99. package/dist/components/organisms/ChatDock/chatDockViewport.d.ts.map +1 -0
  100. package/dist/components/organisms/ChatDock/chatDockViewport.js +46 -0
  101. package/dist/components/organisms/Dialog/AlertDialog.js +11 -11
  102. package/dist/components/organisms/Dialog/Dialog.js +44 -44
  103. package/dist/components/organisms/Sheet/Sheet.js +38 -38
  104. package/dist/components/organisms/Toast/Toast.js +5 -5
  105. package/dist/index.d.ts +7 -2
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +122 -110
  108. package/dist/lib/compositionAudit.d.ts.map +1 -1
  109. package/dist/lib/typography.d.ts +2 -2
  110. package/dist/lib/typography.d.ts.map +1 -1
  111. package/dist/lib/typography.js +27 -1
  112. package/dist/styles.css +1 -1
  113. package/dist/theme.css +1 -0
  114. package/dist/typography.css +34 -0
  115. package/docs/README.md +1 -1
  116. package/docs/component-contracts.md +16 -1
  117. package/docs/components.md +16 -11
  118. package/docs/exports.json +81 -4
  119. package/docs/patterns/components-accordion--flush.tsx +29 -0
  120. package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
  121. package/docs/patterns/components-badge--outline-tags.tsx +25 -0
  122. package/docs/patterns/components-badge--with-avatar.tsx +1 -1
  123. package/docs/patterns/components-button-button--copy-button.tsx +39 -0
  124. package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
  125. package/docs/patterns/components-button-button--external-link.tsx +30 -0
  126. package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
  127. package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
  128. package/docs/patterns/components-button-button--link-render.tsx +1 -1
  129. package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
  130. package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
  131. package/docs/patterns/components-button-button--primary-action.tsx +1 -1
  132. package/docs/patterns/components-button-button--row-hug.tsx +1 -1
  133. package/docs/patterns/components-button-button--row-layout.tsx +1 -1
  134. package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
  135. package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
  136. package/docs/patterns/components-button-button--with-count.tsx +1 -1
  137. package/docs/patterns/components-button-button--with-icon.tsx +1 -1
  138. package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
  139. package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
  140. package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
  141. package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
  142. package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
  143. package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
  144. package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
  145. package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
  146. package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
  147. package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
  148. package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
  149. package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
  150. package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
  151. package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
  152. package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +158 -0
  153. package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +180 -0
  154. package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
  155. package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
  156. package/docs/patterns/components-checkbox-checkbox--with-count.tsx +19 -0
  157. package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
  158. package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
  159. package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +17 -0
  160. package/docs/patterns/components-descriptionlist--details.tsx +21 -0
  161. package/docs/patterns/components-descriptionlist--post-metadata.tsx +52 -0
  162. package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
  163. package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
  164. package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
  165. package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
  166. package/docs/patterns/components-field--horizontal-input.tsx +1 -1
  167. package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
  168. package/docs/patterns/components-field--multi-control.tsx +1 -1
  169. package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
  170. package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
  171. package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
  172. package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
  173. package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
  174. package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
  175. package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
  176. package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
  177. package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
  178. package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
  179. package/docs/patterns/components-indexlist--post-index.tsx +36 -0
  180. package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
  181. package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
  182. package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
  183. package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
  184. package/docs/patterns/components-kbd--command-row.tsx +1 -1
  185. package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
  186. package/docs/patterns/components-kbd--shortcut.tsx +1 -1
  187. package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
  188. package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
  189. package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
  190. package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
  191. package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
  192. package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
  193. package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
  194. package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
  195. package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
  196. package/docs/patterns/components-prose--article-body.tsx +11 -0
  197. package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
  198. package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
  199. package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
  200. package/docs/patterns/components-sectioncaption--column-caption.tsx +16 -0
  201. package/docs/patterns/components-sectioncaption--with-action.tsx +19 -0
  202. package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
  203. package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
  204. package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
  205. package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
  206. package/docs/patterns/components-sitenav--compact.tsx +1 -1
  207. package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
  208. package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
  209. package/docs/patterns/components-stat--insights-row.tsx +1 -1
  210. package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
  211. package/docs/patterns/components-switch--default.tsx +1 -1
  212. package/docs/patterns/components-switch--settings-row.tsx +1 -1
  213. package/docs/patterns/components-tab--settings-pages.tsx +1 -1
  214. package/docs/patterns/components-taskrows--action-details.tsx +1 -1
  215. package/docs/patterns/components-taskrows--capsules.tsx +1 -1
  216. package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
  217. package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
  218. package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
  219. package/docs/patterns/components-taskrows--status-list.tsx +1 -1
  220. package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
  221. package/docs/patterns/components-textlink--external-destination.tsx +1 -1
  222. package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
  223. package/docs/patterns/components-textlink--quiet-title.tsx +15 -0
  224. package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
  225. package/docs/patterns/components-textsequence--default.tsx +1 -1
  226. package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
  227. package/docs/patterns/components-textsequence--shapes.tsx +1 -1
  228. package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
  229. package/docs/patterns/components-tooltip--controlled.tsx +1 -1
  230. package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
  231. package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
  232. package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
  233. package/docs/patterns/components-tooltip--placement.tsx +1 -1
  234. package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
  235. package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
  236. package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
  237. package/docs/patterns/guides-filter-panel--filtered-index.tsx +174 -0
  238. package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
  239. package/docs/patterns/guides-post-page--post-page.tsx +143 -0
  240. package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
  241. package/docs/patterns/index.json +137 -9
  242. package/package.json +1 -1
  243. package/docs/patterns/components-promptbar--pattern-marketing-composer.tsx +0 -37
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { cn as e } from "../../../lib/cn.js";
3
+ import { descriptionListLayouts as t, descriptionListNameClasses as n, descriptionListRootClasses as r, descriptionListRowLayoutClasses as i, descriptionListRuleClasses as a, descriptionListRules as o, descriptionListValueClasses as s, descriptionListValueFlowClasses as c, descriptionListVariants as l } from "./descriptionListStyles.js";
4
+ import { createContext as u, useContext as d, useMemo as f } from "react";
5
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
6
+ //#region src/components/molecules/DescriptionList/DescriptionList.tsx
7
+ var h = u({
8
+ layout: "inline",
9
+ rule: "solid",
10
+ variant: "sans"
11
+ });
12
+ function g({ layout: t = "inline", rule: n = "solid", variant: i = "sans", children: a, "aria-label": o, "aria-labelledby": s, className: c }) {
13
+ let l = f(() => ({
14
+ layout: t,
15
+ rule: n,
16
+ variant: i
17
+ }), [
18
+ t,
19
+ n,
20
+ i
21
+ ]);
22
+ return /* @__PURE__ */ p(h.Provider, {
23
+ value: l,
24
+ children: /* @__PURE__ */ p("dl", {
25
+ className: e(r, c),
26
+ "aria-label": o,
27
+ "aria-labelledby": s,
28
+ "data-rule": n,
29
+ "data-variant": i,
30
+ children: a
31
+ })
32
+ });
33
+ }
34
+ function _({ name: t, children: r, layout: o, className: l }) {
35
+ let u = d(h), f = o ?? u.layout;
36
+ return /* @__PURE__ */ m("div", {
37
+ className: e(i[f], a[u.rule], l),
38
+ "data-layout": f,
39
+ children: [/* @__PURE__ */ p("dt", {
40
+ className: n[u.variant],
41
+ children: t
42
+ }), /* @__PURE__ */ p("dd", {
43
+ className: e(s[u.variant], c[f]),
44
+ children: r
45
+ })]
46
+ });
47
+ }
48
+ var v = Object.assign(g, { Item: _ });
49
+ //#endregion
50
+ export { v as DescriptionList, t as descriptionListLayouts, o as descriptionListRules, l as descriptionListVariants };
@@ -0,0 +1,21 @@
1
+ export declare const descriptionListLayouts: readonly ["inline", "stacked"];
2
+ /** `inline` — the value beside the name. `stacked` — the value under the name (tags, actions). */
3
+ export type DescriptionListLayout = (typeof descriptionListLayouts)[number];
4
+ export declare const descriptionListRules: readonly ["solid", "dotted", "none"];
5
+ /** The hairline between rows — `solid` (default) or the quieter `dotted`; `none` for no rule. */
6
+ export type DescriptionListRule = (typeof descriptionListRules)[number];
7
+ export declare const descriptionListVariants: readonly ["sans", "mono"];
8
+ /**
9
+ * `sans` (default) — the name in caption type, the value in body type. `mono` — editorial metadata:
10
+ * the name as an eyebrow and the value in mono caps with tabular figures.
11
+ */
12
+ export type DescriptionListVariant = (typeof descriptionListVariants)[number];
13
+ export declare const descriptionListRootClasses = "m-0 flex w-full min-w-0 flex-col";
14
+ /** The rule under each row; the last row keeps it, closing the list. */
15
+ export declare const descriptionListRuleClasses: Record<DescriptionListRule, string>;
16
+ export declare const descriptionListRowLayoutClasses: Record<DescriptionListLayout, string>;
17
+ export declare const descriptionListNameClasses: Record<DescriptionListVariant, string>;
18
+ export declare const descriptionListValueClasses: Record<DescriptionListVariant, string>;
19
+ /** Several values — tags, actions — wrap in a row with a gap. */
20
+ export declare const descriptionListValueFlowClasses: Record<DescriptionListLayout, string>;
21
+ //# sourceMappingURL=descriptionListStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptionListStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/DescriptionList/descriptionListStyles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,gCAAiC,CAAC;AAErE,kGAAkG;AAClG,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,oBAAoB,sCAAuC,CAAC;AAEzE,iGAAiG;AACjG,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB,2BAA4B,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAE7E,wEAAwE;AACxE,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAI1E,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAGjF,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAG7E,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAG9E,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAGjF,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { cn as e } from "../../../lib/cn.js";
3
+ import { typographyClass as t } from "../../../lib/typography.js";
4
+ //#region src/components/molecules/DescriptionList/descriptionListStyles.ts
5
+ var n = ["inline", "stacked"], r = [
6
+ "solid",
7
+ "dotted",
8
+ "none"
9
+ ], i = ["sans", "mono"], a = "m-0 flex w-full min-w-0 flex-col", o = {
10
+ solid: "border-b border-border",
11
+ dotted: "border-b border-dotted border-border-emphasized",
12
+ none: ""
13
+ }, s = {
14
+ inline: "grid grid-cols-[minmax(0,2fr)_minmax(0,3fr)] items-baseline gap-x-4 py-3",
15
+ stacked: "flex flex-col gap-2.5 py-3"
16
+ }, c = {
17
+ sans: e("m-0", t("caption")),
18
+ mono: e("m-0", t("eyebrow"))
19
+ }, l = {
20
+ sans: e("m-0 min-w-0", t("body")),
21
+ mono: "m-0 min-w-0 type-eyebrow tabular-nums text-fg"
22
+ }, u = {
23
+ inline: "flex flex-wrap items-baseline gap-x-2 gap-y-1.5",
24
+ stacked: "flex flex-wrap items-center gap-2"
25
+ };
26
+ //#endregion
27
+ export { n as descriptionListLayouts, c as descriptionListNameClasses, a as descriptionListRootClasses, s as descriptionListRowLayoutClasses, o as descriptionListRuleClasses, r as descriptionListRules, l as descriptionListValueClasses, u as descriptionListValueFlowClasses, i as descriptionListVariants };
@@ -0,0 +1,58 @@
1
+ import { type ReactNode } from "react";
2
+ import { type IndexListSize, type IndexListTitleElement } from "./indexListStyles";
3
+ export { indexListSizes, indexListTitleElements, type IndexListSize, type IndexListTitleElement, } from "./indexListStyles";
4
+ /** Layout-only — width, margin, or grid placement. */
5
+ export type IndexListLayoutClassName = string;
6
+ export interface IndexListCaptions {
7
+ /** Over the meta column, in sentence case — for example "Date". The "/" marker comes with it. */
8
+ meta: ReactNode;
9
+ /** Over the titles, for example "Name". */
10
+ title: ReactNode;
11
+ }
12
+ export interface IndexListProps {
13
+ /**
14
+ * Column captions over the rows, on the rows' own tracks. Hidden where the list is narrower than
15
+ * 32rem (phones, narrow columns) and each row is one column. Visual only — the rows carry their
16
+ * own meaning.
17
+ */
18
+ captions?: IndexListCaptions;
19
+ /** Title scale: `lg` type-display-3 (default), `md` type-heading-1, `sm` type-heading-3. */
20
+ size?: IndexListSize;
21
+ /** The heading element around each title. Default: `h2`. */
22
+ titleAs?: IndexListTitleElement;
23
+ /** Shown in place of the rows when there are none — for example "No posts match these filters." */
24
+ empty?: ReactNode;
25
+ /** Names the list for screen readers, for example "Posts". */
26
+ "aria-label"?: string;
27
+ "aria-labelledby"?: string;
28
+ /** **IndexList.Item** rows. */
29
+ children?: ReactNode;
30
+ className?: IndexListLayoutClassName;
31
+ }
32
+ export interface IndexListItemProps {
33
+ /** The row's title — a link to `href`. */
34
+ title: string;
35
+ href: string;
36
+ /** The meta column, for example a `<time>`. Above the title where the list is one column. */
37
+ meta?: ReactNode;
38
+ /** A short preview. When set, a control at the row's end expands it under the title. */
39
+ preview?: ReactNode;
40
+ /** Uncontrolled preview state. */
41
+ defaultOpen?: boolean;
42
+ /** Controlled preview state. */
43
+ open?: boolean;
44
+ onOpenChange?: (open: boolean) => void;
45
+ /** Names the preview control. Default: "Preview: {title}". */
46
+ previewLabel?: string;
47
+ className?: IndexListLayoutClassName;
48
+ }
49
+ /**
50
+ * Editorial index — a ruled list where each row has a meta column, a large linked title, and an
51
+ * optional preview that expands under the title. Optional column captions share the rows' tracks.
52
+ */
53
+ declare function IndexListRoot({ captions, size, titleAs, empty, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children, className, }: IndexListProps): import("react").JSX.Element;
54
+ declare function IndexListItem({ title, href, meta, preview, defaultOpen, open: openProp, onOpenChange, previewLabel, className, }: IndexListItemProps): import("react").JSX.Element;
55
+ export declare const IndexList: typeof IndexListRoot & {
56
+ Item: typeof IndexListItem;
57
+ };
58
+ //# sourceMappingURL=IndexList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexList.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/IndexList/IndexList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,EAiBL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,sDAAsD;AACtD,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,IAAI,EAAE,SAAS,CAAC;IAChB,2CAA2C;IAC3C,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,4FAA4F;IAC5F,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,mGAAmG;IACnG,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kCAAkC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AASD;;;GAGG;AACH,iBAAS,aAAa,CAAC,EACrB,QAAQ,EACR,IAAW,EACX,OAAc,EACd,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,QAAQ,EACR,SAAS,GACV,EAAE,cAAc,+BA8BhB;AAED,iBAAS,aAAa,CAAC,EACrB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,WAAmB,EACnB,IAAI,EAAE,QAAQ,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE,kBAAkB,+BA6CpB;AAED,eAAO,MAAM,SAAS;;CAEpB,CAAC"}
@@ -0,0 +1,96 @@
1
+ "use client";
2
+ import { cn as e } from "../../../lib/cn.js";
3
+ import { IconButton as t } from "../../atoms/IconButton/IconButton.js";
4
+ import { TextLink as n } from "../../atoms/TextLink/TextLink.js";
5
+ import { indexListCaptionsClasses as r, indexListChevronClasses as i, indexListEmptyClasses as a, indexListItemClasses as o, indexListListClasses as s, indexListMetaClasses as c, indexListPanelClasses as l, indexListPanelContentClasses as u, indexListPanelInnerClasses as d, indexListRootClasses as f, indexListSizes as p, indexListTitleCellClasses as m, indexListTitleClasses as h, indexListTitleElements as g, indexListTitleSizeClasses as _, indexListToggleAlignClasses as v } from "./indexListStyles.js";
6
+ import { Children as y, createContext as b, useContext as x, useId as S, useMemo as C, useState as w } from "react";
7
+ import { ChevronDown as T } from "lucide-react";
8
+ import { jsx as E, jsxs as D } from "react/jsx-runtime";
9
+ //#region src/components/molecules/IndexList/IndexList.tsx
10
+ var O = b({
11
+ size: "lg",
12
+ titleAs: "h2"
13
+ });
14
+ function k({ captions: t, size: n = "lg", titleAs: i = "h2", empty: o, "aria-label": c, "aria-labelledby": l, children: u, className: d }) {
15
+ let p = y.toArray(u).length > 0, m = C(() => ({
16
+ size: n,
17
+ titleAs: i
18
+ }), [n, i]);
19
+ return /* @__PURE__ */ E(O.Provider, {
20
+ value: m,
21
+ children: /* @__PURE__ */ D("div", {
22
+ className: e(f, d),
23
+ "data-size": n,
24
+ children: [p && t != null ? /* @__PURE__ */ D("div", {
25
+ className: r,
26
+ "aria-hidden": "true",
27
+ "data-index-list-captions": "",
28
+ children: [/* @__PURE__ */ D("span", { children: ["/ ", t.meta] }), /* @__PURE__ */ D("span", {
29
+ className: "@lg:col-start-2",
30
+ children: ["/ ", t.title]
31
+ })]
32
+ }) : null, p ? /* @__PURE__ */ E("ul", {
33
+ role: "list",
34
+ "aria-label": c,
35
+ "aria-labelledby": l,
36
+ className: e(s, t != null && "@lg:border-t-0"),
37
+ children: u
38
+ }) : o == null ? null : /* @__PURE__ */ E("div", {
39
+ className: a,
40
+ "data-index-list-empty": "",
41
+ children: o
42
+ })]
43
+ })
44
+ });
45
+ }
46
+ function A({ title: r, href: a, meta: s, preview: f, defaultOpen: p = !1, open: g, onOpenChange: y, previewLabel: b, className: C }) {
47
+ let { size: k, titleAs: A } = x(O), j = S(), [M, N] = w(p), P = g !== void 0, F = P ? g : M, I = f != null;
48
+ function L() {
49
+ let e = !F;
50
+ P || N(e), y?.(e);
51
+ }
52
+ return /* @__PURE__ */ D("li", {
53
+ className: e(o, C),
54
+ children: [
55
+ s == null ? null : /* @__PURE__ */ E("div", {
56
+ className: c,
57
+ children: s
58
+ }),
59
+ /* @__PURE__ */ D("div", {
60
+ className: m,
61
+ children: [/* @__PURE__ */ E(A, {
62
+ className: e(h, _[k]),
63
+ children: /* @__PURE__ */ E(n, {
64
+ variant: "quiet",
65
+ href: a,
66
+ children: r
67
+ })
68
+ }), I ? /* @__PURE__ */ E(t, {
69
+ size: "md",
70
+ className: v[k],
71
+ icon: /* @__PURE__ */ E(T, { className: e(i, F && "rotate-180") }),
72
+ "aria-label": b ?? `Preview: ${r}`,
73
+ title: "",
74
+ "aria-expanded": F,
75
+ "aria-controls": j,
76
+ onClick: L
77
+ }) : null]
78
+ }),
79
+ I ? /* @__PURE__ */ E("div", {
80
+ className: e("motion-collapse", l),
81
+ "data-visible": F ? "true" : "false",
82
+ children: /* @__PURE__ */ E("div", {
83
+ id: j,
84
+ className: d,
85
+ children: /* @__PURE__ */ E("div", {
86
+ className: u,
87
+ children: f
88
+ })
89
+ })
90
+ }) : null
91
+ ]
92
+ });
93
+ }
94
+ var j = Object.assign(k, { Item: A });
95
+ //#endregion
96
+ export { j as IndexList, p as indexListSizes, g as indexListTitleElements };
@@ -0,0 +1,29 @@
1
+ export declare const indexListSizes: readonly ["lg", "md", "sm"];
2
+ /** Title scale — `lg` type-display-3, `md` type-heading-1, `sm` type-heading-3. */
3
+ export type IndexListSize = (typeof indexListSizes)[number];
4
+ export declare const indexListTitleElements: readonly ["h2", "h3", "h4"];
5
+ export type IndexListTitleElement = (typeof indexListTitleElements)[number];
6
+ export declare const indexListRootClasses = "@container flex w-full min-w-0 flex-col";
7
+ /** Column captions — hidden below 32rem, where the rows are one column. */
8
+ export declare const indexListCaptionsClasses: string;
9
+ export declare const indexListListClasses = "m-0 list-none p-0 border-t border-border";
10
+ /** With captions, their rule is the list's top rule — until they hide in one column. */
11
+ export declare const indexListListCaptionedClasses = "@lg:border-t-0";
12
+ /** One row: meta over the title in one column; meta beside it on two tracks, on the title's first baseline. */
13
+ export declare const indexListItemClasses: string;
14
+ export declare const indexListMetaClasses: string;
15
+ /** Title cell — the linked title, then the preview control at the row's end. */
16
+ export declare const indexListTitleCellClasses = "flex min-w-0 items-start gap-3 @lg:col-start-2";
17
+ export declare const indexListTitleSizeClasses: Record<IndexListSize, string>;
18
+ export declare const indexListTitleClasses = "min-w-0 flex-1 text-pretty text-fg";
19
+ /** Centers the 44px preview control on the title's first line, at each size. */
20
+ export declare const indexListToggleAlignClasses: Record<IndexListSize, string>;
21
+ export declare const indexListChevronClasses: string;
22
+ export declare const indexListChevronOpenClasses = "rotate-180";
23
+ /** The preview panel sits under the title, in the title column. */
24
+ export declare const indexListPanelClasses = "@lg:col-start-2";
25
+ export declare const indexListPanelInnerClasses = "overflow-hidden";
26
+ export declare const indexListPanelContentClasses: string;
27
+ /** Empty state — between the same rules as the rows. */
28
+ export declare const indexListEmptyClasses = "border-y border-border py-8";
29
+ //# sourceMappingURL=indexListStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexListStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/IndexList/indexListStyles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,6BAA8B,CAAC;AAE1D,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,eAAO,MAAM,sBAAsB,6BAA8B,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAU5E,eAAO,MAAM,oBAAoB,4CAA4C,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,QAIpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,6CAA6C,CAAC;AAE/E,wFAAwF;AACxF,eAAO,MAAM,6BAA6B,mBAAmB,CAAC;AAE9D,+GAA+G;AAC/G,eAAO,MAAM,oBAAoB,QAGhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAA+D,CAAC;AAEjG,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,mDAAmD,CAAC;AAE1F,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAInE,CAAC;AAEF,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAIrE,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAyD,CAAC;AAE9F,eAAO,MAAM,2BAA2B,eAAe,CAAC;AAExD,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAE5D,eAAO,MAAM,4BAA4B,QAA4D,CAAC;AAEtG,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,gCAAgC,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { cn as e } from "../../../lib/cn.js";
3
+ import { typographyClass as t } from "../../../lib/typography.js";
4
+ import { motionTransition as n } from "../../../lib/motion.js";
5
+ //#region src/components/molecules/IndexList/indexListStyles.ts
6
+ var r = [
7
+ "lg",
8
+ "md",
9
+ "sm"
10
+ ], i = [
11
+ "h2",
12
+ "h3",
13
+ "h4"
14
+ ], a = "@lg:grid @lg:grid-cols-[7.5rem_minmax(0,1fr)] @lg:gap-x-[var(--grid-column-gap,1.5rem)]", o = "@container flex w-full min-w-0 flex-col", s = e("@max-lg:hidden border-b border-border-emphasized pb-3 text-muted", a, t("eyebrow")), c = "m-0 list-none p-0 border-t border-border", l = "@lg:border-t-0", u = e("flex flex-col border-b border-border py-4 @lg:items-baseline", a), d = e(t("caption"), "mb-1 tabular-nums @lg:mb-0"), f = "flex min-w-0 items-start gap-3 @lg:col-start-2", p = {
15
+ lg: "type-display-3",
16
+ md: "type-heading-1",
17
+ sm: "type-heading-3"
18
+ }, m = "min-w-0 flex-1 text-pretty text-fg", h = {
19
+ lg: "mt-[calc((var(--text-display-3-size)*var(--text-display-3-leading)-2.75rem)/2)]",
20
+ md: "mt-[calc((var(--text-heading-1-size)*var(--text-heading-1-leading)-2.75rem)/2)]",
21
+ sm: "mt-[calc((var(--text-heading-3-size)*var(--text-heading-3-leading)-2.75rem)/2)]"
22
+ }, g = e("transition-transform", n("medium")), _ = "rotate-180", v = "@lg:col-start-2", y = "overflow-hidden", b = e(t("body"), "text-muted pt-2 pb-1 pr-14"), x = "border-y border-border py-8";
23
+ //#endregion
24
+ export { s as indexListCaptionsClasses, g as indexListChevronClasses, _ as indexListChevronOpenClasses, x as indexListEmptyClasses, u as indexListItemClasses, l as indexListListCaptionedClasses, c as indexListListClasses, d as indexListMetaClasses, v as indexListPanelClasses, b as indexListPanelContentClasses, y as indexListPanelInnerClasses, o as indexListRootClasses, r as indexListSizes, f as indexListTitleCellClasses, m as indexListTitleClasses, i as indexListTitleElements, p as indexListTitleSizeClasses, h as indexListToggleAlignClasses };
@@ -1,4 +1,4 @@
1
- import { type TextareaHTMLAttributes } from "react";
1
+ import { type ReactNode, type TextareaHTMLAttributes } from "react";
2
2
  /** Layout-only — width, margin, flex placement. Not for colors. */
3
3
  export type PromptBarLayoutClassName = string;
4
4
  export declare const promptBarPlaceholder = "Ask anything\u2026";
@@ -21,6 +21,16 @@ export interface PromptBarProps extends Omit<TextareaHTMLAttributes<HTMLTextArea
21
21
  /** Accessible name for the send control. Default: "Send". */
22
22
  sendLabel?: string;
23
23
  disabled?: boolean;
24
+ /**
25
+ * Leading slot inside the pill — a brand mark or **Avatar** `sm` (2.25rem). Decorative or
26
+ * labeled by the caller; not a control.
27
+ */
28
+ start?: ReactNode;
29
+ /**
30
+ * Extra inset controls before send — for example a mic **IconButton** `sm` `role="secondary"`.
31
+ * The caller owns the handler and accessible name.
32
+ */
33
+ end?: ReactNode;
24
34
  className?: PromptBarLayoutClassName;
25
35
  }
26
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PromptBar.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PromptBar/PromptBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,OAAO,CAAC;AAaf,mEAAmE;AACnE,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE9C,eAAO,MAAM,oBAAoB,uBAAkB,CAAC;AAEpD,MAAM,WAAW,cACf,SAAQ,IAAI,CACV,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CACnG;IACD,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAMD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,gHA2EpB,CAAC"}
1
+ {"version":3,"file":"PromptBar.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PromptBar/PromptBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC5B,MAAM,OAAO,CAAC;AAgBf,mEAAmE;AACnE,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE9C,eAAO,MAAM,oBAAoB,uBAAkB,CAAC;AAEpD,MAAM,WAAW,cACf,SAAQ,IAAI,CACV,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CACnG;IACD,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAMD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,gHAqFpB,CAAC"}
@@ -2,55 +2,66 @@
2
2
  import { cn as e } from "../../../lib/cn.js";
3
3
  import { IconButton as t } from "../../atoms/IconButton/IconButton.js";
4
4
  import { TextArea as n } from "../../atoms/TextArea/TextArea.js";
5
- import { promptBarFieldClasses as r, promptBarSendClasses as i, promptBarSendMutedClasses as a, promptBarSendReadyClasses as o, promptBarShellClasses as s } from "./promptBarStyles.js";
6
- import { forwardRef as c, useState as l } from "react";
7
- import { ArrowRight as u } from "lucide-react";
8
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
5
+ import { promptBarEndSlotClasses as r, promptBarFieldClasses as i, promptBarSendClasses as a, promptBarSendMutedClasses as o, promptBarSendReadyClasses as s, promptBarShellClasses as c, promptBarShellStartPadClasses as l, promptBarStartSlotClasses as u } from "./promptBarStyles.js";
6
+ import { forwardRef as d, useState as f } from "react";
7
+ import { ArrowRight as p } from "lucide-react";
8
+ import { jsx as m, jsxs as h } from "react/jsx-runtime";
9
9
  //#region src/components/molecules/PromptBar/PromptBar.tsx
10
- var p = "Ask anything…";
11
- function m(e) {
10
+ var g = "Ask anything…";
11
+ function _(e) {
12
12
  return e.trim().length > 0;
13
13
  }
14
- var h = c(function({ value: c, defaultValue: h = "", onValueChange: g, onSend: _, placeholder: v = p, "aria-label": y = "Ask anything", sendLabel: b = "Send", disabled: x = !1, className: S, onKeyDown: C, ...w }, T) {
15
- let E = c !== void 0, [D, O] = l(h), k = E ? c : D, A = !x && m(k);
16
- function j(e) {
17
- E || O(e), g?.(e);
14
+ var v = d(function({ value: d, defaultValue: v = "", onValueChange: y, onSend: b, placeholder: x = g, "aria-label": S = "Ask anything", sendLabel: C = "Send", disabled: w = !1, start: T, end: E, className: D, onKeyDown: O, ...k }, A) {
15
+ let j = d !== void 0, [M, N] = f(v), P = j ? d : M, F = !w && _(P);
16
+ function I(e) {
17
+ j || N(e), y?.(e);
18
18
  }
19
- function M() {
20
- A && (_?.(k), E || O(""));
19
+ function L() {
20
+ F && (b?.(P), j || N(""));
21
21
  }
22
- function N(e) {
23
- C?.(e), !e.defaultPrevented && (e.key !== "Enter" || e.shiftKey || e.nativeEvent.isComposing || (e.preventDefault(), M()));
22
+ function R(e) {
23
+ O?.(e), !e.defaultPrevented && (e.key !== "Enter" || e.shiftKey || e.nativeEvent.isComposing || (e.preventDefault(), L()));
24
24
  }
25
- return /* @__PURE__ */ f("div", {
26
- className: e(s, S),
27
- children: [/* @__PURE__ */ d(n, {
28
- ...w,
29
- ref: T,
30
- inline: !0,
31
- rows: 1,
32
- resize: "none",
33
- value: k,
34
- placeholder: v,
35
- "aria-label": y,
36
- disabled: x,
37
- className: r,
38
- onChange: (e) => {
39
- j(e.target.value);
40
- },
41
- onKeyDown: N
42
- }), /* @__PURE__ */ d(t, {
43
- type: "button",
44
- role: "primary",
45
- size: "sm",
46
- icon: /* @__PURE__ */ d(u, { strokeWidth: 2 }),
47
- "aria-label": b,
48
- title: b,
49
- disabled: !A,
50
- className: e(i, A ? o : a),
51
- onClick: M
52
- })]
25
+ return /* @__PURE__ */ h("div", {
26
+ className: e(c, T == null ? l.field : l.slot, D),
27
+ children: [
28
+ T == null ? null : /* @__PURE__ */ m("div", {
29
+ className: u,
30
+ children: T
31
+ }),
32
+ /* @__PURE__ */ m(n, {
33
+ ...k,
34
+ ref: A,
35
+ inline: !0,
36
+ rows: 1,
37
+ resize: "none",
38
+ value: P,
39
+ placeholder: x,
40
+ "aria-label": S,
41
+ disabled: w,
42
+ className: i,
43
+ onChange: (e) => {
44
+ I(e.target.value);
45
+ },
46
+ onKeyDown: R
47
+ }),
48
+ E == null ? null : /* @__PURE__ */ m("div", {
49
+ className: r,
50
+ children: E
51
+ }),
52
+ /* @__PURE__ */ m(t, {
53
+ type: "button",
54
+ role: "primary",
55
+ size: "sm",
56
+ icon: /* @__PURE__ */ m(p, { strokeWidth: 2 }),
57
+ "aria-label": C,
58
+ title: C,
59
+ disabled: !F,
60
+ className: e(a, F ? s : o),
61
+ onClick: L
62
+ })
63
+ ]
53
64
  });
54
65
  });
55
66
  //#endregion
56
- export { h as PromptBar, p as promptBarPlaceholder };
67
+ export { v as PromptBar, g as promptBarPlaceholder };
@@ -5,6 +5,22 @@
5
5
  * The shell owns the single focus ring (inset, so it does not stack a second edge).
6
6
  */
7
7
  export declare const promptBarShellClasses: string;
8
+ /**
9
+ * Leading inset. The text starts 1.25rem in; with a `start` slot the slot takes the same
10
+ * 0.5rem inset as the send circle, and the field keeps 0.25rem more air than the shell gap.
11
+ */
12
+ export declare const promptBarShellStartPadClasses: {
13
+ readonly field: "pl-5";
14
+ readonly slot: "pl-2";
15
+ };
16
+ /**
17
+ * Leading slot — a brand mark or avatar at the send circle's size (2.25rem), pinned to the
18
+ * last line like the send control. Its width is the content's, so a caller can fold the mark
19
+ * away: at zero width the field starts 1.25rem in, the same as without a slot.
20
+ */
21
+ export declare const promptBarStartSlotClasses = "mr-1 flex h-9 shrink-0 items-center justify-center";
22
+ /** Trailing slot — extra inset controls (for example a mic **IconButton** `sm`) before send. */
23
+ export declare const promptBarEndSlotClasses = "flex shrink-0 items-end gap-2";
8
24
  /**
9
25
  * Empty is one line — min height matches the send circle, with padding that centers that line.
10
26
  * Grows with the text, stops at three lines (`max-h`), then scrolls.
@@ -1 +1 @@
1
- {"version":3,"file":"promptBarStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PromptBar/promptBarStyles.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAGN,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAEf,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,oBAAoB,kFACgD,CAAC;AAElF,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB,8DAA8D,CAAC;AAErG;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qDAAqD,CAAC"}
1
+ {"version":3,"file":"promptBarStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PromptBar/promptBarStyles.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAGN,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,6BAA6B;;;CAGhC,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,uDAAuD,CAAC;AAE9F,gGAAgG;AAChG,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAEf,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,oBAAoB,kFACgD,CAAC;AAElF,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB,8DAA8D,CAAC;AAErG;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qDAAqD,CAAC"}
@@ -1,6 +1,9 @@
1
1
  "use client";
2
2
  import { focusRingTransitionClasses as e } from "../../../lib/motion.js";
3
3
  //#region src/components/molecules/PromptBar/promptBarStyles.ts
4
- var t = "flex w-full items-end gap-2 rounded-[1.625rem] border border-border-control bg-surface p-2 pl-5 focus-within:outline-none focus-within:ring-2 focus-within:ring-inset focus-within:ring-focus-ring " + e, n = "min-h-9 min-w-0 flex-1 overflow-y-auto py-2 type-body [field-sizing:content] max-h-[4.75rem]", r = "focus-visible:!ring-0 focus-visible:!ring-offset-0 focus-visible:!shadow-none", i = "!bg-brand !text-on-brand hover:!bg-brand active:!bg-brand", a = "!bg-neutral !text-disabled disabled:!opacity-100";
4
+ var t = "flex w-full items-end gap-2 rounded-[1.625rem] border border-border-control bg-surface p-2 focus-within:outline-none focus-within:ring-2 focus-within:ring-inset focus-within:ring-focus-ring " + e, n = {
5
+ field: "pl-5",
6
+ slot: "pl-2"
7
+ }, r = "mr-1 flex h-9 shrink-0 items-center justify-center", i = "flex shrink-0 items-end gap-2", a = "min-h-9 min-w-0 flex-1 overflow-y-auto py-2 type-body [field-sizing:content] max-h-[4.75rem]", o = "focus-visible:!ring-0 focus-visible:!ring-offset-0 focus-visible:!shadow-none", s = "!bg-brand !text-on-brand hover:!bg-brand active:!bg-brand", c = "!bg-neutral !text-disabled disabled:!opacity-100";
5
8
  //#endregion
6
- export { n as promptBarFieldClasses, r as promptBarSendClasses, a as promptBarSendMutedClasses, i as promptBarSendReadyClasses, t as promptBarShellClasses };
9
+ export { i as promptBarEndSlotClasses, a as promptBarFieldClasses, o as promptBarSendClasses, c as promptBarSendMutedClasses, s as promptBarSendReadyClasses, t as promptBarShellClasses, n as promptBarShellStartPadClasses, r as promptBarStartSlotClasses };