@thewhatmatters/wmds 0.4.9 → 0.4.28

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 (406) hide show
  1. package/CHANGELOG.md +303 -0
  2. package/CONSUMING.md +62 -1
  3. package/README.md +1 -1
  4. package/bin/wmds-check.mjs +47 -0
  5. package/dist/colors.css +92 -0
  6. package/dist/components/atoms/Badge/Badge.d.ts +13 -5
  7. package/dist/components/atoms/Badge/Badge.d.ts.map +1 -1
  8. package/dist/components/atoms/Badge/Badge.js +56 -48
  9. package/dist/components/atoms/Badge/badgeStyles.d.ts +15 -0
  10. package/dist/components/atoms/Badge/badgeStyles.d.ts.map +1 -1
  11. package/dist/components/atoms/Badge/badgeStyles.js +42 -20
  12. package/dist/components/atoms/Band/Band.d.ts +27 -0
  13. package/dist/components/atoms/Band/Band.d.ts.map +1 -0
  14. package/dist/components/atoms/Band/Band.js +22 -0
  15. package/dist/components/atoms/Band/bandStyles.d.ts +20 -0
  16. package/dist/components/atoms/Band/bandStyles.d.ts.map +1 -0
  17. package/dist/components/atoms/Band/bandStyles.js +23 -0
  18. package/dist/components/atoms/Button/Button.d.ts +1 -1
  19. package/dist/components/atoms/Button/Button.d.ts.map +1 -1
  20. package/dist/components/atoms/Button/Button.js +67 -48
  21. package/dist/components/atoms/Button/ButtonStatusButton.d.ts.map +1 -1
  22. package/dist/components/atoms/Button/ButtonStatusButton.js +12 -5
  23. package/dist/components/atoms/Button/buttonStatusMotion.d.ts.map +1 -1
  24. package/dist/components/atoms/Button/buttonStatusMotion.js +6 -1
  25. package/dist/components/atoms/Button/buttonStyles.d.ts +2 -2
  26. package/dist/components/atoms/Button/buttonStyles.d.ts.map +1 -1
  27. package/dist/components/atoms/Button/buttonStyles.js +16 -14
  28. package/dist/components/atoms/Checkbox/Checkbox.d.ts.map +1 -1
  29. package/dist/components/atoms/Checkbox/Checkbox.js +69 -68
  30. package/dist/components/atoms/Checkbox/checkboxStyles.d.ts +1 -1
  31. package/dist/components/atoms/Checkbox/checkboxStyles.d.ts.map +1 -1
  32. package/dist/components/atoms/Checkbox/checkboxStyles.js +1 -1
  33. package/dist/components/atoms/IconButton/IconButton.d.ts.map +1 -1
  34. package/dist/components/atoms/IconButton/IconButton.js +13 -12
  35. package/dist/components/atoms/IconButton/iconButtonStyles.d.ts +2 -2
  36. package/dist/components/atoms/IconButton/iconButtonStyles.d.ts.map +1 -1
  37. package/dist/components/atoms/IconButton/iconButtonStyles.js +1 -1
  38. package/dist/components/atoms/InlinePill/InlinePill.d.ts +42 -0
  39. package/dist/components/atoms/InlinePill/InlinePill.d.ts.map +1 -0
  40. package/dist/components/atoms/InlinePill/InlinePill.js +48 -0
  41. package/dist/components/atoms/InlinePill/inlinePillStyles.d.ts +27 -0
  42. package/dist/components/atoms/InlinePill/inlinePillStyles.d.ts.map +1 -0
  43. package/dist/components/atoms/InlinePill/inlinePillStyles.js +19 -0
  44. package/dist/components/atoms/Input/Input.d.ts +9 -4
  45. package/dist/components/atoms/Input/Input.d.ts.map +1 -1
  46. package/dist/components/atoms/Input/Input.js +59 -59
  47. package/dist/components/atoms/Input/inputShellStyles.d.ts +10 -4
  48. package/dist/components/atoms/Input/inputShellStyles.d.ts.map +1 -1
  49. package/dist/components/atoms/Input/inputShellStyles.js +40 -40
  50. package/dist/components/atoms/RiveHand/RiveHand.d.ts.map +1 -1
  51. package/dist/components/atoms/RiveHand/RiveHand.js +83 -81
  52. package/dist/components/atoms/Skeleton/skeletonStyles.js +1 -1
  53. package/dist/components/atoms/Switch/Switch.d.ts.map +1 -1
  54. package/dist/components/atoms/Switch/Switch.js +45 -44
  55. package/dist/components/atoms/Switch/switchStyles.d.ts +1 -1
  56. package/dist/components/atoms/Switch/switchStyles.d.ts.map +1 -1
  57. package/dist/components/atoms/Switch/switchStyles.js +1 -1
  58. package/dist/components/atoms/Table/Table.d.ts +54 -0
  59. package/dist/components/atoms/Table/Table.d.ts.map +1 -0
  60. package/dist/components/atoms/Table/Table.js +66 -0
  61. package/dist/components/atoms/Table/tableStyles.d.ts +18 -0
  62. package/dist/components/atoms/Table/tableStyles.d.ts.map +1 -0
  63. package/dist/components/atoms/Table/tableStyles.js +14 -0
  64. package/dist/components/atoms/TextArea/TextArea.d.ts +6 -0
  65. package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -1
  66. package/dist/components/atoms/TextArea/TextArea.js +86 -78
  67. package/dist/components/atoms/TextArea/textareaShellStyles.d.ts +2 -2
  68. package/dist/components/atoms/TextArea/textareaShellStyles.d.ts.map +1 -1
  69. package/dist/components/atoms/TextArea/textareaShellStyles.js +5 -5
  70. package/dist/components/molecules/Accordion/accordionStyles.d.ts +1 -1
  71. package/dist/components/molecules/Accordion/accordionStyles.d.ts.map +1 -1
  72. package/dist/components/molecules/Accordion/accordionStyles.js +1 -1
  73. package/dist/components/molecules/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  74. package/dist/components/molecules/Breadcrumb/Breadcrumb.js +80 -122
  75. package/dist/components/molecules/Card/Card.d.ts +28 -6
  76. package/dist/components/molecules/Card/Card.d.ts.map +1 -1
  77. package/dist/components/molecules/Card/Card.js +83 -42
  78. package/dist/components/molecules/Card/cardStyles.d.ts +16 -1
  79. package/dist/components/molecules/Card/cardStyles.d.ts.map +1 -1
  80. package/dist/components/molecules/Card/cardStyles.js +19 -5
  81. package/dist/components/molecules/ChatQa/chatQaStyles.d.ts +1 -1
  82. package/dist/components/molecules/ChatQa/chatQaStyles.d.ts.map +1 -1
  83. package/dist/components/molecules/ChatQa/chatQaStyles.js +1 -1
  84. package/dist/components/molecules/Chip/chipStyles.js +9 -9
  85. package/dist/components/molecules/CopyField/CopyField.d.ts +41 -0
  86. package/dist/components/molecules/CopyField/CopyField.d.ts.map +1 -0
  87. package/dist/components/molecules/CopyField/CopyField.js +120 -0
  88. package/dist/components/molecules/CopyField/copyFieldStyles.d.ts +28 -0
  89. package/dist/components/molecules/CopyField/copyFieldStyles.d.ts.map +1 -0
  90. package/dist/components/molecules/CopyField/copyFieldStyles.js +7 -0
  91. package/dist/components/molecules/DisplayControls/DisplayControls.d.ts +16 -7
  92. package/dist/components/molecules/DisplayControls/DisplayControls.d.ts.map +1 -1
  93. package/dist/components/molecules/DisplayControls/DisplayControls.js +41 -39
  94. package/dist/components/molecules/DisplayControls/displayControlsState.d.ts +21 -0
  95. package/dist/components/molecules/DisplayControls/displayControlsState.d.ts.map +1 -1
  96. package/dist/components/molecules/DisplayControls/displayControlsState.js +46 -4
  97. package/dist/components/molecules/Dropdown/Dropdown.d.ts +1 -1
  98. package/dist/components/molecules/Dropdown/DropdownItem.d.ts +2 -2
  99. package/dist/components/molecules/Dropdown/DropdownItem.d.ts.map +1 -1
  100. package/dist/components/molecules/Dropdown/DropdownItem.js +30 -27
  101. package/dist/components/molecules/Dropdown/dropdownStyles.js +1 -1
  102. package/dist/components/molecules/Dropdown/resolveOverflow.d.ts +14 -0
  103. package/dist/components/molecules/Dropdown/resolveOverflow.d.ts.map +1 -0
  104. package/dist/components/{organisms/Tab/tabOverflow.js → molecules/Dropdown/resolveOverflow.js} +2 -2
  105. package/dist/components/molecules/Dropdown/useDropdownMenu.d.ts +70 -0
  106. package/dist/components/molecules/Dropdown/useDropdownMenu.d.ts.map +1 -0
  107. package/dist/components/molecules/Dropdown/useDropdownMenu.js +155 -0
  108. package/dist/components/molecules/Dropdown/useOverflowMenu.d.ts +71 -0
  109. package/dist/components/molecules/Dropdown/useOverflowMenu.d.ts.map +1 -0
  110. package/dist/components/molecules/Dropdown/useOverflowMenu.js +61 -0
  111. package/dist/components/molecules/Field/Field.d.ts.map +1 -1
  112. package/dist/components/molecules/Field/Field.js +11 -10
  113. package/dist/components/molecules/LogView/LogView.d.ts +31 -0
  114. package/dist/components/molecules/LogView/LogView.d.ts.map +1 -0
  115. package/dist/components/molecules/LogView/LogView.js +109 -0
  116. package/dist/components/molecules/LogView/logViewStyles.d.ts +11 -0
  117. package/dist/components/molecules/LogView/logViewStyles.d.ts.map +1 -0
  118. package/dist/components/molecules/LogView/logViewStyles.js +6 -0
  119. package/dist/components/molecules/NavList/NavList.d.ts +23 -4
  120. package/dist/components/molecules/NavList/NavList.d.ts.map +1 -1
  121. package/dist/components/molecules/NavList/NavList.js +65 -52
  122. package/dist/components/molecules/NavList/navListStyles.d.ts +2 -0
  123. package/dist/components/molecules/NavList/navListStyles.d.ts.map +1 -1
  124. package/dist/components/molecules/NavList/navListStyles.js +3 -3
  125. package/dist/components/molecules/PageHeader/PageHeader.js +3 -3
  126. package/dist/components/molecules/PillGroup/pillGroupStyles.js +1 -1
  127. package/dist/components/molecules/Search/searchStyles.js +1 -1
  128. package/dist/components/molecules/SegmentedControl/segmentedControlStyles.d.ts +1 -1
  129. package/dist/components/molecules/SegmentedControl/segmentedControlStyles.d.ts.map +1 -1
  130. package/dist/components/molecules/SegmentedControl/segmentedControlStyles.js +8 -8
  131. package/dist/components/molecules/Select/Select.d.ts +3 -1
  132. package/dist/components/molecules/Select/Select.d.ts.map +1 -1
  133. package/dist/components/molecules/Select/Select.js +75 -119
  134. package/dist/components/molecules/Select/selectStyles.js +3 -3
  135. package/dist/components/molecules/Stat/Stat.d.ts +31 -5
  136. package/dist/components/molecules/Stat/Stat.d.ts.map +1 -1
  137. package/dist/components/molecules/Stat/Stat.js +83 -49
  138. package/dist/components/molecules/Stat/statStyles.d.ts +24 -4
  139. package/dist/components/molecules/Stat/statStyles.d.ts.map +1 -1
  140. package/dist/components/molecules/Stat/statStyles.js +30 -13
  141. package/dist/components/molecules/TaskRows/TaskRows.d.ts +13 -3
  142. package/dist/components/molecules/TaskRows/TaskRows.d.ts.map +1 -1
  143. package/dist/components/molecules/TaskRows/TaskRows.js +81 -57
  144. package/dist/components/molecules/TaskRows/TaskRowsTable.d.ts +54 -0
  145. package/dist/components/molecules/TaskRows/TaskRowsTable.d.ts.map +1 -0
  146. package/dist/components/molecules/TaskRows/TaskRowsTable.js +200 -0
  147. package/dist/components/molecules/TaskRows/taskRowsStyles.d.ts +19 -1
  148. package/dist/components/molecules/TaskRows/taskRowsStyles.d.ts.map +1 -1
  149. package/dist/components/molecules/TaskRows/taskRowsStyles.js +7 -3
  150. package/dist/components/molecules/TextSequence/TextSequence.d.ts.map +1 -1
  151. package/dist/components/molecules/TextSequence/TextSequence.js +35 -35
  152. package/dist/components/organisms/AppShell/AppShell.d.ts +84 -0
  153. package/dist/components/organisms/AppShell/AppShell.d.ts.map +1 -0
  154. package/dist/components/organisms/AppShell/AppShell.js +231 -0
  155. package/dist/components/organisms/AppShell/appShellStyles.d.ts +20 -0
  156. package/dist/components/organisms/AppShell/appShellStyles.d.ts.map +1 -0
  157. package/dist/components/organisms/AppShell/appShellStyles.js +8 -0
  158. package/dist/components/organisms/Carousel/Carousel.d.ts +9 -1
  159. package/dist/components/organisms/Carousel/Carousel.d.ts.map +1 -1
  160. package/dist/components/organisms/Carousel/Carousel.js +220 -182
  161. package/dist/components/organisms/Carousel/carouselMath.d.ts +5 -0
  162. package/dist/components/organisms/Carousel/carouselMath.d.ts.map +1 -1
  163. package/dist/components/organisms/Carousel/carouselMath.js +9 -1
  164. package/dist/components/organisms/Carousel/carouselStyles.d.ts +2 -0
  165. package/dist/components/organisms/Carousel/carouselStyles.d.ts.map +1 -1
  166. package/dist/components/organisms/Carousel/carouselStyles.js +8 -7
  167. package/dist/components/organisms/Chart/Chart.d.ts +5 -1
  168. package/dist/components/organisms/Chart/Chart.d.ts.map +1 -1
  169. package/dist/components/organisms/Chart/Chart.js +126 -62
  170. package/dist/components/organisms/Chart/ChartLegend.d.ts +8 -1
  171. package/dist/components/organisms/Chart/ChartLegend.d.ts.map +1 -1
  172. package/dist/components/organisms/Chart/ChartLegend.js +43 -13
  173. package/dist/components/organisms/Chart/ChartSegmentedRing.d.ts +52 -0
  174. package/dist/components/organisms/Chart/ChartSegmentedRing.d.ts.map +1 -0
  175. package/dist/components/organisms/Chart/ChartSegmentedRing.js +95 -0
  176. package/dist/components/organisms/Chart/chartStyles.d.ts +32 -0
  177. package/dist/components/organisms/Chart/chartStyles.d.ts.map +1 -1
  178. package/dist/components/organisms/Chart/chartStyles.js +15 -3
  179. package/dist/components/organisms/ChatDock/ChatDock.d.ts.map +1 -1
  180. package/dist/components/organisms/ChatDock/ChatDock.js +29 -25
  181. package/dist/components/organisms/Dialog/AlertDialog.d.ts +7 -1
  182. package/dist/components/organisms/Dialog/AlertDialog.d.ts.map +1 -1
  183. package/dist/components/organisms/Dialog/AlertDialog.js +54 -50
  184. package/dist/components/organisms/Dialog/Dialog.d.ts.map +1 -1
  185. package/dist/components/organisms/Dialog/Dialog.js +52 -71
  186. package/dist/components/organisms/Dialog/OverlayPanelHeader.d.ts.map +1 -1
  187. package/dist/components/organisms/Dialog/OverlayPanelHeader.js +1 -0
  188. package/dist/components/organisms/Dialog/dialogStyles.d.ts +14 -1
  189. package/dist/components/organisms/Dialog/dialogStyles.d.ts.map +1 -1
  190. package/dist/components/organisms/Dialog/dialogStyles.js +3 -3
  191. package/dist/components/organisms/FilterPanel/FilterPanel.d.ts.map +1 -1
  192. package/dist/components/organisms/FilterPanel/FilterPanel.js +52 -42
  193. package/dist/components/organisms/IntakeModal/IntakeModal.d.ts +6 -1
  194. package/dist/components/organisms/IntakeModal/IntakeModal.d.ts.map +1 -1
  195. package/dist/components/organisms/IntakeModal/IntakeModal.js +54 -66
  196. package/dist/components/organisms/MoreMenu/MoreMenu.d.ts.map +1 -1
  197. package/dist/components/organisms/MoreMenu/MoreMenu.js +45 -101
  198. package/dist/components/organisms/Panel/Panel.d.ts.map +1 -1
  199. package/dist/components/organisms/Panel/Panel.js +44 -53
  200. package/dist/components/organisms/Sheet/Sheet.d.ts +3 -1
  201. package/dist/components/organisms/Sheet/Sheet.d.ts.map +1 -1
  202. package/dist/components/organisms/Sheet/Sheet.js +66 -81
  203. package/dist/components/organisms/Sheet/sheetStyles.d.ts +8 -2
  204. package/dist/components/organisms/Sheet/sheetStyles.d.ts.map +1 -1
  205. package/dist/components/organisms/Sheet/sheetStyles.js +16 -11
  206. package/dist/components/organisms/SiteNav/SiteNav.d.ts +0 -9
  207. package/dist/components/organisms/SiteNav/SiteNav.d.ts.map +1 -1
  208. package/dist/components/organisms/SiteNav/SiteNav.js +236 -286
  209. package/dist/components/organisms/SiteNav/siteNavStyles.js +1 -1
  210. package/dist/components/organisms/Tab/Tab.d.ts.map +1 -1
  211. package/dist/components/organisms/Tab/Tab.js +77 -127
  212. package/dist/components/organisms/Tab/tabStyles.d.ts +2 -1
  213. package/dist/components/organisms/Tab/tabStyles.d.ts.map +1 -1
  214. package/dist/components/organisms/Tab/tabStyles.js +7 -7
  215. package/dist/fonts.css +10 -0
  216. package/dist/grid.css +38 -0
  217. package/dist/index.d.ts +16 -8
  218. package/dist/index.d.ts.map +1 -1
  219. package/dist/index.js +152 -139
  220. package/dist/lib/chartTheme.d.ts +11 -0
  221. package/dist/lib/chartTheme.d.ts.map +1 -1
  222. package/dist/lib/compositionAudit.d.ts.map +1 -1
  223. package/dist/lib/contrast.d.ts +11 -0
  224. package/dist/lib/contrast.d.ts.map +1 -0
  225. package/dist/lib/dialogOverlay.d.ts +34 -1
  226. package/dist/lib/dialogOverlay.d.ts.map +1 -1
  227. package/dist/lib/dialogOverlay.js +100 -23
  228. package/dist/lib/sheetParam/index.d.ts +3 -0
  229. package/dist/lib/sheetParam/index.d.ts.map +1 -0
  230. package/dist/lib/sheetParam/sheetParam.d.ts +15 -0
  231. package/dist/lib/sheetParam/sheetParam.d.ts.map +1 -0
  232. package/dist/lib/sheetParam/sheetParam.js +26 -0
  233. package/dist/lib/sheetParam/useSheetParam.d.ts +25 -0
  234. package/dist/lib/sheetParam/useSheetParam.d.ts.map +1 -0
  235. package/dist/lib/sheetParam/useSheetParam.js +29 -0
  236. package/dist/lib/typography.d.ts +1 -1
  237. package/dist/lib/typography.d.ts.map +1 -1
  238. package/dist/shape.css +24 -3
  239. package/dist/styles.css +1 -1
  240. package/dist/typography.css +55 -8
  241. package/docs/README.md +1 -1
  242. package/docs/component-contracts.md +101 -0
  243. package/docs/components.md +19 -12
  244. package/docs/exports.json +142 -15
  245. package/docs/patterns/components-accordion--flush.tsx +1 -1
  246. package/docs/patterns/components-appshell--portal-dashboard-pattern.tsx +176 -0
  247. package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
  248. package/docs/patterns/components-badge--outline-tags.tsx +1 -1
  249. package/docs/patterns/components-badge--status-pill.tsx +31 -0
  250. package/docs/patterns/components-badge--with-avatar.tsx +1 -1
  251. package/docs/patterns/components-band--page-in-bands.tsx +39 -0
  252. package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
  253. package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
  254. package/docs/patterns/components-breadcrumb--path.tsx +1 -1
  255. package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
  256. package/docs/patterns/components-button-button--copy-button.tsx +1 -1
  257. package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
  258. package/docs/patterns/components-button-button--external-link.tsx +1 -1
  259. package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
  260. package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
  261. package/docs/patterns/components-button-button--link-render.tsx +1 -1
  262. package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
  263. package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
  264. package/docs/patterns/components-button-button--primary-action.tsx +1 -1
  265. package/docs/patterns/components-button-button--row-hug.tsx +1 -1
  266. package/docs/patterns/components-button-button--row-layout.tsx +1 -1
  267. package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
  268. package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
  269. package/docs/patterns/components-button-button--with-count.tsx +1 -1
  270. package/docs/patterns/components-button-button--with-icon.tsx +1 -1
  271. package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
  272. package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
  273. package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
  274. package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
  275. package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
  276. package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
  277. package/docs/patterns/components-card-card--terminal-frame.tsx +48 -0
  278. package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
  279. package/docs/patterns/components-carousel--image-carousel.tsx +1 -1
  280. package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
  281. package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
  282. package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
  283. package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
  284. package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
  285. package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
  286. package/docs/patterns/components-chart--revenue-by-line.tsx +68 -0
  287. package/docs/patterns/components-chart--segmented-ring-pattern.tsx +144 -0
  288. package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
  289. package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
  290. package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +1 -1
  291. package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
  292. package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
  293. package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
  294. package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
  295. package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
  296. package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
  297. package/docs/patterns/components-copyfield--clipboard-blocked.tsx +9 -0
  298. package/docs/patterns/components-copyfield--copied.tsx +9 -0
  299. package/docs/patterns/components-copyfield--copy-key.tsx +9 -0
  300. package/docs/patterns/components-copyfield--on-navy.tsx +29 -0
  301. package/docs/patterns/components-descriptionlist--details.tsx +1 -1
  302. package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
  303. package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
  304. package/docs/patterns/components-dialog--alert-dialog-typed-confirmation.tsx +54 -0
  305. package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
  306. package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
  307. package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
  308. package/docs/patterns/components-displaycontrols--theme-switch.tsx +35 -0
  309. package/docs/patterns/components-field--horizontal-input.tsx +1 -1
  310. package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
  311. package/docs/patterns/components-field--multi-control.tsx +1 -1
  312. package/docs/patterns/components-filterpanel--panel.tsx +1 -1
  313. package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
  314. package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
  315. package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
  316. package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
  317. package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
  318. package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
  319. package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
  320. package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
  321. package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
  322. package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
  323. package/docs/patterns/components-indexlist--post-index.tsx +1 -1
  324. package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
  325. package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
  326. package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
  327. package/docs/patterns/components-intakeform--short-form-pattern.tsx +1 -1
  328. package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
  329. package/docs/patterns/components-kbd--command-row.tsx +1 -1
  330. package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
  331. package/docs/patterns/components-kbd--shortcut.tsx +1 -1
  332. package/docs/patterns/components-linktile--resource-tile.tsx +1 -1
  333. package/docs/patterns/components-linktile--router-link.tsx +1 -1
  334. package/docs/patterns/components-logview--detail-pane.tsx +80 -0
  335. package/docs/patterns/components-logview--log-viewer.tsx +20 -0
  336. package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
  337. package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
  338. package/docs/patterns/components-navlist--app-sidebar.tsx +118 -0
  339. package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
  340. package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
  341. package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
  342. package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
  343. package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
  344. package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
  345. package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
  346. package/docs/patterns/components-prose--article-body.tsx +1 -1
  347. package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
  348. package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
  349. package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
  350. package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
  351. package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
  352. package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
  353. package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
  354. package/docs/patterns/components-sheet--side-sheet-header-actions.tsx +50 -0
  355. package/docs/patterns/components-sheet--side-sheet-url-deep-link.tsx +51 -0
  356. package/docs/patterns/components-sheet--side-sheet.tsx +38 -0
  357. package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
  358. package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
  359. package/docs/patterns/components-sitenav--compact.tsx +1 -1
  360. package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
  361. package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
  362. package/docs/patterns/components-stat--hero-stat.tsx +54 -0
  363. package/docs/patterns/components-stat--insights-row.tsx +1 -1
  364. package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
  365. package/docs/patterns/components-switch--default.tsx +1 -1
  366. package/docs/patterns/components-switch--settings-row.tsx +1 -1
  367. package/docs/patterns/components-tab--settings-pages.tsx +1 -1
  368. package/docs/patterns/components-table--approvals-with-sheet.tsx +81 -0
  369. package/docs/patterns/components-table--approvals.tsx +223 -0
  370. package/docs/patterns/components-table--basic.tsx +60 -0
  371. package/docs/patterns/components-taskrows--action-details.tsx +1 -1
  372. package/docs/patterns/components-taskrows--capsules.tsx +1 -1
  373. package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
  374. package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
  375. package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
  376. package/docs/patterns/components-taskrows--needs-you-table.tsx +62 -0
  377. package/docs/patterns/components-taskrows--status-list.tsx +1 -1
  378. package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
  379. package/docs/patterns/components-textarea--save-status.tsx +32 -0
  380. package/docs/patterns/components-textlink--external-destination.tsx +1 -1
  381. package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
  382. package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
  383. package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
  384. package/docs/patterns/components-textsequence--default.tsx +1 -1
  385. package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
  386. package/docs/patterns/components-textsequence--shapes.tsx +1 -1
  387. package/docs/patterns/components-tilegrid--masonry.tsx +1 -1
  388. package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
  389. package/docs/patterns/components-tooltip--controlled.tsx +1 -1
  390. package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
  391. package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
  392. package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
  393. package/docs/patterns/components-tooltip--placement.tsx +1 -1
  394. package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
  395. package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
  396. package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
  397. package/docs/patterns/guides-filter-panel--filtered-grid.tsx +1 -1
  398. package/docs/patterns/guides-filter-panel--filtered-index.tsx +1 -1
  399. package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
  400. package/docs/patterns/guides-post-page--post-page.tsx +1 -1
  401. package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
  402. package/docs/patterns/guides-resource-detail--detail.tsx +1 -1
  403. package/docs/patterns/index.json +193 -1
  404. package/package.json +1 -1
  405. package/dist/components/organisms/Tab/tabOverflow.d.ts +0 -14
  406. package/dist/components/organisms/Tab/tabOverflow.d.ts.map +0 -1
package/docs/exports.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@thewhatmatters/wmds",
3
- "version": "0.4.9",
3
+ "version": "0.4.28",
4
4
  "import": "import { Button } from \"@thewhatmatters/wmds\";",
5
5
  "styles": [
6
6
  "@thewhatmatters/wmds/styles.css",
@@ -40,6 +40,19 @@
40
40
  "components-accordion--flush"
41
41
  ]
42
42
  },
43
+ {
44
+ "name": "AppShell",
45
+ "tier": "organism",
46
+ "category": "Layout",
47
+ "summary": "App chrome: a sidebar on the page background, the page as an inset raised surface with a title bar, a phone Sheet menu, and an optional aside.",
48
+ "storybook": {
49
+ "title": "Components/AppShell",
50
+ "docs": "?path=/docs/components-appshell--docs"
51
+ },
52
+ "patterns": [
53
+ "components-appshell--portal-dashboard-pattern"
54
+ ]
55
+ },
43
56
  {
44
57
  "name": "Avatar",
45
58
  "tier": "atom",
@@ -57,16 +70,30 @@
57
70
  "name": "Badge",
58
71
  "tier": "atom",
59
72
  "category": "Feedback & status",
60
- "summary": "Compact semantic label in solid or muted fill, with count, icon, and avatar patterns.",
73
+ "summary": "Compact semantic label in solid or muted fill, with count, icon, avatar, and status-pill patterns.",
61
74
  "storybook": {
62
75
  "title": "Components/Badge",
63
76
  "docs": "?path=/docs/components-badge--docs"
64
77
  },
65
78
  "patterns": [
66
79
  "components-badge--outline-tags",
80
+ "components-badge--status-pill",
67
81
  "components-badge--with-avatar"
68
82
  ]
69
83
  },
84
+ {
85
+ "name": "Band",
86
+ "tier": "atom",
87
+ "category": "Layout",
88
+ "summary": "Full-bleed page section in a brand tone (inverse, field) on the page's own columns.",
89
+ "storybook": {
90
+ "title": "Components/Band",
91
+ "docs": "?path=/docs/components-band--docs"
92
+ },
93
+ "patterns": [
94
+ "components-band--page-in-bands"
95
+ ]
96
+ },
70
97
  {
71
98
  "name": "Breadcrumb",
72
99
  "tier": "molecule",
@@ -127,7 +154,7 @@
127
154
  "name": "Card",
128
155
  "tier": "molecule",
129
156
  "category": "Container",
130
- "summary": "Surface with header, body, and footer slots for layout cards and simple cards.",
157
+ "summary": "Surface with header, body, and footer slots, including a dark terminal frame.",
131
158
  "storybook": {
132
159
  "title": "Components/Card/Card",
133
160
  "docs": "?path=/docs/components-card-card--docs"
@@ -136,7 +163,8 @@
136
163
  "components-card-card--body-slot-occupancy-history",
137
164
  "components-card-card--headerless-media",
138
165
  "components-card-card--outlined-layout",
139
- "components-card-card--pinned-height"
166
+ "components-card-card--pinned-height",
167
+ "components-card-card--terminal-frame"
140
168
  ]
141
169
  },
142
170
  {
@@ -156,7 +184,7 @@
156
184
  "name": "Chart",
157
185
  "tier": "organism",
158
186
  "category": "Data visualization",
159
- "summary": "visx-based charts: capacity bars, ranked bars, unit grids, heatmaps, and time series.",
187
+ "summary": "visx-based charts: capacity bars, segmented rings, ranked bars, unit grids, heatmaps, time series, and a stat column.",
160
188
  "storybook": {
161
189
  "title": "Components/Chart",
162
190
  "docs": "?path=/docs/components-chart--docs"
@@ -168,6 +196,8 @@
168
196
  "components-chart--occupancy-in-card",
169
197
  "components-chart--post-reach-distribution",
170
198
  "components-chart--ranked-audience-breakdown",
199
+ "components-chart--revenue-by-line",
200
+ "components-chart--segmented-ring-pattern",
171
201
  "components-chart--unit-grid-composition"
172
202
  ]
173
203
  },
@@ -249,6 +279,22 @@
249
279
  },
250
280
  "patterns": []
251
281
  },
282
+ {
283
+ "name": "CopyField",
284
+ "tier": "molecule",
285
+ "category": "Form controls",
286
+ "summary": "Read-only monospace value with Copy key seated inside the pill.",
287
+ "storybook": {
288
+ "title": "Components/CopyField",
289
+ "docs": "?path=/docs/components-copyfield--docs"
290
+ },
291
+ "patterns": [
292
+ "components-copyfield--clipboard-blocked",
293
+ "components-copyfield--copied",
294
+ "components-copyfield--copy-key",
295
+ "components-copyfield--on-navy"
296
+ ]
297
+ },
252
298
  {
253
299
  "name": "DescriptionList",
254
300
  "tier": "molecule",
@@ -274,6 +320,7 @@
274
320
  },
275
321
  "patterns": [
276
322
  "components-dialog--alert-dialog-destructive",
323
+ "components-dialog--alert-dialog-typed-confirmation",
277
324
  "components-dialog--default-dialog",
278
325
  "components-dialog--form-dialog"
279
326
  ]
@@ -282,13 +329,14 @@
282
329
  "name": "DisplayControls",
283
330
  "tier": "molecule",
284
331
  "category": "Layout",
285
- "summary": "Grid visibility and theme mode controls with G and T shortcuts.",
332
+ "summary": "Grid visibility and theme mode controls, including a theme-only appearance switch.",
286
333
  "storybook": {
287
334
  "title": "Components/DisplayControls",
288
335
  "docs": "?path=/docs/components-displaycontrols--docs"
289
336
  },
290
337
  "patterns": [
291
- "components-displaycontrols--page-utilities"
338
+ "components-displaycontrols--page-utilities",
339
+ "components-displaycontrols--theme-switch"
292
340
  ]
293
341
  },
294
342
  {
@@ -413,6 +461,17 @@
413
461
  "components-indexlist--post-index"
414
462
  ]
415
463
  },
464
+ {
465
+ "name": "InlinePill",
466
+ "tier": "atom",
467
+ "category": "Content",
468
+ "summary": "A key word inside running text in a soft pill that scales with the text, with an optional picture that can pop in on scroll.",
469
+ "storybook": {
470
+ "title": "Components/InlinePill",
471
+ "docs": "?path=/docs/components-inlinepill--docs"
472
+ },
473
+ "patterns": []
474
+ },
416
475
  {
417
476
  "name": "Input",
418
477
  "tier": "atom",
@@ -494,6 +553,20 @@
494
553
  "components-linktile--router-link"
495
554
  ]
496
555
  },
556
+ {
557
+ "name": "LogView",
558
+ "tier": "molecule",
559
+ "category": "Content",
560
+ "summary": "Scrolling log with a line count, copy, and follow.",
561
+ "storybook": {
562
+ "title": "Components/LogView",
563
+ "docs": "?path=/docs/components-logview--docs"
564
+ },
565
+ "patterns": [
566
+ "components-logview--detail-pane",
567
+ "components-logview--log-viewer"
568
+ ]
569
+ },
497
570
  {
498
571
  "name": "MoreMenu",
499
572
  "tier": "organism",
@@ -512,12 +585,13 @@
512
585
  "name": "NavList",
513
586
  "tier": "molecule",
514
587
  "category": "Navigation",
515
- "summary": "Sectioned secondary navigation with inset pill rows.",
588
+ "summary": "Sectioned secondary navigation with inset pill rows, link items, and a trailing mark.",
516
589
  "storybook": {
517
590
  "title": "Components/NavList",
518
591
  "docs": "?path=/docs/components-navlist--docs"
519
592
  },
520
593
  "patterns": [
594
+ "components-navlist--app-sidebar",
521
595
  "components-navlist--side-nav-settings"
522
596
  ]
523
597
  },
@@ -712,7 +786,10 @@
712
786
  },
713
787
  "patterns": [
714
788
  "components-sheet--bottom-sheet",
715
- "components-sheet--end-sheet"
789
+ "components-sheet--end-sheet",
790
+ "components-sheet--side-sheet",
791
+ "components-sheet--side-sheet-header-actions",
792
+ "components-sheet--side-sheet-url-deep-link"
716
793
  ]
717
794
  },
718
795
  {
@@ -747,12 +824,13 @@
747
824
  "name": "Stat",
748
825
  "tier": "molecule",
749
826
  "category": "Data visualization",
750
- "summary": "At-a-glance metric tile with label, value, and optional trend.",
827
+ "summary": "At-a-glance metric tile with label, value, optional trend, a hero size with a visible vs line, and an optional detail line.",
751
828
  "storybook": {
752
829
  "title": "Components/Stat",
753
830
  "docs": "?path=/docs/components-stat--docs"
754
831
  },
755
832
  "patterns": [
833
+ "components-stat--hero-stat",
756
834
  "components-stat--insights-row"
757
835
  ]
758
836
  },
@@ -807,11 +885,26 @@
807
885
  "components-tab--settings-pages"
808
886
  ]
809
887
  },
888
+ {
889
+ "name": "Table",
890
+ "tier": "atom",
891
+ "category": "Table & list",
892
+ "summary": "Semantic table in a horizontal-scroll box, with a row-actions pattern for approvals.",
893
+ "storybook": {
894
+ "title": "Components/Table",
895
+ "docs": "?path=/docs/components-table--docs"
896
+ },
897
+ "patterns": [
898
+ "components-table--approvals",
899
+ "components-table--approvals-with-sheet",
900
+ "components-table--basic"
901
+ ]
902
+ },
810
903
  {
811
904
  "name": "TaskRows",
812
905
  "tier": "molecule",
813
906
  "category": "Table & list",
814
- "summary": "Expandable task rows with status, meta, and detail rails.",
907
+ "summary": "Expandable task rows, and a needs-you table with a status dot, waiting pill, and metric.",
815
908
  "storybook": {
816
909
  "title": "Components/TaskRows",
817
910
  "docs": "?path=/docs/components-taskrows--docs"
@@ -822,6 +915,7 @@
822
915
  "components-taskrows--card-with-status-rows",
823
916
  "components-taskrows--controlled-expand",
824
917
  "components-taskrows--custom-slots",
918
+ "components-taskrows--needs-you-table",
825
919
  "components-taskrows--status-list",
826
920
  "components-taskrows--tag-chips"
827
921
  ]
@@ -835,7 +929,9 @@
835
929
  "title": "Components/TextArea",
836
930
  "docs": "?path=/docs/components-textarea--docs"
837
931
  },
838
- "patterns": []
932
+ "patterns": [
933
+ "components-textarea--save-status"
934
+ ]
839
935
  },
840
936
  {
841
937
  "name": "TextLink",
@@ -913,19 +1009,50 @@
913
1009
  }
914
1010
  ],
915
1011
  "planned": [
916
- "Pagination",
917
- "Table"
1012
+ "Pagination"
918
1013
  ],
919
1014
  "lib": [
920
1015
  "cn",
921
1016
  "buttonSizeForCluster",
922
1017
  "iconButtonSizeForCluster",
1018
+ "clusterComponentSizeMap",
1019
+ "clusterTiers",
923
1020
  "motionTransition",
924
1021
  "motionTransitionProp",
925
1022
  "focusRingTransitionClasses",
926
1023
  "pressScaleClass",
1024
+ "motionBeatSeconds",
1025
+ "motionBlurReveal",
1026
+ "motionStaggerSeconds",
1027
+ "readMotionDurationSeconds",
1028
+ "chartBucketPeriodData",
1029
+ "chartCategoricalCount",
1030
+ "chartCategoricalPalette",
1031
+ "chartFormatAxisValue",
1032
+ "chartFormatTooltipLabel",
1033
+ "chartFormatTooltipValue",
1034
+ "chartNormalizePeriodData",
1035
+ "chartPeriodKindFromValue",
1036
+ "chartSeriesColor",
1037
+ "chartSeriesConfigFromKeys",
1038
+ "chartSeriesConfigFromTone",
1039
+ "chartTooltipIndicators",
1040
+ "chartTooltipItemsFromConfig",
1041
+ "resolveChartPeriodDayCount",
1042
+ "resolvePeriodSegmentPreset",
1043
+ "resolvePeriodSegments",
1044
+ "backgroundPatterns",
1045
+ "backgroundPatternDiagonalLinesClasses",
1046
+ "backgroundPatternDotGridClasses",
927
1047
  "GridOverlay",
928
- "GRID_ON_CLASS"
1048
+ "GRID_ON_CLASS",
1049
+ "gridOverlayKeyShouldToggle",
1050
+ "isEditableGridOverlayTarget",
1051
+ "readGridColumnCount",
1052
+ "setDocumentGridOn",
1053
+ "useSheetParam",
1054
+ "readSheetParam",
1055
+ "withSheetParam"
929
1056
  ],
930
1057
  "guides": [
931
1058
  "Guides/Chart explorations",
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — flush
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — flush
2
2
  // Storybook: Components/Accordion → Pattern — flush (?path=/story/components-accordion--flush)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -0,0 +1,176 @@
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — portal dashboard
2
+ // Storybook: Components/AppShell → Pattern — portal dashboard (?path=/story/components-appshell--portal-dashboard-pattern)
3
+ // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
+
5
+ "use client";
6
+
7
+ import { useState, useSyncExternalStore } from "react";
8
+ import { ChartColumn, Download, FileText, FolderOpen, LayoutDashboard, Megaphone, Settings, Users } from "lucide-react";
9
+ import {
10
+ AppShell,
11
+ Avatar,
12
+ Badge,
13
+ Button,
14
+ Card,
15
+ DescriptionList,
16
+ DisplayControls,
17
+ NavList,
18
+ Stat,
19
+ TaskRows,
20
+ commitDisplayTheme,
21
+ readDisplayTheme,
22
+ subscribeDisplayTheme,
23
+ cardLayoutBodyOccupantInsetXClasses,
24
+ cardLayoutBodyOccupantPadYClasses,
25
+ cardTitleClasses,
26
+ type DisplayControlThemeMode,
27
+ type NavListSectionDef,
28
+ type TaskRowsColumn,
29
+ } from "@thewhatmatters/wmds";
30
+
31
+ const sections: NavListSectionDef[] = [
32
+ {
33
+ items: [
34
+ { id: "dashboard", label: "Dashboard", icon: <LayoutDashboard strokeWidth={1.75} /> },
35
+ { id: "campaigns", label: "Campaigns", icon: <Megaphone strokeWidth={1.75} />, count: 12 },
36
+ { id: "creators", label: "Creators", icon: <Users strokeWidth={1.75} /> },
37
+ { id: "reports", label: "Reports", icon: <ChartColumn strokeWidth={1.75} /> },
38
+ ],
39
+ },
40
+ {
41
+ label: "Workspace",
42
+ items: [
43
+ { id: "library", label: "Library", icon: <FolderOpen strokeWidth={1.75} /> },
44
+ { id: "invoices", label: "Invoices", icon: <FileText strokeWidth={1.75} /> },
45
+ { id: "settings", label: "Settings", icon: <Settings strokeWidth={1.75} /> },
46
+ ],
47
+ },
48
+ ];
49
+
50
+ const columns: TaskRowsColumn[] = [
51
+ { id: "title", header: "Campaign" },
52
+ { id: "waiting", header: "Waiting on you" },
53
+ { id: "metric", header: "Live posts", align: "end" },
54
+ ];
55
+
56
+ const wellClasses = [
57
+ "flex flex-col",
58
+ cardLayoutBodyOccupantPadYClasses,
59
+ cardLayoutBodyOccupantInsetXClasses,
60
+ ].join(" ");
61
+
62
+ function themeServerSnapshot(): DisplayControlThemeMode {
63
+ return "auto";
64
+ }
65
+
66
+ interface PortalDashboardProps {
67
+ defaultSidebarOpen?: boolean;
68
+ defaultAsideOpen?: boolean;
69
+ }
70
+
71
+ export function PortalDashboard({
72
+ defaultSidebarOpen = true,
73
+ defaultAsideOpen = false,
74
+ }: PortalDashboardProps) {
75
+ const [activeId, setActiveId] = useState("dashboard");
76
+ const [asideOpen, setAsideOpen] = useState(defaultAsideOpen);
77
+ const theme = useSyncExternalStore(subscribeDisplayTheme, readDisplayTheme, themeServerSnapshot);
78
+
79
+ return (
80
+ <AppShell
81
+ title="Dashboard"
82
+ defaultSidebarOpen={defaultSidebarOpen}
83
+ asideOpen={asideOpen}
84
+ onAsideOpenChange={setAsideOpen}
85
+ asideTitle="Stir in strength"
86
+ asideDescription="Campaign details"
87
+ brand={
88
+ <>
89
+ <Avatar name="WhatMatters" size="sm" />
90
+ <span className="type-label text-fg">WhatMatters</span>
91
+ </>
92
+ }
93
+ sidebar={
94
+ <NavList
95
+ aria-label="Portal"
96
+ className="w-full"
97
+ sections={sections}
98
+ activeId={activeId}
99
+ onSelect={setActiveId}
100
+ />
101
+ }
102
+ sidebarFooter={
103
+ <div className="flex items-center justify-between gap-3">
104
+ <span className="type-label">Appearance</span>
105
+ <DisplayControls
106
+ controls="theme"
107
+ aria-label="Appearance"
108
+ theme={theme}
109
+ onThemeChange={commitDisplayTheme}
110
+ />
111
+ </div>
112
+ }
113
+ header={
114
+ <>
115
+ <Button role="secondary" size="sm" icon={<Download strokeWidth={2} />} className="max-sm:!hidden">
116
+ Export
117
+ </Button>
118
+ <Button role="primary" size="sm" onClick={() => setAsideOpen(true)}>
119
+ Details
120
+ </Button>
121
+ </>
122
+ }
123
+ aside={
124
+ <DescriptionList rule="dotted">
125
+ <DescriptionList.Item name="Status">
126
+ <Badge status="success" dot>Active · day 41</Badge>
127
+ </DescriptionList.Item>
128
+ <DescriptionList.Item name="Creators">22</DescriptionList.Item>
129
+ <DescriptionList.Item name="Waiting">4 over 5 days</DescriptionList.Item>
130
+ <DescriptionList.Item name="Live posts">49</DescriptionList.Item>
131
+ </DescriptionList>
132
+ }
133
+ >
134
+ <div className="grid gap-6">
135
+ <Stat.Group aria-label="Key figures" columns={4}>
136
+ <Stat label="Live posts" value="49" trend={{ value: "+12.5%", direction: "up" }} context="vs 43 last month" />
137
+ <Stat label="Creators" value="128" trend={{ value: "+4.1%", direction: "up" }} context="vs 123 last month" />
138
+ <Stat label="Reach" value="256K" trend={{ value: "-1.2%", direction: "down" }} context="vs 259K last month" />
139
+ <Stat label="Waiting on you" value="26" trend={{ value: "0%", direction: "neutral" }} context="across 3 campaigns" />
140
+ </Stat.Group>
141
+ <section aria-labelledby="needs-you-heading">
142
+ <Card>
143
+ <Card.Header start={<h2 id="needs-you-heading" className={cardTitleClasses}>Campaigns that need you</h2>} />
144
+ <Card.Body>
145
+ <div className={wellClasses}>
146
+ <TaskRows variant="table" columns={columns} empty="Nothing waiting">
147
+ <TaskRows.Row
148
+ title="Stir in strength"
149
+ href="/campaigns/stir"
150
+ status={{ tone: "success", label: "Active · day 41" }}
151
+ waiting={{ label: "22 creators", detail: "4 waiting over 5 days" }}
152
+ metric={{ value: "49", detail: "12 this week" }}
153
+ />
154
+ <TaskRows.Row
155
+ title="Healthier every day"
156
+ href="/campaigns/healthier"
157
+ status={{ tone: "warning", label: "Open · 2d" }}
158
+ waiting={{ label: "4 creators", detail: "all within 48h target" }}
159
+ metric={{ value: "10", detail: "2 this week" }}
160
+ />
161
+ <TaskRows.Row
162
+ title="Summer launch"
163
+ href="/campaigns/summer"
164
+ status={{ tone: "destructive", label: "Paused · 9d" }}
165
+ waiting={{ label: "9 creators", detail: "brief needs approval" }}
166
+ metric={{ value: "3", detail: "none this week" }}
167
+ />
168
+ </TaskRows>
169
+ </div>
170
+ </Card.Body>
171
+ </Card>
172
+ </section>
173
+ </div>
174
+ </AppShell>
175
+ );
176
+ }
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — dropdown row
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — dropdown row
2
2
  // Storybook: Components/Avatar → Pattern — dropdown row (?path=/story/components-avatar--dropdown-row)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — outline tags
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — outline tags
2
2
  // Storybook: Components/Badge → Pattern — outline tags (?path=/story/components-badge--outline-tags)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -0,0 +1,31 @@
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — status pill
2
+ // Storybook: Components/Badge → Pattern — status pill (?path=/story/components-badge--status-pill)
3
+ // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
+
5
+ import { Badge } from "@thewhatmatters/wmds";
6
+ import { Calendar, CircleCheck } from "lucide-react";
7
+
8
+ export function RoutineStatus() {
9
+ return (
10
+ <div className="flex flex-wrap items-center gap-2">
11
+ <Badge status="active" dot>
12
+ Active
13
+ </Badge>
14
+ <Badge status="idle" icon={<Calendar strokeWidth={2} />}>
15
+ Every 2 days
16
+ </Badge>
17
+ <Badge status="idle" icon={<CircleCheck strokeWidth={2} />}>
18
+ Last checked 1d ago
19
+ </Badge>
20
+ <Badge status="success" dot>
21
+ Succeeded
22
+ </Badge>
23
+ <Badge status="failed" dot>
24
+ Failed
25
+ </Badge>
26
+ <Badge status="warning" dot>
27
+ Needs a look
28
+ </Badge>
29
+ </div>
30
+ );
31
+ }
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — with avatar
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — with avatar
2
2
  // Storybook: Components/Badge → Pattern — with avatar (?path=/story/components-badge--with-avatar)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -0,0 +1,39 @@
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — page in bands
2
+ // Storybook: Components/Band → Pattern — page in bands (?path=/story/components-band--page-in-bands)
3
+ // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
+
5
+ import { Band, Button } from "@thewhatmatters/wmds";
6
+
7
+ export function PageInBandsExample() {
8
+ return (
9
+ <main className="grid-page !py-0">
10
+ <Band tone="inverse" spacing="lg" aria-labelledby="hero-title">
11
+ <div className="col-span-full flex flex-col gap-6 lg:col-span-10">
12
+ <h1 id="hero-title" className="type-display-hero text-fg">
13
+ Smoke and chili
14
+ </h1>
15
+ <p className="type-reading text-muted">Wood-fired tacos on East Cesar Chavez, open late.</p>
16
+ <div className="flex flex-wrap gap-2">
17
+ <Button role="primary">Book a table</Button>
18
+ <Button role="secondary">See the menu</Button>
19
+ </div>
20
+ </div>
21
+ </Band>
22
+ <Band aria-labelledby="menu-title">
23
+ <h2 id="menu-title" className="type-display-xl col-span-full text-fg">
24
+ The menu
25
+ </h2>
26
+ <p className="type-reading col-span-full text-muted md:col-span-4">Six tacos, two salsas, one mezcal list.</p>
27
+ </Band>
28
+ <Band tone="field" aria-labelledby="catering-title">
29
+ <h2 id="catering-title" className="type-display-1 col-span-full text-fg md:col-span-6">
30
+ Catering for forty
31
+ </h2>
32
+ <div className="col-span-full flex flex-col items-start gap-4 md:col-span-2">
33
+ <p className="type-body text-fg">From $1,500, staff included.</p>
34
+ <Button role="outline">Ask for a date</Button>
35
+ </div>
36
+ </Band>
37
+ </main>
38
+ );
39
+ }
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — editorial
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — editorial
2
2
  // Storybook: Components/Breadcrumb → Pattern — editorial (?path=/story/components-breadcrumb--editorial)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — long path
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — long path
2
2
  // Storybook: Components/Breadcrumb → Pattern — long path (?path=/story/components-breadcrumb--long-path)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — path
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — path
2
2
  // Storybook: Components/Breadcrumb → Pattern — path (?path=/story/components-breadcrumb--path)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — router links
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — router links
2
2
  // Storybook: Components/Breadcrumb → Pattern — router links (?path=/story/components-breadcrumb--router-links)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — copy button
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — copy button
2
2
  // Storybook: Components/Button/Button → Pattern — copy button (?path=/story/components-button-button--copy-button)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — destructive action
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — destructive action
2
2
  // Storybook: Components/Button/Button → Pattern — destructive action (?path=/story/components-button-button--destructive-action)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — external link
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — external link
2
2
  // Storybook: Components/Button/Button → Pattern — external link (?path=/story/components-button-button--external-link)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — ghost action
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — ghost action
2
2
  // Storybook: Components/Button/Button → Pattern — ghost action (?path=/story/components-button-button--ghost-action)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4
 
@@ -1,4 +1,4 @@
1
- // @thewhatmatters/wmds@0.4.9 · Pattern — inverse action
1
+ // @thewhatmatters/wmds@0.4.28 · Pattern — inverse action
2
2
  // Storybook: Components/Button/Button → Pattern — inverse action (?path=/story/components-button-button--inverse-action)
3
3
  // Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
4
4