@bridge-ds/core 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/bridge.config.schema.json +16 -0
  2. package/dist/activity.d.ts +207 -0
  3. package/dist/audit/index.js +3 -3
  4. package/dist/audit/report.d.ts +17 -2
  5. package/dist/branch-actions.d.ts +7 -1
  6. package/dist/build-requests-github.d.ts +25 -0
  7. package/dist/build-requests.d.ts +403 -0
  8. package/dist/changelog-model.d.ts +102 -0
  9. package/dist/component-spec.d.ts +3 -1
  10. package/dist/config.d.ts +21 -0
  11. package/dist/css-color.d.ts +25 -0
  12. package/dist/docs-proposal.d.ts +1 -0
  13. package/dist/explorations.d.ts +1 -0
  14. package/dist/fidelity-references.d.ts +12 -0
  15. package/dist/figma-fix-loop.d.ts +153 -0
  16. package/dist/figma-fixes.d.ts +169 -0
  17. package/dist/figma-push-github.d.ts +7 -2
  18. package/dist/figma-push.d.ts +15 -2
  19. package/dist/gap-case.d.ts +144 -0
  20. package/dist/github-client.d.ts +31 -0
  21. package/dist/id-map.d.ts +10 -0
  22. package/dist/index.d.ts +14 -0
  23. package/dist/index.js +3944 -774
  24. package/dist/index.js.map +1 -1
  25. package/dist/layered-review.d.ts +2 -0
  26. package/dist/measure-status.d.ts +127 -0
  27. package/dist/measured-only.d.ts +28 -0
  28. package/dist/measured-spec.d.ts +349 -0
  29. package/dist/measured-tokens.d.ts +25 -0
  30. package/dist/motion-docs.d.ts +51 -0
  31. package/dist/node/audit.d.ts +11 -3
  32. package/dist/node/index.d.ts +1 -0
  33. package/dist/node/index.js +1637 -24
  34. package/dist/node/index.js.map +1 -1
  35. package/dist/node/measure-script.d.ts +1 -0
  36. package/dist/node/measure.d.ts +212 -0
  37. package/dist/node/spec-css.d.ts +9 -1
  38. package/dist/node/tokens-script.d.ts +3 -0
  39. package/dist/pr-composer.d.ts +5 -0
  40. package/dist/previews.d.ts +4 -1
  41. package/dist/{prod-branch-DenQkr_e.js → prod-branch-Bdx_2bRQ.js} +197 -159
  42. package/dist/prod-branch-Bdx_2bRQ.js.map +1 -0
  43. package/dist/prod-branch.d.ts +1 -1
  44. package/dist/repo-model.d.ts +5 -1
  45. package/dist/repo-source-github.d.ts +8 -0
  46. package/dist/{repo-source-B4jNZhyC.js → repo-source-m0Tc603o.js} +1406 -629
  47. package/dist/repo-source-m0Tc603o.js.map +1 -0
  48. package/dist/repo-source.d.ts +6 -0
  49. package/dist/{report-DVEmUr0p.js → report-DFPKygfk.js} +17 -6
  50. package/dist/{report-DVEmUr0p.js.map → report-DFPKygfk.js.map} +1 -1
  51. package/dist/requester.d.ts +14 -0
  52. package/dist/requests.d.ts +2 -0
  53. package/dist/review-gate.d.ts +183 -2
  54. package/dist/risk.d.ts +12 -0
  55. package/dist/share-branch.d.ts +1 -1
  56. package/dist/snapshot.d.ts +34 -0
  57. package/dist/suggestion-review.d.ts +2 -0
  58. package/dist/suggestions-github.d.ts +21 -0
  59. package/dist/suggestions.d.ts +6 -0
  60. package/dist/token-proposal.d.ts +7 -0
  61. package/dist/try-in-product.d.ts +9 -0
  62. package/package.json +1 -1
  63. package/dist/prod-branch-DenQkr_e.js.map +0 -1
  64. package/dist/repo-source-B4jNZhyC.js.map +0 -1
@@ -103,7 +103,15 @@ function formatValue(type, value) {
103
103
  if (d) return `${d.value}${d.unit}`;
104
104
  }
105
105
  if (Array.isArray(value)) return value.join(", ");
106
- if (typeof value === "object" && value) return JSON.stringify(value);
106
+ if (typeof value === "object" && value) {
107
+ const o = value;
108
+ if (typeof o.value === "number" && typeof o.unit === "string") return `${o.value}${o.unit}`;
109
+ if (typeof o.hex === "string") {
110
+ const c = parseColor(value);
111
+ return c && c.a < 0.9995 ? `${o.hex.toLowerCase()} @ ${Math.round(c.a * 100)}%` : o.hex.toLowerCase();
112
+ }
113
+ return JSON.stringify(value);
114
+ }
107
115
  return String(value);
108
116
  }
109
117
  const DTCG_TYPES = /* @__PURE__ */ new Set(["color", "dimension", "fontFamily", "fontWeight", "duration", "cubicBezier", "number", "strokeStyle", "border", "transition", "shadow", "gradient", "typography", "fontStyle", "string", "boolean"]);
@@ -762,7 +770,7 @@ function resolveBranchPreviews(apps, ctx, sources = {}) {
762
770
  return out;
763
771
  }
764
772
  const previewLinksOf = (previews) => previews.filter((p) => !!p.url).map((p) => ({ app: p.app, label: p.label, url: p.url }));
765
- const previewsSettled = (previews) => previews.every((p) => !!p.url && (p.state === "ready" || p.state === "failed"));
773
+ const previewsSettled = (previews) => previews.every((p) => p.state === "failed" || !!p.url && p.state === "ready");
766
774
  const LOGIN = /^[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$/;
767
775
  const SLUG = /^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/;
768
776
  function parseOwnerEntry(raw) {
@@ -1200,6 +1208,12 @@ const CONFIG_FILE = "bridge.config.json";
1200
1208
  const CHANGES_MODES = ["suggest", "direct"];
1201
1209
  const DEFAULT_CHANGES_MODE = "suggest";
1202
1210
  const DEFAULT_OVERRIDE = { allowed: [], requireReason: true, minReasonLength: 20 };
1211
+ const TEAM_NAME_MAX = 60;
1212
+ function teamName(value) {
1213
+ if (typeof value !== "string") return void 0;
1214
+ const v = value.trim().replace(/\s+/g, " ");
1215
+ return v && v.length <= TEAM_NAME_MAX ? v : void 0;
1216
+ }
1203
1217
  const DEFAULT_TOKEN_PATHS = {
1204
1218
  root: "tokens",
1205
1219
  primitives: "primitives",
@@ -1305,6 +1319,7 @@ function defineConfig(input) {
1305
1319
  const g = input.governance ?? {};
1306
1320
  const contrastFile = contrastPath ?? [root === "." ? "" : root, paths.contrastChecks].filter(Boolean).join("/");
1307
1321
  return {
1322
+ ...teamName(input.name) ? { name: teamName(input.name) } : {},
1308
1323
  repo: parseRepoInput(input.repo, input.branch),
1309
1324
  tokens: { ...paths, include: input.tokens?.include ?? ["**/*.tokens.json"], exclude: input.tokens?.exclude ?? [], tiers, layers, ...t.usage ? { usage: trimSlashes(t.usage) } : {} },
1310
1325
  axes,
@@ -1343,6 +1358,7 @@ function defineConfig(input) {
1343
1358
  changes: input.changes === "direct" ? "direct" : DEFAULT_CHANGES_MODE,
1344
1359
  ...input.storybook?.url ? { storybook: { url: input.storybook.url.trim().replace(/\/+$/, "") } } : {},
1345
1360
  ...input.library?.public === true ? { library: { public: true } } : {},
1361
+ ...input.demo?.viewer?.trim() ? { demo: { viewer: input.demo.viewer.trim(), ...input.demo.role?.trim() ? { role: input.demo.role.trim() } : {} } } : {},
1346
1362
  ...input.audit ? { audit: { ...input.audit } } : {},
1347
1363
  ...input.visualImpact ? { visualImpact: { mode: input.visualImpact.mode === "on-demand" ? "on-demand" : "auto" } } : {},
1348
1364
  ...input.integrations ? { integrations: { ...input.integrations } } : {},
@@ -1467,6 +1483,7 @@ function loadConfig(source) {
1467
1483
  }
1468
1484
  }
1469
1485
  problems.push(...visualImpactProblems(d.visualImpact));
1486
+ if (d.name !== void 0 && teamName(d.name) === void 0) problems.push(`"name" must be the team's name, 1 to ${TEAM_NAME_MAX} characters`);
1470
1487
  if (d.changes !== void 0 && !CHANGES_MODES.includes(d.changes)) problems.push(`"changes" must be "suggest" or "direct" (got ${JSON.stringify(d.changes)})`);
1471
1488
  const sb = d.storybook;
1472
1489
  if (sb !== void 0) {
@@ -1482,6 +1499,14 @@ function loadConfig(source) {
1482
1499
  for (const k of Object.keys(lib)) if (k !== "public") problems.push(`"library.${k}" is not a known key`);
1483
1500
  }
1484
1501
  }
1502
+ const demo = d.demo;
1503
+ if (demo !== void 0) {
1504
+ if (!isObj(demo) || !isStr(demo.viewer) || !demo.viewer.trim()) problems.push('"demo" must be { "viewer" }, for example { "viewer": "Dana", "role": "DS lead" }');
1505
+ else {
1506
+ if (demo.role !== void 0 && !isStr(demo.role)) problems.push('"demo.role" must be a string, for example "DS lead"');
1507
+ for (const k of Object.keys(demo)) if (k !== "viewer" && k !== "role") problems.push(`"demo.${k}" is not a known key`);
1508
+ }
1509
+ }
1485
1510
  problems.push(...productProblems(d.products));
1486
1511
  const audit = d.audit;
1487
1512
  if (audit !== void 0) {
@@ -1526,6 +1551,7 @@ function toConfigJson(config, schema = "./packages/core/bridge.config.schema.jso
1526
1551
  return {
1527
1552
  $schema: schema,
1528
1553
  version: 1,
1554
+ ...config.name ? { name: config.name } : {},
1529
1555
  ...config.repo ? { repo: config.repo } : {},
1530
1556
  tokens: { root: config.tokens.root, include: config.tokens.include, ...config.tokens.exclude.length ? { exclude: config.tokens.exclude } : {}, tiers: config.tokens.tiers, layers: config.tokens.layers.map((l) => l.optional ? l : { files: l.files }), ...config.tokens.usage ? { usage: config.tokens.usage } : {} },
1531
1557
  modes: Object.fromEntries(Object.entries(config.axes).map(([k, a]) => [k, a.parity ? a : { values: a.values, default: a.default }])),
@@ -1541,6 +1567,7 @@ function toConfigJson(config, schema = "./packages/core/bridge.config.schema.jso
1541
1567
  changes: changesMode(config),
1542
1568
  ...config.storybook ? { storybook: config.storybook } : {},
1543
1569
  ...config.library ? { library: config.library } : {},
1570
+ ...config.demo ? { demo: config.demo } : {},
1544
1571
  ...config.products && !sameProducts(config.products, DEFAULT_PRODUCTS) ? { products: config.products } : {}
1545
1572
  };
1546
1573
  }
@@ -2352,6 +2379,11 @@ const RISK_LABELS = {
2352
2379
  2: "Tier 2: medium risk, design review then design + tech approval",
2353
2380
  3: "Tier 3: token change, needs design + tech approval"
2354
2381
  };
2382
+ function figmaPushTierLabel(tier, changes) {
2383
+ const waits = changes.some((c) => c.kind === "renamed" || c.kind === "removed");
2384
+ return `Tier ${tier}: token change. From Figma: design-approved, ${waits ? "waits for a developer OK (a token renamed or removed can break product code)" : "ships once the checks pass"}`;
2385
+ }
2386
+ const figmaPushNextLine = (changes) => changes.some((c) => c.kind === "renamed" || c.kind === "removed") ? "Pushed from Figma, so design-approved. A developer OKs the rename or removal before it merges." : "Pushed from Figma, so design-approved. Bridge merges it once the automatic checks pass; Undo is in History in Bridge Studio.";
2355
2387
  const BUMP_RANK = { patch: 0, minor: 1, major: 2 };
2356
2388
  const LOW = [/\.md$/, /^docs\//, /\.stories\.tsx?$/, /\.docs\.json$/, /\.test\.tsx?$/, /^\.changeset\//];
2357
2389
  const isSummary = (c) => "kind" in c;
@@ -2588,10 +2620,12 @@ function composePrBody(input) {
2588
2620
  lines.push("## What changed and why", "");
2589
2621
  const o = input.origin;
2590
2622
  lines.push(input.notes.trim() || `Token edits made in ${o.surface}${o.location ? ` ("${o.location}")` : ""}, exported with ${o.tool}.`);
2591
- lines.push("", `Opened from ${o.tool}. ${o.surface} is the editing surface; this PR is the change. Nothing is merged until it is reviewed.`);
2592
- lines.push("");
2593
2623
  const risk = classifyRisk({ tokenChanges: changes });
2594
- lines.push("## Risk tier", "", `- [x] ${risk.label}`, "");
2624
+ const fromFigma = input.fromFigma === true;
2625
+ const kinds = changes.map(summarizeTokenChange);
2626
+ lines.push("", `Opened from ${o.tool}. ${o.surface} is the editing surface; this PR is the change. ${fromFigma ? figmaPushNextLine(kinds) : "Nothing is merged until it is reviewed."}`);
2627
+ lines.push("");
2628
+ lines.push("## Risk tier", "", `- [x] ${fromFigma ? figmaPushTierLabel(risk.tier, kinds) : risk.label}`, "");
2595
2629
  lines.push("## Changes", "");
2596
2630
  const header = ["Token", "Tier", "Change", "Value (old -> new)", "Contrast (before -> after)"];
2597
2631
  lines.push(`| ${header.join(" | ")} |`, `| ${header.map(() => "---").join(" | ")} |`);
@@ -2865,23 +2899,23 @@ function linkStatus(x) {
2865
2899
  function libraryPreviewState(x) {
2866
2900
  if (x.kind === "suggestion") {
2867
2901
  if (x.lifecycle === "closed") return { key: "declined", sentence: `The library declined this suggestion.${x.nearest ? ` Ask Claude to use ${x.nearest} instead.` : ""}`, action: null };
2868
- if (x.lifecycle === "merged") return x.behindMain === 0 ? { key: "switched", sentence: "Your branch uses the published version.", action: null } : { key: "published", sentence: "The library applied the suggestion. Switch your branch to the published version.", action: { kind: "switch", label: "Switch to the published version" } };
2869
- return { key: "nothing-yet", sentence: "Nothing to preview yet: owners review the suggestion, then a developer applies it. Your branch keeps its own value until then.", action: null };
2902
+ if (x.lifecycle === "merged") return x.behindMain === 0 ? { key: "switched", sentence: "Your feature uses the published version.", action: null } : { key: "published", sentence: "The library applied the suggestion. Switch your feature to the published version.", action: { kind: "switch", label: "Switch to the published version" } };
2903
+ return { key: "nothing-yet", sentence: "Nothing to preview yet: owners review the suggestion, then a developer applies it. Your feature keeps its own value until then.", action: null };
2870
2904
  }
2871
2905
  if (x.kind === "request") {
2872
2906
  if (x.lifecycle === "closed") return { key: "declined", sentence: `The library declined this request.${x.nearest ? ` Ask Claude to use ${x.nearest} instead.` : ""}`, action: null };
2873
- if (x.lifecycle === "merged") return x.behindMain === 0 ? { key: "switched", sentence: "Your branch uses the published version.", action: null } : { key: "published", sentence: "The library built it. Switch your branch to the published version, then ask Claude to use it.", action: { kind: "switch", label: "Switch to the published version" } };
2874
- return { key: "nothing-yet", sentence: "Nothing to preview yet: the library builds it first. Your branch keeps its own version until then.", action: null };
2907
+ if (x.lifecycle === "merged") return x.behindMain === 0 ? { key: "switched", sentence: "Your feature uses the published version.", action: null } : { key: "published", sentence: "The library built it. Switch your feature to the published version, then ask Claude to use it.", action: { kind: "switch", label: "Switch to the published version" } };
2908
+ return { key: "nothing-yet", sentence: "Nothing to preview yet: the library builds it first. Your feature keeps its own version until then.", action: null };
2875
2909
  }
2876
2910
  if (x.lifecycle === "merged") {
2877
- if (x.behindMain === 0) return { key: "switched", sentence: "Your branch uses the published version.", action: null };
2878
- return { key: "published", sentence: "The library published it. Switch your branch to the published version.", action: { kind: "switch", label: "Switch to the published version" } };
2911
+ if (x.behindMain === 0) return { key: "switched", sentence: "Your feature uses the published version.", action: null };
2912
+ return { key: "published", sentence: "The library published it. Switch your feature to the published version.", action: { kind: "switch", label: "Switch to the published version" } };
2879
2913
  }
2880
2914
  if (x.lifecycle === "closed") return { key: "declined", sentence: `The library closed it without shipping.${x.nearest ? ` Ask Claude to use ${x.nearest} instead.` : ""}`, action: null };
2881
- if (!x.hasChanges) return { key: "nothing-yet", sentence: "The library branch has no change yet. Claude adds it there, then your branch can use its preview.", action: null };
2882
- if (x.missing === 0) return { key: "preview", sentence: "Your branch uses a preview of the library branch. When the library publishes it, switch to the real version here in one click.", action: null };
2883
- if (x.missing !== null && x.total !== null && x.missing < x.total) return { key: "outdated", sentence: "The library branch changed since your branch took its preview.", action: { kind: "refresh-preview", label: "Get the latest preview" } };
2884
- return { key: "not-used", sentence: "Your branch does not use the library branch yet.", action: { kind: "use-preview", label: "Use its preview in my branch" } };
2915
+ if (!x.hasChanges) return { key: "nothing-yet", sentence: "The library change has nothing in it yet. Claude adds it there, then your feature can use its preview.", action: null };
2916
+ if (x.missing === 0) return { key: "preview", sentence: "Your feature uses a preview of the library change. When the library publishes it, switch to the real version here in one click.", action: null };
2917
+ if (x.missing !== null && x.total !== null && x.missing < x.total) return { key: "outdated", sentence: "The library change changed since your feature took its preview.", action: { kind: "refresh-preview", label: "Get the latest preview" } };
2918
+ return { key: "not-used", sentence: "Your feature does not use the library change yet.", action: { kind: "use-preview", label: "Use its preview in my feature" } };
2885
2919
  }
2886
2920
  const nPieces = (n) => `${n} ${n === 1 ? "piece" : "pieces"}`;
2887
2921
  function productBranchSentence(r, opts = {}) {
@@ -2893,11 +2927,11 @@ function productBranchSentence(r, opts = {}) {
2893
2927
  const by = openers.length === 1 ? openers[0] : "your team";
2894
2928
  const was = n === 1 ? "was" : "were";
2895
2929
  if (linked.length === n) {
2896
- const what = n === 1 ? "a library branch for it" : "library branches for them";
2930
+ const what = n === 1 ? "a library change for it" : "library changes for them";
2897
2931
  return { lead: "Built with the library. ", strong: `${nPieces(n)} ${was} missing`, rest: `, and ${by} opened ${what}.` };
2898
2932
  }
2899
- if (!linked.length) return { lead: "Built with the library. ", strong: `${nPieces(n)} ${n === 1 ? "is" : "are"} missing`, rest: n === 1 ? ": open a library branch for it." : ": open a library branch for each." };
2900
- return { lead: "Built with the library. ", strong: `${nPieces(n)} ${was} missing`, rest: `: ${linked.length} ${linked.length === 1 ? "has" : "have"} a library branch, ${n - linked.length} still ${n - linked.length === 1 ? "needs" : "need"} one.` };
2933
+ if (!linked.length) return { lead: "Built with the library. ", strong: `${nPieces(n)} ${n === 1 ? "is" : "are"} missing`, rest: n === 1 ? ": open a library change for it." : ": open a library change for each." };
2934
+ return { lead: "Built with the library. ", strong: `${nPieces(n)} ${was} missing`, rest: `: ${linked.length} ${linked.length === 1 ? "has" : "have"} a library change, ${n - linked.length} still ${n - linked.length === 1 ? "needs" : "need"} one.` };
2901
2935
  }
2902
2936
  function whyItExists(n, opts = {}) {
2903
2937
  const who = n.author ? opts.names?.[n.author] ?? `@${n.author}` : "A product team";
@@ -2961,7 +2995,7 @@ export {
2961
2995
  previewsSettled as Z,
2962
2996
  DEFAULT_TOKEN_PATHS as _,
2963
2997
  proposedTokenPath as a,
2964
- commitMessage as a$,
2998
+ colorsEqual as a$,
2965
2999
  buildTokenSet as a0,
2966
3000
  readPreviewComment as a1,
2967
3001
  linkStatus as a2,
@@ -2972,33 +3006,33 @@ export {
2972
3006
  withNeededBy as a7,
2973
3007
  withLink as a8,
2974
3008
  withPiecesRecord as a9,
2975
- PRIMITIVE_MODE as aA,
2976
- PRODUCT_LABEL_PREFIX as aB,
2977
- RIGHTS as aC,
2978
- RIGHT_LABEL as aD,
2979
- RISK_TIER as aE,
2980
- TIER_ORDER as aF,
2981
- TeamDirectory as aG,
2982
- VISUAL_CHECKS_DOCS as aH,
2983
- VISUAL_CHECK_LABEL as aI,
2984
- VISUAL_WORKFLOW_FILES as aJ,
2985
- affectedContrast as aK,
2986
- aliasOf as aL,
2987
- appForProject as aM,
2988
- appUrl as aN,
2989
- approverEntries as aO,
2990
- approverLists as aP,
2991
- baseBranchOf as aQ,
2992
- branchName as aR,
2993
- branchSlug as aS,
2994
- canShip as aT,
2995
- changeKind as aU,
2996
- changedModes as aV,
2997
- changesMode as aW,
2998
- clearRawDeep as aX,
2999
- colorToCss as aY,
3000
- colorsEqual as aZ,
3001
- comboKey as a_,
3009
+ PREVIEW_PLACEHOLDERS as aA,
3010
+ PRIMITIVE_MODE as aB,
3011
+ PRODUCT_LABEL_PREFIX as aC,
3012
+ RIGHTS as aD,
3013
+ RIGHT_LABEL as aE,
3014
+ RISK_TIER as aF,
3015
+ TEAM_NAME_MAX as aG,
3016
+ TIER_ORDER as aH,
3017
+ TeamDirectory as aI,
3018
+ VISUAL_CHECKS_DOCS as aJ,
3019
+ VISUAL_CHECK_LABEL as aK,
3020
+ VISUAL_WORKFLOW_FILES as aL,
3021
+ affectedContrast as aM,
3022
+ aliasOf as aN,
3023
+ appForProject as aO,
3024
+ appUrl as aP,
3025
+ approverEntries as aQ,
3026
+ approverLists as aR,
3027
+ baseBranchOf as aS,
3028
+ branchName as aT,
3029
+ branchSlug as aU,
3030
+ canShip as aV,
3031
+ changeKind as aW,
3032
+ changedModes as aX,
3033
+ changesMode as aY,
3034
+ clearRawDeep as aZ,
3035
+ colorToCss as a_,
3002
3036
  productBranchSentence as aa,
3003
3037
  mergePiecesRecord as ab,
3004
3038
  productOfBranch as ac,
@@ -3010,120 +3044,124 @@ export {
3010
3044
  DEFAULT_CHANGES_MODE as ai,
3011
3045
  DEFAULT_OVERRIDE as aj,
3012
3046
  DEFAULT_PRODUCTS as ak,
3013
- AAA_MIN as al,
3014
- AA_MIN as am,
3015
- CHANGES_MODES as an,
3016
- CONTRAST_CELL_MAX as ao,
3017
- CONTRAST_CHECKS_FILE as ap,
3018
- DEFAULT_GOVERNANCE as aq,
3019
- DEFAULT_RIGHTS as ar,
3020
- DEFAULT_VISUAL_IMPACT as as,
3021
- DTCG_TYPES as at,
3022
- JsonParseError as au,
3023
- LINK_STATUS_TONE as av,
3024
- OWNER_GROUPS as aw,
3025
- PREVIEW_APP_LABELS as ax,
3026
- PREVIEW_COMMENT_MARKER as ay,
3027
- PREVIEW_PLACEHOLDERS as az,
3047
+ isGuardrail as al,
3048
+ AAA_MIN as am,
3049
+ AA_MIN as an,
3050
+ CHANGES_MODES as ao,
3051
+ CONTRAST_CELL_MAX as ap,
3052
+ CONTRAST_CHECKS_FILE as aq,
3053
+ DEFAULT_GOVERNANCE as ar,
3054
+ DEFAULT_RIGHTS as as,
3055
+ DEFAULT_VISUAL_IMPACT as at,
3056
+ DTCG_TYPES as au,
3057
+ JsonParseError as av,
3058
+ LINK_STATUS_TONE as aw,
3059
+ OWNER_GROUPS as ax,
3060
+ PREVIEW_APP_LABELS as ay,
3061
+ PREVIEW_COMMENT_MARKER as az,
3028
3062
  modesOf as b,
3029
- protectedBranchesOf as b$,
3030
- compactJson as b0,
3031
- composePrBody as b1,
3032
- composite as b2,
3033
- contextFor as b3,
3034
- contrastLevel as b4,
3035
- contrastPair as b5,
3036
- contrastRatio as b6,
3037
- defaultContext as b7,
3038
- defaultTitle as b8,
3039
- detectLayout as b9,
3040
- kindForMin as bA,
3041
- layeredParityIssues as bB,
3042
- libraryIsPublic as bC,
3043
- luminance as bD,
3044
- nearestQuestion as bE,
3045
- neededBySection as bF,
3046
- nodesEqual as bG,
3047
- normalizeRights as bH,
3048
- overrideKey as bI,
3049
- ownerEntryProblems as bJ,
3050
- pairKey as bK,
3051
- parseDimension as bL,
3052
- parseJson as bM,
3053
- parseNeededBy as bN,
3054
- parseOwnerEntry as bO,
3055
- parseVercelComment as bP,
3056
- piecesSection as bQ,
3057
- plainEqual as bR,
3058
- previewComment as bS,
3059
- previewLinksOf as bT,
3060
- previewUrl as bU,
3061
- productForPlace as bV,
3062
- productLabel as bW,
3063
- productMarks as bX,
3064
- productProblems as bY,
3065
- productsOf as bZ,
3066
- projectOfLabel as b_,
3067
- entriesFor as ba,
3068
- entryLabel as bb,
3069
- expandEntries as bc,
3070
- expandOwners as bd,
3071
- fieldChanges as be,
3072
- findProduct as bf,
3073
- findToken as bg,
3074
- findVercelComment as bh,
3075
- flattenLayerFile as bi,
3076
- formatNumber as bj,
3077
- formatOwnerEntry as bk,
3078
- fromPlain as bl,
3079
- getChild as bm,
3080
- getEntry as bn,
3081
- groupsPhrase as bo,
3082
- hasVisualWorkflow as bp,
3083
- hexToRgba as bq,
3084
- holdersOf as br,
3085
- indexByPath as bs,
3086
- inheritedTypeAt as bt,
3087
- installCommand as bu,
3088
- installCommandFromPreviewComment as bv,
3089
- isGuardrail as bw,
3090
- isTeamEntry as bx,
3091
- isTokenFile as by,
3092
- isVercelComment as bz,
3063
+ productProblems as b$,
3064
+ comboKey as b0,
3065
+ commitMessage as b1,
3066
+ compactJson as b2,
3067
+ composePrBody as b3,
3068
+ composite as b4,
3069
+ contextFor as b5,
3070
+ contrastLevel as b6,
3071
+ contrastPair as b7,
3072
+ contrastRatio as b8,
3073
+ defaultContext as b9,
3074
+ isTeamEntry as bA,
3075
+ isTokenFile as bB,
3076
+ isVercelComment as bC,
3077
+ kindForMin as bD,
3078
+ layeredParityIssues as bE,
3079
+ libraryIsPublic as bF,
3080
+ luminance as bG,
3081
+ nearestQuestion as bH,
3082
+ neededBySection as bI,
3083
+ nodesEqual as bJ,
3084
+ normalizeRights as bK,
3085
+ overrideKey as bL,
3086
+ ownerEntryProblems as bM,
3087
+ pairKey as bN,
3088
+ parseDimension as bO,
3089
+ parseJson as bP,
3090
+ parseNeededBy as bQ,
3091
+ parseOwnerEntry as bR,
3092
+ parseVercelComment as bS,
3093
+ piecesSection as bT,
3094
+ plainEqual as bU,
3095
+ previewComment as bV,
3096
+ previewLinksOf as bW,
3097
+ previewUrl as bX,
3098
+ productForPlace as bY,
3099
+ productLabel as bZ,
3100
+ productMarks as b_,
3101
+ defaultTitle as ba,
3102
+ detectLayout as bb,
3103
+ entriesFor as bc,
3104
+ entryLabel as bd,
3105
+ expandEntries as be,
3106
+ expandOwners as bf,
3107
+ fieldChanges as bg,
3108
+ figmaPushNextLine as bh,
3109
+ figmaPushTierLabel as bi,
3110
+ findProduct as bj,
3111
+ findToken as bk,
3112
+ findVercelComment as bl,
3113
+ flattenLayerFile as bm,
3114
+ formatNumber as bn,
3115
+ formatOwnerEntry as bo,
3116
+ fromPlain as bp,
3117
+ getChild as bq,
3118
+ getEntry as br,
3119
+ groupsPhrase as bs,
3120
+ hasVisualWorkflow as bt,
3121
+ hexToRgba as bu,
3122
+ holdersOf as bv,
3123
+ indexByPath as bw,
3124
+ inheritedTypeAt as bx,
3125
+ installCommand as by,
3126
+ installCommandFromPreviewComment as bz,
3093
3127
  TIER_AXIS as c,
3094
- renderedColor as c0,
3095
- rgbaToDtcg as c1,
3096
- rightsProblems as c2,
3097
- sameProducts as c3,
3098
- sameToken as c4,
3099
- serializeJson as c5,
3100
- shipPolicy as c6,
3101
- snapshotUrl as c7,
3102
- soloApprover as c8,
3103
- soloOwnerOf as c9,
3104
- soloOwnerSentence as ca,
3105
- storybookUrl as cb,
3106
- suggestNearestComment as cc,
3107
- summarizeTokenChange as cd,
3108
- tarballAssetName as ce,
3109
- tarballUrl as cf,
3110
- teamKey as cg,
3111
- teamKeyOf as ch,
3112
- teamUnreadableMessage as ci,
3113
- teamsIn as cj,
3114
- toAlias as ck,
3115
- toMap as cl,
3116
- toPlain as cm,
3117
- tokenBump as cn,
3118
- tokenNode as co,
3119
- unreadableShipTeams as cp,
3120
- unreadableTeams as cq,
3121
- valueIn as cr,
3122
- valueToCss as cs,
3123
- visualImpactProblems as ct,
3124
- visualOffer as cu,
3125
- whoCanShipSentence as cv,
3126
- whyItExists as cw,
3128
+ productsOf as c0,
3129
+ projectOfLabel as c1,
3130
+ protectedBranchesOf as c2,
3131
+ renderedColor as c3,
3132
+ rgbaToDtcg as c4,
3133
+ rightsProblems as c5,
3134
+ sameProducts as c6,
3135
+ sameToken as c7,
3136
+ serializeJson as c8,
3137
+ shipPolicy as c9,
3138
+ whyItExists as cA,
3139
+ snapshotUrl as ca,
3140
+ soloApprover as cb,
3141
+ soloOwnerOf as cc,
3142
+ soloOwnerSentence as cd,
3143
+ storybookUrl as ce,
3144
+ suggestNearestComment as cf,
3145
+ summarizeTokenChange as cg,
3146
+ tarballAssetName as ch,
3147
+ tarballUrl as ci,
3148
+ teamKey as cj,
3149
+ teamKeyOf as ck,
3150
+ teamName as cl,
3151
+ teamUnreadableMessage as cm,
3152
+ teamsIn as cn,
3153
+ toAlias as co,
3154
+ toMap as cp,
3155
+ toPlain as cq,
3156
+ tokenBump as cr,
3157
+ tokenNode as cs,
3158
+ unreadableShipTeams as ct,
3159
+ unreadableTeams as cu,
3160
+ valueIn as cv,
3161
+ valueToCss as cw,
3162
+ visualImpactProblems as cx,
3163
+ visualOffer as cy,
3164
+ whoCanShipSentence as cz,
3127
3165
  collectRefs as d,
3128
3166
  evaluatePairs as e,
3129
3167
  findReferenceProblems as f,
@@ -3148,4 +3186,4 @@ export {
3148
3186
  parseColor as y,
3149
3187
  rgbaToHex as z
3150
3188
  };
3151
- //# sourceMappingURL=prod-branch-DenQkr_e.js.map
3189
+ //# sourceMappingURL=prod-branch-Bdx_2bRQ.js.map