@mediaradar/design-components 0.18.4 → 0.18.6

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/dist/index.d.cts CHANGED
@@ -56,7 +56,7 @@ declare function InfoTip({ text, size, label, trigger }: InfoTipProps): react.JS
56
56
  * original (and still primary) use, but the copy props make it reusable for
57
57
  * any dimension that's also search-first in its own filter tray, so the
58
58
  * dimension reads the same in the quick bar as it does there.
59
- * @tokens rounded-control, rounded-card, border-border-default, border-border-strong,
59
+ * @tokens text-control-caption, rounded-control, rounded-card, border-border-default, border-border-strong,
60
60
  * border-border-interactive, border-border-focus, bg-surface, bg-input,
61
61
  * shadow-overlay, text-text-primary, text-text-secondary, text-text-tertiary,
62
62
  * text-text-link, bg-brand-primaryAction, text-brand-onprimary,
@@ -408,7 +408,7 @@ declare function CheckBoxBox({ checked, indeterminate, disabled, className }: Ch
408
408
  * a chevron that opens a two-pane picker: preset shortcuts on the left, a
409
409
  * dual-month calendar with range highlighting on the right, Start/End fields,
410
410
  * and Cancel/Apply. Shared by Creative Intel and the Account Review.
411
- * @tokens rounded-control, rounded-card, border-border-default, border-border-strong,
411
+ * @tokens text-control-caption, rounded-control, rounded-card, border-border-default, border-border-strong,
412
412
  * bg-surface, bg-input, bg-subtle, bg-ai-tint, bg-brand-primaryAction, text-brand-onprimary,
413
413
  * shadow-overlay, text-text-primary, text-text-secondary, text-text-tertiary,
414
414
  * hover:bg-subtle, hover:text-text-primary, focus-visible:outline-border-focus
@@ -473,7 +473,7 @@ declare function DateRangeFilter({ caption, defaultValue, value: controlledValue
473
473
  * bordered control, mirroring the legacy Creative Intel search + match-type
474
474
  * modal (Any Word/Exact Match/Contextual/Ad Code), including the Or/And
475
475
  * sub-choice nested under Any Word.
476
- * @tokens rounded-control, border-border-strong, bg-input, text-text-primary,
476
+ * @tokens text-badge, rounded-control, border-border-strong, bg-input, text-text-primary,
477
477
  * text-text-tertiary, hover:bg-subtle, bg-brand-primaryAction, bg-subtle,
478
478
  * bg-surface, border-brand-primaryAction, border-border-default,
479
479
  * border-border-interactive, focus-visible:outline-border-focus,
@@ -592,7 +592,7 @@ declare function SectionRail({ title, titleSerif, subtitle, viewAllLabel, viewAl
592
592
  * formats, for stable report-ready numbers). One boolean, one control,
593
593
  * shared across every dashboard that has this data-finality concept
594
594
  * (Publisher Intel, Opportunities, Sports).
595
- * @tokens rounded-control, border-border-strong, bg-input, hover:bg-subtle,
595
+ * @tokens text-control-caption, rounded-control, border-border-strong, bg-input, hover:bg-subtle,
596
596
  * hover:text-text-primary, focus-visible:outline-border-focus, rounded-card,
597
597
  * border-border-default, bg-surface, shadow-overlay, text-text-primary,
598
598
  * text-text-secondary, text-text-tertiary, text-brand-primaryAction
@@ -630,7 +630,7 @@ declare function DataScopeFilter({ value, onChange, align }: DataScopeFilterProp
630
630
  * `document.body` so the popover is never clipped by a scrollable ancestor
631
631
  * (e.g. inside a modal) -- unlike this package's other chip popovers, none
632
632
  * of which are known to sit inside a clipping container today.
633
- * @tokens rounded-control, rounded-card, border-border-default,
633
+ * @tokens text-control-caption, rounded-control, rounded-card, border-border-default,
634
634
  * border-border-strong, bg-input, bg-surface, shadow-overlay,
635
635
  * text-text-primary, text-text-secondary,
636
636
  * text-text-tertiary, hover:bg-subtle, hover:text-text-primary,
@@ -1466,7 +1466,7 @@ interface PublisherBreakdownListProps {
1466
1466
  * @tokens text-text-primary, text-text-tertiary, text-text-secondary,
1467
1467
  * text-text-link, text-text-warning, text-text-success, text-text-danger,
1468
1468
  * border-border-default, bg-surface, bg-subtle, rounded-control, rounded-full,
1469
- * shadow-overlay, text-micro
1469
+ * shadow-overlay, text-badge
1470
1470
  * @behavior Truncates to `defaultVisibleCount` rows with a "See all (N more)"
1471
1471
  * / "Show less" toggle, unless `viewAllHref` is given, in which case the
1472
1472
  * footer becomes a plain link out instead (e.g. to a full breakdown page).
@@ -1686,7 +1686,7 @@ interface ChipContentProps {
1686
1686
  * @description Shared foundation for filter-bar chip triggers — pairs
1687
1687
  * `chipTriggerClass` with `ChipContent` for the caption/value/icon layout, so
1688
1688
  * every dropdown chip across the app matches.
1689
- * @tokens rounded-control, bg-input, border-border-default, border-border-strong, text-text-secondary, text-text-tertiary, text-text-primary, hover:bg-subtle, focus-visible:outline-border-focus, hover:text-text-primary
1689
+ * @tokens text-control-caption, rounded-control, bg-input, border-border-default, border-border-strong, text-text-secondary, text-text-tertiary, text-text-primary, hover:bg-subtle, focus-visible:outline-border-focus, hover:text-text-primary
1690
1690
  * @behavior `chipTriggerClass` takes a `ChipVariant`: `box` (default, the
1691
1691
  * boxed two-line chip on the default border) or `inline` (same fill, darker
1692
1692
  * stroke, for chips sitting directly on the canvas). It is an argument to
@@ -1856,9 +1856,11 @@ declare const SIZES$1: {
1856
1856
  /** Matches a 15px lucide icon exactly, so a workspace name in a menu row
1857
1857
  * left-aligns with labels in icon-led rows above and below it. */
1858
1858
  readonly xs: "h-[15px] w-[15px] rounded-[4px] text-[8px] tracking-tight";
1859
+ /** 10px, not text-control-caption: that step is for dropdown captions.
1860
+ * Two initials need to sit inside the 24px circle, a step below md. */
1859
1861
  readonly sm: "h-6 w-6 text-[10px]";
1860
- readonly md: "h-7 w-7 text-[11px]";
1861
- readonly lg: "h-11 w-11 text-[15px]";
1862
+ readonly md: "h-7 w-7 text-micro";
1863
+ readonly lg: "h-11 w-11 text-panel-title";
1862
1864
  };
1863
1865
  interface WorkspaceAvatarProps {
1864
1866
  /** Omit for the unscoped "All data workspace". */
package/dist/index.d.ts CHANGED
@@ -56,7 +56,7 @@ declare function InfoTip({ text, size, label, trigger }: InfoTipProps): react.JS
56
56
  * original (and still primary) use, but the copy props make it reusable for
57
57
  * any dimension that's also search-first in its own filter tray, so the
58
58
  * dimension reads the same in the quick bar as it does there.
59
- * @tokens rounded-control, rounded-card, border-border-default, border-border-strong,
59
+ * @tokens text-control-caption, rounded-control, rounded-card, border-border-default, border-border-strong,
60
60
  * border-border-interactive, border-border-focus, bg-surface, bg-input,
61
61
  * shadow-overlay, text-text-primary, text-text-secondary, text-text-tertiary,
62
62
  * text-text-link, bg-brand-primaryAction, text-brand-onprimary,
@@ -408,7 +408,7 @@ declare function CheckBoxBox({ checked, indeterminate, disabled, className }: Ch
408
408
  * a chevron that opens a two-pane picker: preset shortcuts on the left, a
409
409
  * dual-month calendar with range highlighting on the right, Start/End fields,
410
410
  * and Cancel/Apply. Shared by Creative Intel and the Account Review.
411
- * @tokens rounded-control, rounded-card, border-border-default, border-border-strong,
411
+ * @tokens text-control-caption, rounded-control, rounded-card, border-border-default, border-border-strong,
412
412
  * bg-surface, bg-input, bg-subtle, bg-ai-tint, bg-brand-primaryAction, text-brand-onprimary,
413
413
  * shadow-overlay, text-text-primary, text-text-secondary, text-text-tertiary,
414
414
  * hover:bg-subtle, hover:text-text-primary, focus-visible:outline-border-focus
@@ -473,7 +473,7 @@ declare function DateRangeFilter({ caption, defaultValue, value: controlledValue
473
473
  * bordered control, mirroring the legacy Creative Intel search + match-type
474
474
  * modal (Any Word/Exact Match/Contextual/Ad Code), including the Or/And
475
475
  * sub-choice nested under Any Word.
476
- * @tokens rounded-control, border-border-strong, bg-input, text-text-primary,
476
+ * @tokens text-badge, rounded-control, border-border-strong, bg-input, text-text-primary,
477
477
  * text-text-tertiary, hover:bg-subtle, bg-brand-primaryAction, bg-subtle,
478
478
  * bg-surface, border-brand-primaryAction, border-border-default,
479
479
  * border-border-interactive, focus-visible:outline-border-focus,
@@ -592,7 +592,7 @@ declare function SectionRail({ title, titleSerif, subtitle, viewAllLabel, viewAl
592
592
  * formats, for stable report-ready numbers). One boolean, one control,
593
593
  * shared across every dashboard that has this data-finality concept
594
594
  * (Publisher Intel, Opportunities, Sports).
595
- * @tokens rounded-control, border-border-strong, bg-input, hover:bg-subtle,
595
+ * @tokens text-control-caption, rounded-control, border-border-strong, bg-input, hover:bg-subtle,
596
596
  * hover:text-text-primary, focus-visible:outline-border-focus, rounded-card,
597
597
  * border-border-default, bg-surface, shadow-overlay, text-text-primary,
598
598
  * text-text-secondary, text-text-tertiary, text-brand-primaryAction
@@ -630,7 +630,7 @@ declare function DataScopeFilter({ value, onChange, align }: DataScopeFilterProp
630
630
  * `document.body` so the popover is never clipped by a scrollable ancestor
631
631
  * (e.g. inside a modal) -- unlike this package's other chip popovers, none
632
632
  * of which are known to sit inside a clipping container today.
633
- * @tokens rounded-control, rounded-card, border-border-default,
633
+ * @tokens text-control-caption, rounded-control, rounded-card, border-border-default,
634
634
  * border-border-strong, bg-input, bg-surface, shadow-overlay,
635
635
  * text-text-primary, text-text-secondary,
636
636
  * text-text-tertiary, hover:bg-subtle, hover:text-text-primary,
@@ -1466,7 +1466,7 @@ interface PublisherBreakdownListProps {
1466
1466
  * @tokens text-text-primary, text-text-tertiary, text-text-secondary,
1467
1467
  * text-text-link, text-text-warning, text-text-success, text-text-danger,
1468
1468
  * border-border-default, bg-surface, bg-subtle, rounded-control, rounded-full,
1469
- * shadow-overlay, text-micro
1469
+ * shadow-overlay, text-badge
1470
1470
  * @behavior Truncates to `defaultVisibleCount` rows with a "See all (N more)"
1471
1471
  * / "Show less" toggle, unless `viewAllHref` is given, in which case the
1472
1472
  * footer becomes a plain link out instead (e.g. to a full breakdown page).
@@ -1686,7 +1686,7 @@ interface ChipContentProps {
1686
1686
  * @description Shared foundation for filter-bar chip triggers — pairs
1687
1687
  * `chipTriggerClass` with `ChipContent` for the caption/value/icon layout, so
1688
1688
  * every dropdown chip across the app matches.
1689
- * @tokens rounded-control, bg-input, border-border-default, border-border-strong, text-text-secondary, text-text-tertiary, text-text-primary, hover:bg-subtle, focus-visible:outline-border-focus, hover:text-text-primary
1689
+ * @tokens text-control-caption, rounded-control, bg-input, border-border-default, border-border-strong, text-text-secondary, text-text-tertiary, text-text-primary, hover:bg-subtle, focus-visible:outline-border-focus, hover:text-text-primary
1690
1690
  * @behavior `chipTriggerClass` takes a `ChipVariant`: `box` (default, the
1691
1691
  * boxed two-line chip on the default border) or `inline` (same fill, darker
1692
1692
  * stroke, for chips sitting directly on the canvas). It is an argument to
@@ -1856,9 +1856,11 @@ declare const SIZES$1: {
1856
1856
  /** Matches a 15px lucide icon exactly, so a workspace name in a menu row
1857
1857
  * left-aligns with labels in icon-led rows above and below it. */
1858
1858
  readonly xs: "h-[15px] w-[15px] rounded-[4px] text-[8px] tracking-tight";
1859
+ /** 10px, not text-control-caption: that step is for dropdown captions.
1860
+ * Two initials need to sit inside the 24px circle, a step below md. */
1859
1861
  readonly sm: "h-6 w-6 text-[10px]";
1860
- readonly md: "h-7 w-7 text-[11px]";
1861
- readonly lg: "h-11 w-11 text-[15px]";
1862
+ readonly md: "h-7 w-7 text-micro";
1863
+ readonly lg: "h-11 w-11 text-panel-title";
1862
1864
  };
1863
1865
  interface WorkspaceAvatarProps {
1864
1866
  /** Omit for the unscoped "All data workspace". */
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  // <define:__FONT_SIZE_KEYS__>
4
- var define_FONT_SIZE_KEYS_default = ["micro", "xs", "card-title", "dense", "sm", "panel-title", "base", "md", "lg", "xl", "h1"];
4
+ var define_FONT_SIZE_KEYS_default = ["control-caption", "badge", "micro", "xs", "card-title", "dense", "sm", "panel-title", "base", "md", "lg", "xl", "h1"];
5
5
 
6
6
  // src/InfoTip.tsx
7
7
  import { useEffect, useId, useRef, useState } from "react";
@@ -208,7 +208,7 @@ function AdvertiserQuickFilter({
208
208
  children: [
209
209
  icon && /* @__PURE__ */ jsx3("span", { className: "shrink-0 text-text-tertiary", children: icon }),
210
210
  /* @__PURE__ */ jsxs3("span", { className: "flex flex-col gap-1 text-left leading-none", children: [
211
- /* @__PURE__ */ jsx3("span", { className: "text-[10px] uppercase tracking-wide text-text-tertiary", children: caption }),
211
+ /* @__PURE__ */ jsx3("span", { className: "text-control-caption uppercase tracking-wide text-text-tertiary", children: caption }),
212
212
  /* @__PURE__ */ jsx3("span", { className: "text-[12px] font-medium text-text-primary", children: value })
213
213
  ] }),
214
214
  /* @__PURE__ */ jsx3(
@@ -803,7 +803,7 @@ function DateRangeFilter({
803
803
  children: [
804
804
  icon && /* @__PURE__ */ jsx7("span", { className: "shrink-0 text-text-tertiary", children: icon }),
805
805
  /* @__PURE__ */ jsxs6("span", { className: "flex flex-col gap-1 text-left leading-none", children: [
806
- /* @__PURE__ */ jsx7("span", { className: showDates ? "text-[11px] text-text-tertiary" : "text-[10px] uppercase tracking-wide text-text-tertiary", children: showDates ? displayDatesLine : caption }),
806
+ /* @__PURE__ */ jsx7("span", { className: showDates ? "text-[11px] text-text-tertiary" : "text-control-caption uppercase tracking-wide text-text-tertiary", children: showDates ? displayDatesLine : caption }),
807
807
  /* @__PURE__ */ jsx7("span", { className: "text-[12px] font-medium text-text-primary", children: displayValue })
808
808
  ] }),
809
809
  /* @__PURE__ */ jsx7(ChevronDown2, { size: 14, "aria-hidden": "true", className: `shrink-0 text-text-secondary transition-transform ${open ? "rotate-180" : ""}` })
@@ -1115,7 +1115,7 @@ function ModeRow({
1115
1115
  /* @__PURE__ */ jsx8("span", { className: "text-[14px] font-semibold text-text-primary", children: title }),
1116
1116
  /* @__PURE__ */ jsx8(RowInfoTip, { text: infoText })
1117
1117
  ] }),
1118
- badge && /* @__PURE__ */ jsx8("span", { className: "rounded-full bg-subtle px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-text-secondary", children: badge }),
1118
+ badge && /* @__PURE__ */ jsx8("span", { className: "rounded-full bg-subtle px-2 py-0.5 text-badge font-semibold uppercase tracking-wide text-text-secondary", children: badge }),
1119
1119
  extra
1120
1120
  ] }),
1121
1121
  selected && /* @__PURE__ */ jsx8(Check3, { size: 16, strokeWidth: 2.5, "aria-hidden": "true", className: "shrink-0 text-brand-primaryAction" })
@@ -1312,7 +1312,7 @@ function DataScopeFilter({ value, onChange, align = "right" }) {
1312
1312
  className: "flex h-11 items-center gap-2 rounded-control border border-border-strong bg-input px-2.5 text-text-secondary transition-colors hover:bg-subtle hover:text-text-primary focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-border-focus",
1313
1313
  children: [
1314
1314
  /* @__PURE__ */ jsxs9("span", { className: "flex flex-col gap-1 text-left leading-none", children: [
1315
- /* @__PURE__ */ jsx10("span", { className: "text-[10px] uppercase tracking-wide text-text-tertiary", children: "Data" }),
1315
+ /* @__PURE__ */ jsx10("span", { className: "text-control-caption uppercase tracking-wide text-text-tertiary", children: "Data" }),
1316
1316
  /* @__PURE__ */ jsx10("span", { className: "text-[12px] font-medium text-text-primary", children: display })
1317
1317
  ] }),
1318
1318
  /* @__PURE__ */ jsx10(
@@ -1444,7 +1444,7 @@ function SelectFilter({
1444
1444
  ),
1445
1445
  children: [
1446
1446
  /* @__PURE__ */ jsxs10("span", { className: "flex flex-col gap-1 text-left leading-none", children: [
1447
- /* @__PURE__ */ jsx11("span", { className: "text-[10px] uppercase tracking-wide text-text-tertiary", children: caption }),
1447
+ /* @__PURE__ */ jsx11("span", { className: "text-control-caption uppercase tracking-wide text-text-tertiary", children: caption }),
1448
1448
  /* @__PURE__ */ jsx11("span", { className: "text-[12px] font-medium text-text-primary", children: value })
1449
1449
  ] }),
1450
1450
  /* @__PURE__ */ jsx11(
@@ -2755,7 +2755,7 @@ function MetricCells({ spendN, yoy }) {
2755
2755
  return /* @__PURE__ */ jsxs23("span", { className: "flex shrink-0 items-center gap-2 pr-1.5", children: [
2756
2756
  /* @__PURE__ */ jsx25("span", { className: "text-right text-[12px] font-bold tabular-nums text-text-primary", style: { width: COL_CURRENT }, children: fmtM(spendN) }),
2757
2757
  /* @__PURE__ */ jsx25("span", { className: "text-right text-[12px] font-normal tabular-nums text-text-primary", style: { width: COL_PREVIOUS }, children: prior ?? "\u2014" }),
2758
- /* @__PURE__ */ jsx25("span", { className: "flex justify-end", style: { width: COL_YOY }, children: yoy === "NEW" ? /* @__PURE__ */ jsx25("span", { className: "rounded-full bg-status-warning/15 px-1.5 text-micro font-semibold text-text-warning", children: "NEW" }) : /* @__PURE__ */ jsxs23("span", { className: cx9("text-right text-[12px] font-semibold tabular-nums", up ? "text-text-success" : "text-text-danger"), children: [
2758
+ /* @__PURE__ */ jsx25("span", { className: "flex justify-end", style: { width: COL_YOY }, children: yoy === "NEW" ? /* @__PURE__ */ jsx25("span", { className: "rounded-full bg-status-warning/15 px-1.5 text-badge font-semibold text-text-warning", children: "NEW" }) : /* @__PURE__ */ jsxs23("span", { className: cx9("text-right text-[12px] font-semibold tabular-nums", up ? "text-text-success" : "text-text-danger"), children: [
2759
2759
  up ? "+" : "\u2212",
2760
2760
  Math.abs(yoy),
2761
2761
  "%"
@@ -3018,7 +3018,7 @@ function chipTriggerClass(variant = "box") {
3018
3018
  }
3019
3019
  function ChipContent({ caption, value, icon }) {
3020
3020
  const stack = /* @__PURE__ */ jsxs27("span", { className: "flex flex-col gap-1 text-left leading-none", children: [
3021
- /* @__PURE__ */ jsx29("span", { className: "text-[10px] uppercase tracking-wide text-text-tertiary", children: caption }),
3021
+ /* @__PURE__ */ jsx29("span", { className: "text-control-caption uppercase tracking-wide text-text-tertiary", children: caption }),
3022
3022
  /* @__PURE__ */ jsx29("span", { className: "text-[12px] font-medium text-text-primary", children: value })
3023
3023
  ] });
3024
3024
  if (icon) {
@@ -3242,9 +3242,11 @@ var SIZES = {
3242
3242
  /** Matches a 15px lucide icon exactly, so a workspace name in a menu row
3243
3243
  * left-aligns with labels in icon-led rows above and below it. */
3244
3244
  xs: "h-[15px] w-[15px] rounded-[4px] text-[8px] tracking-tight",
3245
+ /** 10px, not text-control-caption: that step is for dropdown captions.
3246
+ * Two initials need to sit inside the 24px circle, a step below md. */
3245
3247
  sm: "h-6 w-6 text-[10px]",
3246
- md: "h-7 w-7 text-[11px]",
3247
- lg: "h-11 w-11 text-[15px]"
3248
+ md: "h-7 w-7 text-micro",
3249
+ lg: "h-11 w-11 text-panel-title"
3248
3250
  };
3249
3251
  function WorkspaceAvatar({ name, size = "md" }) {
3250
3252
  return /* @__PURE__ */ jsx33(
@@ -3528,7 +3530,7 @@ function DateRangePicker({
3528
3530
  className: chipTriggerClass(),
3529
3531
  children: [
3530
3532
  /* @__PURE__ */ jsxs32("span", { className: "flex flex-col gap-1 text-left leading-none", children: [
3531
- /* @__PURE__ */ jsx36("span", { className: "text-[10px] text-text-tertiary", children: spanLabel(value, end) }),
3533
+ /* @__PURE__ */ jsx36("span", { className: "text-control-caption text-text-tertiary", children: spanLabel(value, end) }),
3532
3534
  /* @__PURE__ */ jsx36("span", { className: "text-[12px] font-medium text-text-primary", children: value })
3533
3535
  ] }),
3534
3536
  /* @__PURE__ */ jsx36(ChevronDown10, { size: 14, "aria-hidden": "true", className: cn("shrink-0 text-text-secondary transition-transform", open && "rotate-180") })