@bridge-ds/core 0.18.0 → 0.20.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 (69) hide show
  1. package/LICENSE +17 -0
  2. package/bridge.config.schema.json +21 -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 +26 -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/fidelity.d.ts +12 -1
  16. package/dist/figma-fix-loop.d.ts +153 -0
  17. package/dist/figma-fix-run.d.ts +103 -0
  18. package/dist/figma-fixes.d.ts +169 -0
  19. package/dist/figma-push-github.d.ts +7 -2
  20. package/dist/figma-push.d.ts +15 -2
  21. package/dist/gap-case.d.ts +143 -0
  22. package/dist/github-client.d.ts +31 -0
  23. package/dist/id-map.d.ts +10 -0
  24. package/dist/index.d.ts +17 -0
  25. package/dist/index.js +3996 -818
  26. package/dist/index.js.map +1 -1
  27. package/dist/layered-review.d.ts +2 -0
  28. package/dist/measure-location.d.ts +42 -0
  29. package/dist/measure-status.d.ts +127 -0
  30. package/dist/measure-workflow.d.ts +48 -0
  31. package/dist/measured-only.d.ts +30 -0
  32. package/dist/measured-spec.d.ts +349 -0
  33. package/dist/measured-tokens.d.ts +25 -0
  34. package/dist/motion-docs.d.ts +51 -0
  35. package/dist/node/audit.d.ts +11 -3
  36. package/dist/node/index.d.ts +1 -0
  37. package/dist/node/index.js +1640 -24
  38. package/dist/node/index.js.map +1 -1
  39. package/dist/node/measure-script.d.ts +1 -0
  40. package/dist/node/measure.d.ts +212 -0
  41. package/dist/node/spec-css.d.ts +9 -1
  42. package/dist/node/tokens-script.d.ts +3 -0
  43. package/dist/pr-composer.d.ts +5 -0
  44. package/dist/previews.d.ts +4 -1
  45. package/dist/{prod-branch-DenQkr_e.js → prod-branch-CJZwMfVD.js} +223 -183
  46. package/dist/prod-branch-CJZwMfVD.js.map +1 -0
  47. package/dist/prod-branch.d.ts +1 -1
  48. package/dist/repo-model.d.ts +7 -1
  49. package/dist/{repo-source-CRfhLO87.js → repo-source-CshjjC7x.js} +1485 -629
  50. package/dist/repo-source-CshjjC7x.js.map +1 -0
  51. package/dist/repo-source-github.d.ts +8 -0
  52. package/dist/repo-source.d.ts +6 -0
  53. package/dist/{report-DVEmUr0p.js → report-CE-jHAuw.js} +17 -6
  54. package/dist/{report-DVEmUr0p.js.map → report-CE-jHAuw.js.map} +1 -1
  55. package/dist/requester.d.ts +14 -0
  56. package/dist/requests.d.ts +2 -0
  57. package/dist/review-gate.d.ts +189 -2
  58. package/dist/risk.d.ts +12 -0
  59. package/dist/share-branch.d.ts +1 -1
  60. package/dist/snapshot.d.ts +34 -0
  61. package/dist/suggestion-review.d.ts +45 -2
  62. package/dist/suggestions-github.d.ts +33 -1
  63. package/dist/suggestions.d.ts +6 -0
  64. package/dist/tier1-publish.d.ts +48 -0
  65. package/dist/token-proposal.d.ts +7 -0
  66. package/dist/try-in-product.d.ts +9 -0
  67. package/package.json +1 -1
  68. package/dist/prod-branch-DenQkr_e.js.map +0 -1
  69. package/dist/repo-source-CRfhLO87.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,
@@ -1337,12 +1352,14 @@ function defineConfig(input) {
1337
1352
  }
1338
1353
  } : {},
1339
1354
  ...g.rights ? { rights: normalizeRights(g.rights) } : {},
1340
- ...g.soloOwnerCanApproveBoth === true ? { soloOwnerCanApproveBoth: true } : {}
1355
+ ...g.soloOwnerCanApproveBoth === true ? { soloOwnerCanApproveBoth: true } : {},
1356
+ ...g.leadsPublishTier1 === false ? { leadsPublishTier1: false } : {}
1341
1357
  },
1342
1358
  products: input.products?.length ? input.products.map((p) => ({ ...p })) : DEFAULT_PRODUCTS.map((p) => ({ ...p })),
1343
1359
  changes: input.changes === "direct" ? "direct" : DEFAULT_CHANGES_MODE,
1344
1360
  ...input.storybook?.url ? { storybook: { url: input.storybook.url.trim().replace(/\/+$/, "") } } : {},
1345
1361
  ...input.library?.public === true ? { library: { public: true } } : {},
1362
+ ...input.demo?.viewer?.trim() ? { demo: { viewer: input.demo.viewer.trim(), ...input.demo.role?.trim() ? { role: input.demo.role.trim() } : {} } } : {},
1346
1363
  ...input.audit ? { audit: { ...input.audit } } : {},
1347
1364
  ...input.visualImpact ? { visualImpact: { mode: input.visualImpact.mode === "on-demand" ? "on-demand" : "auto" } } : {},
1348
1365
  ...input.integrations ? { integrations: { ...input.integrations } } : {},
@@ -1464,9 +1481,11 @@ function loadConfig(source) {
1464
1481
  }
1465
1482
  problems.push(...rightsProblems(gov.rights));
1466
1483
  if (gov.soloOwnerCanApproveBoth !== void 0 && typeof gov.soloOwnerCanApproveBoth !== "boolean") problems.push('"governance.soloOwnerCanApproveBoth" must be true or false');
1484
+ if (gov.leadsPublishTier1 !== void 0 && typeof gov.leadsPublishTier1 !== "boolean") problems.push('"governance.leadsPublishTier1" must be true or false');
1467
1485
  }
1468
1486
  }
1469
1487
  problems.push(...visualImpactProblems(d.visualImpact));
1488
+ 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
1489
  if (d.changes !== void 0 && !CHANGES_MODES.includes(d.changes)) problems.push(`"changes" must be "suggest" or "direct" (got ${JSON.stringify(d.changes)})`);
1471
1490
  const sb = d.storybook;
1472
1491
  if (sb !== void 0) {
@@ -1482,6 +1501,14 @@ function loadConfig(source) {
1482
1501
  for (const k of Object.keys(lib)) if (k !== "public") problems.push(`"library.${k}" is not a known key`);
1483
1502
  }
1484
1503
  }
1504
+ const demo = d.demo;
1505
+ if (demo !== void 0) {
1506
+ if (!isObj(demo) || !isStr(demo.viewer) || !demo.viewer.trim()) problems.push('"demo" must be { "viewer" }, for example { "viewer": "Dana", "role": "DS lead" }');
1507
+ else {
1508
+ if (demo.role !== void 0 && !isStr(demo.role)) problems.push('"demo.role" must be a string, for example "DS lead"');
1509
+ for (const k of Object.keys(demo)) if (k !== "viewer" && k !== "role") problems.push(`"demo.${k}" is not a known key`);
1510
+ }
1511
+ }
1485
1512
  problems.push(...productProblems(d.products));
1486
1513
  const audit = d.audit;
1487
1514
  if (audit !== void 0) {
@@ -1526,6 +1553,7 @@ function toConfigJson(config, schema = "./packages/core/bridge.config.schema.jso
1526
1553
  return {
1527
1554
  $schema: schema,
1528
1555
  version: 1,
1556
+ ...config.name ? { name: config.name } : {},
1529
1557
  ...config.repo ? { repo: config.repo } : {},
1530
1558
  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
1559
  modes: Object.fromEntries(Object.entries(config.axes).map(([k, a]) => [k, a.parity ? a : { values: a.values, default: a.default }])),
@@ -1541,6 +1569,7 @@ function toConfigJson(config, schema = "./packages/core/bridge.config.schema.jso
1541
1569
  changes: changesMode(config),
1542
1570
  ...config.storybook ? { storybook: config.storybook } : {},
1543
1571
  ...config.library ? { library: config.library } : {},
1572
+ ...config.demo ? { demo: config.demo } : {},
1544
1573
  ...config.products && !sameProducts(config.products, DEFAULT_PRODUCTS) ? { products: config.products } : {}
1545
1574
  };
1546
1575
  }
@@ -2352,6 +2381,11 @@ const RISK_LABELS = {
2352
2381
  2: "Tier 2: medium risk, design review then design + tech approval",
2353
2382
  3: "Tier 3: token change, needs design + tech approval"
2354
2383
  };
2384
+ function figmaPushTierLabel(tier, changes) {
2385
+ const waits = changes.some((c) => c.kind === "renamed" || c.kind === "removed");
2386
+ 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"}`;
2387
+ }
2388
+ 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
2389
  const BUMP_RANK = { patch: 0, minor: 1, major: 2 };
2356
2390
  const LOW = [/\.md$/, /^docs\//, /\.stories\.tsx?$/, /\.docs\.json$/, /\.test\.tsx?$/, /^\.changeset\//];
2357
2391
  const isSummary = (c) => "kind" in c;
@@ -2588,10 +2622,12 @@ function composePrBody(input) {
2588
2622
  lines.push("## What changed and why", "");
2589
2623
  const o = input.origin;
2590
2624
  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
2625
  const risk = classifyRisk({ tokenChanges: changes });
2594
- lines.push("## Risk tier", "", `- [x] ${risk.label}`, "");
2626
+ const fromFigma = input.fromFigma === true;
2627
+ const kinds = changes.map(summarizeTokenChange);
2628
+ 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."}`);
2629
+ lines.push("");
2630
+ lines.push("## Risk tier", "", `- [x] ${fromFigma ? figmaPushTierLabel(risk.tier, kinds) : risk.label}`, "");
2595
2631
  lines.push("## Changes", "");
2596
2632
  const header = ["Token", "Tier", "Change", "Value (old -> new)", "Contrast (before -> after)"];
2597
2633
  lines.push(`| ${header.join(" | ")} |`, `| ${header.map(() => "---").join(" | ")} |`);
@@ -2865,23 +2901,23 @@ function linkStatus(x) {
2865
2901
  function libraryPreviewState(x) {
2866
2902
  if (x.kind === "suggestion") {
2867
2903
  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 };
2904
+ 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" } };
2905
+ 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
2906
  }
2871
2907
  if (x.kind === "request") {
2872
2908
  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 };
2909
+ 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" } };
2910
+ 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
2911
  }
2876
2912
  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" } };
2913
+ if (x.behindMain === 0) return { key: "switched", sentence: "Your feature uses the published version.", action: null };
2914
+ 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
2915
  }
2880
2916
  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" } };
2917
+ 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 };
2918
+ 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 };
2919
+ 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" } };
2920
+ 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
2921
  }
2886
2922
  const nPieces = (n) => `${n} ${n === 1 ? "piece" : "pieces"}`;
2887
2923
  function productBranchSentence(r, opts = {}) {
@@ -2893,11 +2929,11 @@ function productBranchSentence(r, opts = {}) {
2893
2929
  const by = openers.length === 1 ? openers[0] : "your team";
2894
2930
  const was = n === 1 ? "was" : "were";
2895
2931
  if (linked.length === n) {
2896
- const what = n === 1 ? "a library branch for it" : "library branches for them";
2932
+ const what = n === 1 ? "a library change for it" : "library changes for them";
2897
2933
  return { lead: "Built with the library. ", strong: `${nPieces(n)} ${was} missing`, rest: `, and ${by} opened ${what}.` };
2898
2934
  }
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.` };
2935
+ 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." };
2936
+ 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
2937
  }
2902
2938
  function whyItExists(n, opts = {}) {
2903
2939
  const who = n.author ? opts.names?.[n.author] ?? `@${n.author}` : "A product team";
@@ -2932,7 +2968,7 @@ function proposedTokenPath(nearest, name, category) {
2932
2968
  return [...parts.slice(0, -1), slug].join(".");
2933
2969
  }
2934
2970
  export {
2935
- layoutOptions as $,
2971
+ DEFAULT_TOKEN_PATHS as $,
2936
2972
  formatValue as A,
2937
2973
  resolve as B,
2938
2974
  moveToken as C,
@@ -2959,171 +2995,175 @@ export {
2959
2995
  previewLinks as X,
2960
2996
  findPreviewComment as Y,
2961
2997
  previewsSettled as Z,
2962
- DEFAULT_TOKEN_PATHS as _,
2998
+ baseBranchOf as _,
2963
2999
  proposedTokenPath as a,
2964
- commitMessage as a$,
2965
- buildTokenSet as a0,
2966
- readPreviewComment as a1,
2967
- linkStatus as a2,
2968
- libraryPreviewState as a3,
2969
- parsePiecesRecord as a4,
2970
- libraryBranchPlan as a5,
2971
- NEEDED_BY_LABEL as a6,
2972
- withNeededBy as a7,
2973
- withLink as a8,
2974
- 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_,
3002
- productBranchSentence as aa,
3003
- mergePiecesRecord as ab,
3004
- productOfBranch as ac,
3005
- defaultProduct as ad,
3006
- slugify as ae,
3007
- defineConfig as af,
3008
- globToRegExp as ag,
3009
- ConfigError as ah,
3010
- DEFAULT_CHANGES_MODE as ai,
3011
- DEFAULT_OVERRIDE as aj,
3012
- 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,
3000
+ colorsEqual as a$,
3001
+ layoutOptions as a0,
3002
+ buildTokenSet as a1,
3003
+ readPreviewComment as a2,
3004
+ linkStatus as a3,
3005
+ libraryPreviewState as a4,
3006
+ parsePiecesRecord as a5,
3007
+ libraryBranchPlan as a6,
3008
+ NEEDED_BY_LABEL as a7,
3009
+ withNeededBy as a8,
3010
+ withLink as a9,
3011
+ PREVIEW_COMMENT_MARKER as aA,
3012
+ PREVIEW_PLACEHOLDERS as aB,
3013
+ PRIMITIVE_MODE as aC,
3014
+ PRODUCT_LABEL_PREFIX as aD,
3015
+ RIGHTS as aE,
3016
+ RIGHT_LABEL as aF,
3017
+ RISK_TIER as aG,
3018
+ TEAM_NAME_MAX as aH,
3019
+ TIER_ORDER as aI,
3020
+ TeamDirectory as aJ,
3021
+ VISUAL_CHECKS_DOCS as aK,
3022
+ VISUAL_CHECK_LABEL as aL,
3023
+ VISUAL_WORKFLOW_FILES as aM,
3024
+ affectedContrast as aN,
3025
+ aliasOf as aO,
3026
+ appForProject as aP,
3027
+ appUrl as aQ,
3028
+ approverEntries as aR,
3029
+ approverLists as aS,
3030
+ branchName as aT,
3031
+ branchSlug as aU,
3032
+ canShip as aV,
3033
+ changeKind as aW,
3034
+ changedModes as aX,
3035
+ changesMode as aY,
3036
+ clearRawDeep as aZ,
3037
+ colorToCss as a_,
3038
+ withPiecesRecord as aa,
3039
+ productBranchSentence as ab,
3040
+ mergePiecesRecord as ac,
3041
+ productOfBranch as ad,
3042
+ defaultProduct as ae,
3043
+ slugify as af,
3044
+ defineConfig as ag,
3045
+ globToRegExp as ah,
3046
+ ConfigError as ai,
3047
+ DEFAULT_CHANGES_MODE as aj,
3048
+ DEFAULT_OVERRIDE as ak,
3049
+ DEFAULT_PRODUCTS as al,
3050
+ isGuardrail as am,
3051
+ AAA_MIN as an,
3052
+ AA_MIN as ao,
3053
+ CHANGES_MODES as ap,
3054
+ CONTRAST_CELL_MAX as aq,
3055
+ CONTRAST_CHECKS_FILE as ar,
3056
+ DEFAULT_GOVERNANCE as as,
3057
+ DEFAULT_RIGHTS as at,
3058
+ DEFAULT_VISUAL_IMPACT as au,
3059
+ DTCG_TYPES as av,
3060
+ JsonParseError as aw,
3061
+ LINK_STATUS_TONE as ax,
3062
+ OWNER_GROUPS as ay,
3063
+ PREVIEW_APP_LABELS as az,
3028
3064
  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,
3065
+ productProblems as b$,
3066
+ comboKey as b0,
3067
+ commitMessage as b1,
3068
+ compactJson as b2,
3069
+ composePrBody as b3,
3070
+ composite as b4,
3071
+ contextFor as b5,
3072
+ contrastLevel as b6,
3073
+ contrastPair as b7,
3074
+ contrastRatio as b8,
3075
+ defaultContext as b9,
3076
+ isTeamEntry as bA,
3077
+ isTokenFile as bB,
3078
+ isVercelComment as bC,
3079
+ kindForMin as bD,
3080
+ layeredParityIssues as bE,
3081
+ libraryIsPublic as bF,
3082
+ luminance as bG,
3083
+ nearestQuestion as bH,
3084
+ neededBySection as bI,
3085
+ nodesEqual as bJ,
3086
+ normalizeRights as bK,
3087
+ overrideKey as bL,
3088
+ ownerEntryProblems as bM,
3089
+ pairKey as bN,
3090
+ parseDimension as bO,
3091
+ parseJson as bP,
3092
+ parseNeededBy as bQ,
3093
+ parseOwnerEntry as bR,
3094
+ parseVercelComment as bS,
3095
+ piecesSection as bT,
3096
+ plainEqual as bU,
3097
+ previewComment as bV,
3098
+ previewLinksOf as bW,
3099
+ previewUrl as bX,
3100
+ productForPlace as bY,
3101
+ productLabel as bZ,
3102
+ productMarks as b_,
3103
+ defaultTitle as ba,
3104
+ detectLayout as bb,
3105
+ entriesFor as bc,
3106
+ entryLabel as bd,
3107
+ expandEntries as be,
3108
+ expandOwners as bf,
3109
+ fieldChanges as bg,
3110
+ figmaPushNextLine as bh,
3111
+ figmaPushTierLabel as bi,
3112
+ findProduct as bj,
3113
+ findToken as bk,
3114
+ findVercelComment as bl,
3115
+ flattenLayerFile as bm,
3116
+ formatNumber as bn,
3117
+ formatOwnerEntry as bo,
3118
+ fromPlain as bp,
3119
+ getChild as bq,
3120
+ getEntry as br,
3121
+ groupsPhrase as bs,
3122
+ hasVisualWorkflow as bt,
3123
+ hexToRgba as bu,
3124
+ holdersOf as bv,
3125
+ indexByPath as bw,
3126
+ inheritedTypeAt as bx,
3127
+ installCommand as by,
3128
+ installCommandFromPreviewComment as bz,
3093
3129
  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,
3130
+ productsOf as c0,
3131
+ projectOfLabel as c1,
3132
+ protectedBranchesOf as c2,
3133
+ renderedColor as c3,
3134
+ rgbaToDtcg as c4,
3135
+ rightsProblems as c5,
3136
+ sameProducts as c6,
3137
+ sameToken as c7,
3138
+ serializeJson as c8,
3139
+ shipPolicy as c9,
3140
+ whyItExists as cA,
3141
+ snapshotUrl as ca,
3142
+ soloApprover as cb,
3143
+ soloOwnerOf as cc,
3144
+ soloOwnerSentence as cd,
3145
+ storybookUrl as ce,
3146
+ suggestNearestComment as cf,
3147
+ summarizeTokenChange as cg,
3148
+ tarballAssetName as ch,
3149
+ tarballUrl as ci,
3150
+ teamKey as cj,
3151
+ teamKeyOf as ck,
3152
+ teamName as cl,
3153
+ teamUnreadableMessage as cm,
3154
+ teamsIn as cn,
3155
+ toAlias as co,
3156
+ toMap as cp,
3157
+ toPlain as cq,
3158
+ tokenBump as cr,
3159
+ tokenNode as cs,
3160
+ unreadableShipTeams as ct,
3161
+ unreadableTeams as cu,
3162
+ valueIn as cv,
3163
+ valueToCss as cw,
3164
+ visualImpactProblems as cx,
3165
+ visualOffer as cy,
3166
+ whoCanShipSentence as cz,
3127
3167
  collectRefs as d,
3128
3168
  evaluatePairs as e,
3129
3169
  findReferenceProblems as f,
@@ -3148,4 +3188,4 @@ export {
3148
3188
  parseColor as y,
3149
3189
  rgbaToHex as z
3150
3190
  };
3151
- //# sourceMappingURL=prod-branch-DenQkr_e.js.map
3191
+ //# sourceMappingURL=prod-branch-CJZwMfVD.js.map