@thewhatmatters/wmds 0.4.8 → 0.4.27
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.
- package/CHANGELOG.md +284 -2
- package/CONSUMING.md +1 -1
- package/README.md +1 -1
- package/bin/wmds-check.mjs +8 -4
- package/dist/components/atoms/Badge/Badge.d.ts +13 -5
- package/dist/components/atoms/Badge/Badge.d.ts.map +1 -1
- package/dist/components/atoms/Badge/Badge.js +56 -48
- package/dist/components/atoms/Badge/badgeStyles.d.ts +15 -0
- package/dist/components/atoms/Badge/badgeStyles.d.ts.map +1 -1
- package/dist/components/atoms/Badge/badgeStyles.js +38 -16
- package/dist/components/atoms/Button/Button.d.ts +1 -1
- package/dist/components/atoms/Button/Button.d.ts.map +1 -1
- package/dist/components/atoms/Button/Button.js +67 -48
- package/dist/components/atoms/Button/buttonStatusMotion.d.ts.map +1 -1
- package/dist/components/atoms/Button/buttonStatusMotion.js +6 -1
- package/dist/components/atoms/Button/buttonStyles.d.ts +1 -1
- package/dist/components/atoms/Button/buttonStyles.d.ts.map +1 -1
- package/dist/components/atoms/Button/buttonStyles.js +14 -12
- package/dist/components/atoms/Input/Input.d.ts +3 -1
- package/dist/components/atoms/Input/Input.d.ts.map +1 -1
- package/dist/components/atoms/Input/Input.js +59 -59
- package/dist/components/atoms/Input/inputShellStyles.d.ts +9 -3
- package/dist/components/atoms/Input/inputShellStyles.d.ts.map +1 -1
- package/dist/components/atoms/Input/inputShellStyles.js +38 -38
- package/dist/components/atoms/RiveHand/RiveHand.d.ts.map +1 -1
- package/dist/components/atoms/RiveHand/RiveHand.js +83 -81
- package/dist/components/atoms/Table/Table.d.ts +54 -0
- package/dist/components/atoms/Table/Table.d.ts.map +1 -0
- package/dist/components/atoms/Table/Table.js +66 -0
- package/dist/components/atoms/Table/tableStyles.d.ts +18 -0
- package/dist/components/atoms/Table/tableStyles.d.ts.map +1 -0
- package/dist/components/atoms/Table/tableStyles.js +14 -0
- package/dist/components/atoms/TextArea/TextArea.d.ts +6 -0
- package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -1
- package/dist/components/atoms/TextArea/TextArea.js +86 -78
- package/dist/components/atoms/TextArea/textareaShellStyles.d.ts +2 -2
- package/dist/components/atoms/TextArea/textareaShellStyles.d.ts.map +1 -1
- package/dist/components/atoms/TextArea/textareaShellStyles.js +2 -2
- package/dist/components/atoms/TextLink/TextLink.d.ts +9 -3
- package/dist/components/atoms/TextLink/TextLink.d.ts.map +1 -1
- package/dist/components/atoms/TextLink/TextLink.js +22 -17
- package/dist/components/molecules/Card/Card.d.ts +28 -6
- package/dist/components/molecules/Card/Card.d.ts.map +1 -1
- package/dist/components/molecules/Card/Card.js +83 -42
- package/dist/components/molecules/Card/cardStyles.d.ts +16 -1
- package/dist/components/molecules/Card/cardStyles.d.ts.map +1 -1
- package/dist/components/molecules/Card/cardStyles.js +18 -4
- package/dist/components/molecules/Chip/chipStyles.js +9 -9
- package/dist/components/molecules/CopyField/CopyField.d.ts +41 -0
- package/dist/components/molecules/CopyField/CopyField.d.ts.map +1 -0
- package/dist/components/molecules/CopyField/CopyField.js +120 -0
- package/dist/components/molecules/CopyField/copyFieldStyles.d.ts +28 -0
- package/dist/components/molecules/CopyField/copyFieldStyles.d.ts.map +1 -0
- package/dist/components/molecules/CopyField/copyFieldStyles.js +7 -0
- package/dist/components/molecules/DisplayControls/DisplayControls.d.ts +16 -7
- package/dist/components/molecules/DisplayControls/DisplayControls.d.ts.map +1 -1
- package/dist/components/molecules/DisplayControls/DisplayControls.js +41 -39
- package/dist/components/molecules/DisplayControls/displayControlsState.d.ts +21 -0
- package/dist/components/molecules/DisplayControls/displayControlsState.d.ts.map +1 -1
- package/dist/components/molecules/DisplayControls/displayControlsState.js +46 -4
- package/dist/components/molecules/IndexList/IndexList.d.ts +6 -3
- package/dist/components/molecules/IndexList/IndexList.d.ts.map +1 -1
- package/dist/components/molecules/IndexList/IndexList.js +22 -21
- package/dist/components/molecules/LinkTile/LinkTile.d.ts.map +1 -1
- package/dist/components/molecules/LinkTile/LinkTile.js +74 -68
- package/dist/components/molecules/LinkTile/linkTileStyles.d.ts +7 -1
- package/dist/components/molecules/LinkTile/linkTileStyles.d.ts.map +1 -1
- package/dist/components/molecules/LinkTile/linkTileStyles.js +2 -2
- package/dist/components/molecules/LogView/LogView.d.ts +31 -0
- package/dist/components/molecules/LogView/LogView.d.ts.map +1 -0
- package/dist/components/molecules/LogView/LogView.js +109 -0
- package/dist/components/molecules/LogView/logViewStyles.d.ts +11 -0
- package/dist/components/molecules/LogView/logViewStyles.d.ts.map +1 -0
- package/dist/components/molecules/LogView/logViewStyles.js +6 -0
- package/dist/components/molecules/NavList/NavList.d.ts +23 -4
- package/dist/components/molecules/NavList/NavList.d.ts.map +1 -1
- package/dist/components/molecules/NavList/NavList.js +65 -52
- package/dist/components/molecules/NavList/navListStyles.d.ts +2 -0
- package/dist/components/molecules/NavList/navListStyles.d.ts.map +1 -1
- package/dist/components/molecules/NavList/navListStyles.js +3 -3
- package/dist/components/molecules/PageHeader/PageHeader.js +3 -3
- package/dist/components/molecules/SegmentedControl/segmentedControlStyles.js +7 -7
- package/dist/components/molecules/Stat/Stat.d.ts +31 -5
- package/dist/components/molecules/Stat/Stat.d.ts.map +1 -1
- package/dist/components/molecules/Stat/Stat.js +83 -49
- package/dist/components/molecules/Stat/statStyles.d.ts +23 -3
- package/dist/components/molecules/Stat/statStyles.d.ts.map +1 -1
- package/dist/components/molecules/Stat/statStyles.js +29 -12
- package/dist/components/molecules/TaskRows/TaskRows.d.ts +13 -3
- package/dist/components/molecules/TaskRows/TaskRows.d.ts.map +1 -1
- package/dist/components/molecules/TaskRows/TaskRows.js +81 -57
- package/dist/components/molecules/TaskRows/TaskRowsTable.d.ts +54 -0
- package/dist/components/molecules/TaskRows/TaskRowsTable.d.ts.map +1 -0
- package/dist/components/molecules/TaskRows/TaskRowsTable.js +200 -0
- package/dist/components/molecules/TaskRows/taskRowsStyles.d.ts +19 -1
- package/dist/components/molecules/TaskRows/taskRowsStyles.d.ts.map +1 -1
- package/dist/components/molecules/TaskRows/taskRowsStyles.js +7 -3
- package/dist/components/molecules/TileGrid/tileGridStyles.d.ts +2 -2
- package/dist/components/organisms/AppShell/AppShell.d.ts +82 -0
- package/dist/components/organisms/AppShell/AppShell.d.ts.map +1 -0
- package/dist/components/organisms/AppShell/AppShell.js +222 -0
- package/dist/components/organisms/AppShell/appShellStyles.d.ts +18 -0
- package/dist/components/organisms/AppShell/appShellStyles.d.ts.map +1 -0
- package/dist/components/organisms/AppShell/appShellStyles.js +8 -0
- package/dist/components/organisms/Carousel/Carousel.d.ts +9 -1
- package/dist/components/organisms/Carousel/Carousel.d.ts.map +1 -1
- package/dist/components/organisms/Carousel/Carousel.js +220 -182
- package/dist/components/organisms/Carousel/carouselMath.d.ts +5 -0
- package/dist/components/organisms/Carousel/carouselMath.d.ts.map +1 -1
- package/dist/components/organisms/Carousel/carouselMath.js +9 -1
- package/dist/components/organisms/Carousel/carouselStyles.d.ts +2 -0
- package/dist/components/organisms/Carousel/carouselStyles.d.ts.map +1 -1
- package/dist/components/organisms/Carousel/carouselStyles.js +8 -7
- package/dist/components/organisms/Chart/Chart.d.ts +5 -1
- package/dist/components/organisms/Chart/Chart.d.ts.map +1 -1
- package/dist/components/organisms/Chart/Chart.js +126 -62
- package/dist/components/organisms/Chart/ChartLegend.d.ts +8 -1
- package/dist/components/organisms/Chart/ChartLegend.d.ts.map +1 -1
- package/dist/components/organisms/Chart/ChartLegend.js +43 -13
- package/dist/components/organisms/Chart/ChartSegmentedRing.d.ts +52 -0
- package/dist/components/organisms/Chart/ChartSegmentedRing.d.ts.map +1 -0
- package/dist/components/organisms/Chart/ChartSegmentedRing.js +95 -0
- package/dist/components/organisms/Chart/chartStyles.d.ts +32 -0
- package/dist/components/organisms/Chart/chartStyles.d.ts.map +1 -1
- package/dist/components/organisms/Chart/chartStyles.js +15 -3
- package/dist/components/organisms/ChatDock/ChatDock.d.ts.map +1 -1
- package/dist/components/organisms/ChatDock/ChatDock.js +29 -25
- package/dist/components/organisms/Dialog/OverlayPanelHeader.d.ts.map +1 -1
- package/dist/components/organisms/Dialog/OverlayPanelHeader.js +1 -0
- package/dist/components/organisms/Sheet/Sheet.d.ts +3 -1
- package/dist/components/organisms/Sheet/Sheet.d.ts.map +1 -1
- package/dist/components/organisms/Sheet/Sheet.js +74 -68
- package/dist/components/organisms/Sheet/sheetStyles.d.ts +8 -2
- package/dist/components/organisms/Sheet/sheetStyles.d.ts.map +1 -1
- package/dist/components/organisms/Sheet/sheetStyles.js +16 -11
- package/dist/components/organisms/Tab/tabStyles.js +7 -7
- package/dist/index.d.ts +14 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +148 -139
- package/dist/lib/chartTheme.d.ts +11 -0
- package/dist/lib/chartTheme.d.ts.map +1 -1
- package/dist/lib/compositionAudit.d.ts.map +1 -1
- package/dist/lib/dialogOverlay.d.ts +7 -0
- package/dist/lib/dialogOverlay.d.ts.map +1 -1
- package/dist/lib/dialogOverlay.js +16 -1
- package/dist/lib/sheetParam/index.d.ts +3 -0
- package/dist/lib/sheetParam/index.d.ts.map +1 -0
- package/dist/lib/sheetParam/sheetParam.d.ts +15 -0
- package/dist/lib/sheetParam/sheetParam.d.ts.map +1 -0
- package/dist/lib/sheetParam/sheetParam.js +26 -0
- package/dist/lib/sheetParam/useSheetParam.d.ts +25 -0
- package/dist/lib/sheetParam/useSheetParam.d.ts.map +1 -0
- package/dist/lib/sheetParam/useSheetParam.js +29 -0
- package/dist/lib/typography.d.ts +2 -2
- package/dist/lib/typography.d.ts.map +1 -1
- package/dist/lib/typography.js +11 -0
- package/dist/styles.css +1 -1
- package/dist/typography.css +16 -0
- package/docs/README.md +1 -1
- package/docs/component-contracts.md +101 -0
- package/docs/components.md +21 -16
- package/docs/exports.json +88 -15
- package/docs/patterns/components-accordion--flush.tsx +1 -1
- package/docs/patterns/components-appshell--portal-dashboard-pattern.tsx +176 -0
- package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
- package/docs/patterns/components-badge--outline-tags.tsx +1 -1
- package/docs/patterns/components-badge--status-pill.tsx +31 -0
- package/docs/patterns/components-badge--with-avatar.tsx +1 -1
- package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
- package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
- package/docs/patterns/components-button-button--copy-button.tsx +1 -1
- package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
- package/docs/patterns/components-button-button--external-link.tsx +1 -1
- package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
- package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
- package/docs/patterns/components-button-button--link-render.tsx +1 -1
- package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
- package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
- package/docs/patterns/components-button-button--primary-action.tsx +1 -1
- package/docs/patterns/components-button-button--row-hug.tsx +1 -1
- package/docs/patterns/components-button-button--row-layout.tsx +1 -1
- package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
- package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
- package/docs/patterns/components-button-button--with-count.tsx +1 -1
- package/docs/patterns/components-button-button--with-icon.tsx +1 -1
- package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
- package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
- package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
- package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
- package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
- package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
- package/docs/patterns/components-card-card--terminal-frame.tsx +48 -0
- package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
- package/docs/patterns/components-carousel--image-carousel.tsx +1 -1
- package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
- package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
- package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
- package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
- package/docs/patterns/components-chart--revenue-by-line.tsx +68 -0
- package/docs/patterns/components-chart--segmented-ring-pattern.tsx +144 -0
- package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
- package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
- package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +1 -1
- package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
- package/docs/patterns/components-copyfield--clipboard-blocked.tsx +9 -0
- package/docs/patterns/components-copyfield--copied.tsx +9 -0
- package/docs/patterns/components-copyfield--copy-key.tsx +9 -0
- package/docs/patterns/components-copyfield--on-navy.tsx +29 -0
- package/docs/patterns/components-descriptionlist--details.tsx +1 -1
- package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
- package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
- package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
- package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
- package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
- package/docs/patterns/components-displaycontrols--theme-switch.tsx +35 -0
- package/docs/patterns/components-field--horizontal-input.tsx +1 -1
- package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
- package/docs/patterns/components-field--multi-control.tsx +1 -1
- package/docs/patterns/components-filterpanel--panel.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
- package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-indexlist--post-index.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--short-form-pattern.tsx +1 -1
- package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
- package/docs/patterns/components-kbd--command-row.tsx +1 -1
- package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
- package/docs/patterns/components-kbd--shortcut.tsx +1 -1
- package/docs/patterns/components-linktile--resource-tile.tsx +1 -1
- package/docs/patterns/components-linktile--router-link.tsx +1 -1
- package/docs/patterns/components-logview--detail-pane.tsx +80 -0
- package/docs/patterns/components-logview--log-viewer.tsx +20 -0
- package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
- package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
- package/docs/patterns/components-navlist--app-sidebar.tsx +118 -0
- package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
- package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
- package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
- package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
- package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
- package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
- package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
- package/docs/patterns/components-prose--article-body.tsx +1 -1
- package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
- package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
- package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
- package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
- package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
- package/docs/patterns/components-sheet--side-sheet-header-actions.tsx +50 -0
- package/docs/patterns/components-sheet--side-sheet-url-deep-link.tsx +51 -0
- package/docs/patterns/components-sheet--side-sheet.tsx +38 -0
- package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
- package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
- package/docs/patterns/components-sitenav--compact.tsx +1 -1
- package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
- package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
- package/docs/patterns/components-stat--hero-stat.tsx +54 -0
- package/docs/patterns/components-stat--insights-row.tsx +1 -1
- package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
- package/docs/patterns/components-switch--default.tsx +1 -1
- package/docs/patterns/components-switch--settings-row.tsx +1 -1
- package/docs/patterns/components-tab--settings-pages.tsx +1 -1
- package/docs/patterns/components-table--approvals-with-sheet.tsx +81 -0
- package/docs/patterns/components-table--approvals.tsx +223 -0
- package/docs/patterns/components-table--basic.tsx +60 -0
- package/docs/patterns/components-taskrows--action-details.tsx +1 -1
- package/docs/patterns/components-taskrows--capsules.tsx +1 -1
- package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
- package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
- package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
- package/docs/patterns/components-taskrows--needs-you-table.tsx +62 -0
- package/docs/patterns/components-taskrows--status-list.tsx +1 -1
- package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
- package/docs/patterns/components-textarea--save-status.tsx +32 -0
- package/docs/patterns/components-textlink--external-destination.tsx +1 -1
- package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
- package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
- package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
- package/docs/patterns/components-textsequence--default.tsx +1 -1
- package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
- package/docs/patterns/components-textsequence--shapes.tsx +1 -1
- package/docs/patterns/components-tilegrid--masonry.tsx +1 -1
- package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
- package/docs/patterns/components-tooltip--controlled.tsx +1 -1
- package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
- package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
- package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
- package/docs/patterns/components-tooltip--placement.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
- package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
- package/docs/patterns/guides-filter-panel--filtered-grid.tsx +1 -1
- package/docs/patterns/guides-filter-panel--filtered-index.tsx +7 -3
- package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
- package/docs/patterns/guides-post-page--post-page.tsx +21 -4
- package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
- package/docs/patterns/guides-resource-detail--detail.tsx +13 -4
- package/docs/patterns/index.json +177 -1
- package/package.json +1 -1
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @thewhatmatters/wmds@0.4.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · 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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @thewhatmatters/wmds@0.4.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — link
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — link (?path=/story/components-button-button--link-render)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — submit / async
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — submit / async (?path=/story/components-button-button--multi-state-badge)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — outline mono
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — outline mono (?path=/story/components-button-button--outline-mono)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — primary action
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — primary action (?path=/story/components-button-button--primary-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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — row (hug)
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — row (hug) (?path=/story/components-button-button--row-hug)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — row
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — row (?path=/story/components-button-button--row-layout)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — secondary action
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — secondary action (?path=/story/components-button-button--secondary-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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — suggestion pills
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — suggestion pills (?path=/story/components-button-button--suggestion-pills)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — with count
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — with count (?path=/story/components-button-button--with-count)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — with icon
|
|
2
2
|
// Storybook: Components/Button/Button → Pattern — with icon (?path=/story/components-button-button--with-icon)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — vertical actions
|
|
2
2
|
// Storybook: Components/Button/FloatingActionButton → Pattern — vertical actions (?path=/story/components-button-floatingactionbutton--vertical-actions)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — skip in footer
|
|
2
2
|
// Storybook: Components/CalEmbed → Pattern — skip in footer (?path=/story/components-calembed--pattern-skip-in-footer)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Example — body slot (occupancy history)
|
|
2
2
|
// Storybook: Components/Card/Card → Example — body slot (occupancy history) (?path=/story/components-card-card--body-slot-occupancy-history)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — headerless media
|
|
2
2
|
// Storybook: Components/Card/Card → Pattern — headerless media (?path=/story/components-card-card--headerless-media)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — outlined layout
|
|
2
2
|
// Storybook: Components/Card/Card → Pattern — outlined layout (?path=/story/components-card-card--outlined-layout)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — pinned height
|
|
2
2
|
// Storybook: Components/Card/Card → Pattern — pinned height (?path=/story/components-card-card--pinned-height)
|
|
3
3
|
// Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
|
|
4
4
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — terminal frame
|
|
2
|
+
// Storybook: Components/Card/Card → Pattern — terminal frame (?path=/story/components-card-card--terminal-frame)
|
|
3
|
+
// Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
Card,
|
|
7
|
+
cardTitleClasses,
|
|
8
|
+
} from "@thewhatmatters/wmds";
|
|
9
|
+
|
|
10
|
+
const terminalPreview =
|
|
11
|
+
'<!doctype html><html><body style="margin:0;background:#262626;color:#fafafa;font:14px ui-monospace,monospace;padding:16px">$ scan --target etheris<br>12 findings</body></html>';
|
|
12
|
+
|
|
13
|
+
export function TerminalFrames() {
|
|
14
|
+
return (
|
|
15
|
+
<div className="grid w-full max-w-3xl gap-4">
|
|
16
|
+
<section>
|
|
17
|
+
<Card padding="none">
|
|
18
|
+
<Card.Header start={<h2 className={cardTitleClasses}>Session</h2>} />
|
|
19
|
+
<Card.Body
|
|
20
|
+
variant="terminal"
|
|
21
|
+
title="session.log"
|
|
22
|
+
srcDoc={terminalPreview}
|
|
23
|
+
height="sm"
|
|
24
|
+
readOnly
|
|
25
|
+
/>
|
|
26
|
+
</Card>
|
|
27
|
+
</section>
|
|
28
|
+
<section>
|
|
29
|
+
<Card padding="none">
|
|
30
|
+
<Card.Header start={<h2 className={cardTitleClasses}>Loading</h2>} />
|
|
31
|
+
<Card.Body variant="terminal" title="session.log" height="sm" state="loading" />
|
|
32
|
+
</Card>
|
|
33
|
+
</section>
|
|
34
|
+
<section>
|
|
35
|
+
<Card padding="none">
|
|
36
|
+
<Card.Header start={<h2 className={cardTitleClasses}>Offline</h2>} />
|
|
37
|
+
<Card.Body
|
|
38
|
+
variant="terminal"
|
|
39
|
+
title="session.log"
|
|
40
|
+
height="sm"
|
|
41
|
+
state="disconnected"
|
|
42
|
+
message="Session disconnected"
|
|
43
|
+
/>
|
|
44
|
+
</Card>
|
|
45
|
+
</section>
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @thewhatmatters/wmds@0.4.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — selectable cards
|
|
2
2
|
// Storybook: Components/Card/SelectableCard → Pattern — selectable cards (?path=/story/components-card-selectablecard--selectable-cards-pattern)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — image carousel
|
|
2
2
|
// Storybook: Components/Carousel → Pattern — image carousel (?path=/story/components-carousel--image-carousel)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — matrix heatmap
|
|
2
2
|
// Storybook: Components/Chart → Pattern — matrix heatmap (?path=/story/components-chart--audience-activity-heatmap)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — Cartesian no-data gaps
|
|
2
2
|
// Storybook: Components/Chart → Pattern — Cartesian no-data gaps (?path=/story/components-chart--cartesian-no-data-gaps)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — occupancy history in Card
|
|
2
2
|
// Storybook: Components/Chart → Pattern — occupancy history in Card (?path=/story/components-chart--occupancy-history-in-card)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — occupancy KPI in Card
|
|
2
2
|
// Storybook: Components/Chart → Pattern — occupancy KPI in Card (?path=/story/components-chart--occupancy-in-card)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — distribution strip
|
|
2
2
|
// Storybook: Components/Chart → Pattern — distribution strip (?path=/story/components-chart--post-reach-distribution)
|
|
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.
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — ranked audience breakdown
|
|
2
2
|
// Storybook: Components/Chart → Pattern — ranked audience breakdown (?path=/story/components-chart--ranked-audience-breakdown)
|
|
3
3
|
// Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
|
|
4
4
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// @thewhatmatters/wmds@0.4.27 · Pattern — revenue by line
|
|
2
|
+
// Storybook: Components/Chart → Pattern — revenue by line (?path=/story/components-chart--revenue-by-line)
|
|
3
|
+
// Show code — copy verbatim and keep this header; upgrades find pasted patterns by it.
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
Card,
|
|
7
|
+
Chart,
|
|
8
|
+
Stat,
|
|
9
|
+
cardLayoutBodyOccupantInsetXClasses,
|
|
10
|
+
cardLayoutBodyOccupantPadYClasses,
|
|
11
|
+
cardLayoutBodyOccupantWellClasses,
|
|
12
|
+
cardTitleClasses,
|
|
13
|
+
chartSeriesConfigFromTone,
|
|
14
|
+
type ChartCartesianPoint,
|
|
15
|
+
} from "@thewhatmatters/wmds";
|
|
16
|
+
|
|
17
|
+
const config = chartSeriesConfigFromTone("revenue", "Revenue", "primary");
|
|
18
|
+
|
|
19
|
+
const data: ChartCartesianPoint[] = [
|
|
20
|
+
{ date: new Date(2026, 0, 1), revenue: 18420 },
|
|
21
|
+
{ date: new Date(2026, 1, 1), revenue: 22100 },
|
|
22
|
+
{ date: new Date(2026, 2, 1), revenue: 19840 },
|
|
23
|
+
{ date: new Date(2026, 3, 1), revenue: 24610 },
|
|
24
|
+
{ date: new Date(2026, 4, 1), revenue: 27330 },
|
|
25
|
+
{ date: new Date(2026, 5, 1), revenue: 26150 },
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
export function RevenueByLine() {
|
|
29
|
+
return (
|
|
30
|
+
<div className="flex w-full max-w-5xl flex-col gap-6">
|
|
31
|
+
<section>
|
|
32
|
+
<Card>
|
|
33
|
+
<Card.Header start={<h2 className={cardTitleClasses}>Revenue by line</h2>} />
|
|
34
|
+
<Card.Body>
|
|
35
|
+
<div
|
|
36
|
+
className={`grid items-start gap-4 lg:grid-cols-[minmax(0,1fr)_16rem] ${cardLayoutBodyOccupantPadYClasses} ${cardLayoutBodyOccupantWellClasses} ${cardLayoutBodyOccupantInsetXClasses}`}
|
|
37
|
+
>
|
|
38
|
+
<Chart.Cartesian
|
|
39
|
+
data={data}
|
|
40
|
+
config={config}
|
|
41
|
+
seriesKeys={["revenue"]}
|
|
42
|
+
periodKind="month"
|
|
43
|
+
minHeight={220}
|
|
44
|
+
animate="none"
|
|
45
|
+
aria-label="Revenue by month"
|
|
46
|
+
/>
|
|
47
|
+
<div className="grid grid-cols-2 gap-4 lg:grid-cols-1">
|
|
48
|
+
<Stat label="Subscriptions" value="$42,180" trend={{ value: "+12%", direction: "up" }} />
|
|
49
|
+
<Stat label="Services" value="$18,640" trend={{ value: "-3%", direction: "down" }} />
|
|
50
|
+
<Stat label="Licenses" value="$9,210" trend={{ value: "0%", direction: "neutral" }} />
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</Card.Body>
|
|
54
|
+
</Card>
|
|
55
|
+
</section>
|
|
56
|
+
<section>
|
|
57
|
+
<Card>
|
|
58
|
+
<Card.Header start={<h2 className={cardTitleClasses}>Revenue by line</h2>} />
|
|
59
|
+
<Card.Body>
|
|
60
|
+
<p className="type-body text-muted px-4 py-6" role="status">
|
|
61
|
+
Revenue by line is not wired
|
|
62
|
+
</p>
|
|
63
|
+
</Card.Body>
|
|
64
|
+
</Card>
|
|
65
|
+
</section>
|
|
66
|
+
</div>
|
|
67
|
+
);
|
|
68
|
+
}
|