@fragments-sdk/cli 0.7.9 → 0.7.11

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 (106) hide show
  1. package/dist/bin.js +13 -13
  2. package/dist/bin.js.map +1 -1
  3. package/dist/{chunk-CWKQQR6C.js → chunk-57OW43NL.js} +3 -3
  4. package/dist/chunk-57OW43NL.js.map +1 -0
  5. package/dist/{chunk-AA6CAHCZ.js → chunk-7CRC46HV.js} +2 -2
  6. package/dist/chunk-7CRC46HV.js.map +1 -0
  7. package/dist/{chunk-3JPJTU25.js → chunk-CRTN6BIW.js} +5 -5
  8. package/dist/chunk-CRTN6BIW.js.map +1 -0
  9. package/dist/{chunk-LHIIBI6F.js → chunk-M42XIHPV.js} +2 -2
  10. package/dist/{chunk-2EFVPE5Q.js → chunk-TQOGBAOZ.js} +2 -2
  11. package/dist/chunk-TQOGBAOZ.js.map +1 -0
  12. package/dist/core/index.d.ts +1944 -0
  13. package/dist/{core-YAPWXDZW.js → core/index.js} +5 -5
  14. package/dist/defineFragment-C6PFzZyo.d.ts +656 -0
  15. package/dist/{generate-LEBVZCCH.js → generate-ZPERYZLF.js} +4 -4
  16. package/dist/index.d.ts +4 -159
  17. package/dist/index.js +9 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/{init-4VXL3Q6N.js → init-GID2DXB3.js} +69 -7
  20. package/dist/init-GID2DXB3.js.map +1 -0
  21. package/dist/mcp-bin.js +3 -3
  22. package/dist/{scan-3NYSRF6G.js → scan-BSMLGBX4.js} +5 -5
  23. package/dist/{service-HL6TMP3B.js → service-QACVPR37.js} +3 -3
  24. package/dist/{static-viewer-KLD24I4R.js → static-viewer-2RQD5QLR.js} +3 -3
  25. package/dist/{test-Y7YZOJLE.js → test-36UELXTE.js} +3 -3
  26. package/dist/{tokens-M4FCJKBK.js → tokens-A3BZIQPB.js} +4 -4
  27. package/dist/{viewer-ZWQQ74FV.js → viewer-CNLZQUFO.js} +156 -32
  28. package/dist/viewer-CNLZQUFO.js.map +1 -0
  29. package/package.json +8 -2
  30. package/src/commands/add.ts +1 -1
  31. package/src/commands/init.ts +84 -4
  32. package/src/core/defineFragment.ts +1 -1
  33. package/src/core/figma.ts +1 -1
  34. package/src/core/index.ts +2 -2
  35. package/src/core/loader.ts +3 -3
  36. package/src/core/schema.ts +1 -1
  37. package/src/index.ts +6 -0
  38. package/src/migrate/converter.ts +1 -1
  39. package/src/service/snippet-validation.test.ts +5 -5
  40. package/src/service/snippet-validation.ts +0 -1
  41. package/src/viewer/__tests__/viewer-integration.test.ts +16 -23
  42. package/src/viewer/components/AccessibilityPanel.tsx +1 -1
  43. package/src/viewer/components/ActionsPanel.tsx +1 -1
  44. package/src/viewer/components/App.tsx +563 -166
  45. package/src/viewer/components/BottomPanel.tsx +1 -1
  46. package/src/viewer/components/CodePanel.naming.test.tsx +1 -2
  47. package/src/viewer/components/CodePanel.tsx +1 -2
  48. package/src/viewer/components/CommandPalette.tsx +1 -1
  49. package/src/viewer/components/ComponentGraph.tsx +1 -1
  50. package/src/viewer/components/ComponentHeader.tsx +1 -1
  51. package/src/viewer/components/ContractPanel.tsx +1 -1
  52. package/src/viewer/components/ErrorBoundary.tsx +1 -1
  53. package/src/viewer/components/HealthDashboard.tsx +1 -1
  54. package/src/viewer/components/HmrStatusIndicator.tsx +1 -1
  55. package/src/viewer/components/InteractionsPanel.tsx +1 -1
  56. package/src/viewer/components/IsolatedRender.tsx +1 -1
  57. package/src/viewer/components/KeyboardShortcutsHelp.tsx +1 -1
  58. package/src/viewer/components/LandingPage.tsx +1 -1
  59. package/src/viewer/components/Layout.tsx +16 -13
  60. package/src/viewer/components/LeftSidebar.tsx +105 -18
  61. package/src/viewer/components/MultiViewportPreview.tsx +1 -1
  62. package/src/viewer/components/PreviewArea.tsx +22 -13
  63. package/src/viewer/components/PreviewFrameHost.tsx +0 -4
  64. package/src/viewer/components/PreviewToolbar.tsx +1 -1
  65. package/src/viewer/components/PropsEditor.tsx +1 -1
  66. package/src/viewer/components/PropsTable.tsx +1 -1
  67. package/src/viewer/components/RightSidebar.tsx +1 -1
  68. package/src/viewer/components/ScreenshotButton.tsx +1 -1
  69. package/src/viewer/components/SkeletonLoader.tsx +1 -1
  70. package/src/viewer/components/Toast.tsx +2 -2
  71. package/src/viewer/components/TokenStylePanel.tsx +1 -1
  72. package/src/viewer/components/VariantMatrix.tsx +1 -1
  73. package/src/viewer/components/VariantTabs.tsx +1 -1
  74. package/src/viewer/components/ViewportSelector.tsx +1 -1
  75. package/src/viewer/constants/ui.ts +14 -0
  76. package/src/viewer/entry.tsx +3 -4
  77. package/src/viewer/hooks/useKeyboardShortcuts.ts +65 -17
  78. package/src/viewer/hooks/useViewSettings.ts +1 -2
  79. package/src/viewer/index.ts +1 -1
  80. package/src/viewer/preview-frame.html +6 -9
  81. package/src/viewer/server.ts +106 -9
  82. package/src/viewer/styles/globals.css +12 -51
  83. package/src/viewer/vendor/shared/src/DocsHeaderBar.tsx +110 -0
  84. package/src/viewer/vendor/shared/src/DocsPageAsideHost.tsx +89 -0
  85. package/src/viewer/vendor/shared/src/DocsPageShell.tsx +119 -0
  86. package/src/viewer/vendor/shared/src/DocsSearchCommand.tsx +134 -0
  87. package/src/viewer/vendor/shared/src/DocsSidebarNav.tsx +66 -0
  88. package/src/viewer/vendor/shared/src/docs-layout.scss +28 -0
  89. package/src/viewer/vendor/shared/src/docs-layout.scss.d.ts +2 -0
  90. package/src/viewer/vendor/shared/src/index.ts +26 -0
  91. package/src/viewer/vendor/shared/src/types.ts +41 -0
  92. package/src/viewer/vite-plugin.ts +70 -9
  93. package/dist/chunk-2EFVPE5Q.js.map +0 -1
  94. package/dist/chunk-3JPJTU25.js.map +0 -1
  95. package/dist/chunk-AA6CAHCZ.js.map +0 -1
  96. package/dist/chunk-CWKQQR6C.js.map +0 -1
  97. package/dist/init-4VXL3Q6N.js.map +0 -1
  98. package/dist/viewer-ZWQQ74FV.js.map +0 -1
  99. /package/dist/{chunk-LHIIBI6F.js.map → chunk-M42XIHPV.js.map} +0 -0
  100. /package/dist/{core-YAPWXDZW.js.map → core/index.js.map} +0 -0
  101. /package/dist/{generate-LEBVZCCH.js.map → generate-ZPERYZLF.js.map} +0 -0
  102. /package/dist/{scan-3NYSRF6G.js.map → scan-BSMLGBX4.js.map} +0 -0
  103. /package/dist/{service-HL6TMP3B.js.map → service-QACVPR37.js.map} +0 -0
  104. /package/dist/{static-viewer-KLD24I4R.js.map → static-viewer-2RQD5QLR.js.map} +0 -0
  105. /package/dist/{test-Y7YZOJLE.js.map → test-36UELXTE.js.map} +0 -0
  106. /package/dist/{tokens-M4FCJKBK.js.map → tokens-A3BZIQPB.js.map} +0 -0
package/dist/bin.js CHANGED
@@ -10,14 +10,14 @@ import {
10
10
  validateCoverage,
11
11
  validateSchema,
12
12
  validateSnippets
13
- } from "./chunk-3JPJTU25.js";
13
+ } from "./chunk-CRTN6BIW.js";
14
14
  import {
15
15
  scan
16
- } from "./chunk-LHIIBI6F.js";
16
+ } from "./chunk-M42XIHPV.js";
17
17
  import {
18
18
  loadConfig,
19
19
  loadFragmentFile
20
- } from "./chunk-CWKQQR6C.js";
20
+ } from "./chunk-57OW43NL.js";
21
21
  import {
22
22
  discoverFragmentFiles
23
23
  } from "./chunk-AWYCDRPG.js";
@@ -39,8 +39,8 @@ import {
39
39
  } from "./chunk-YMPGYEWK.js";
40
40
  import {
41
41
  generateContext
42
- } from "./chunk-2EFVPE5Q.js";
43
- import "./chunk-AA6CAHCZ.js";
42
+ } from "./chunk-TQOGBAOZ.js";
43
+ import "./chunk-7CRC46HV.js";
44
44
  import {
45
45
  BRAND
46
46
  } from "./chunk-EKLMXTWU.js";
@@ -1456,7 +1456,7 @@ ${generated.skippedVariants.map((sv) => ` { name: "${escapeString(sv.name)}
1456
1456
  },
1457
1457
  `;
1458
1458
  }
1459
- return `import { defineFragment } from "@fragments/core";
1459
+ return `import { defineFragment } from "@fragments-sdk/cli/core";
1460
1460
  import { ${componentName} } from "${componentImport}";
1461
1461
 
1462
1462
  export default defineFragment({
@@ -1806,7 +1806,7 @@ ${BRAND.name} Dev Server
1806
1806
  }
1807
1807
  }
1808
1808
  }
1809
- const { createDevServer } = await import("./viewer-ZWQQ74FV.js");
1809
+ const { createDevServer } = await import("./viewer-CNLZQUFO.js");
1810
1810
  console.log(pc7.dim("\nStarting dev server..."));
1811
1811
  const parsedPort = typeof port === "string" ? parseInt(port, 10) : port;
1812
1812
  try {
@@ -3722,7 +3722,7 @@ function generateFragmentStub(name, category, template) {
3722
3722
  };
3723
3723
  const scenarioTags = scenarioTagHints[template] || scenarioTagHints.display;
3724
3724
  return `import React from 'react';
3725
- import { defineFragment } from '@fragments/core';
3725
+ import { defineFragment } from '@fragments-sdk/cli/core';
3726
3726
  import { ${name} } from './index.js';
3727
3727
 
3728
3728
  export default defineFragment({
@@ -5577,7 +5577,7 @@ Make sure the dev server is running: ${BRAND.cliCommand} dev`));
5577
5577
  });
5578
5578
  program.command("view").description(`Generate a static HTML viewer for ${BRAND.outFile}`).option("-i, --input <path>", `Path to ${BRAND.outFile}`, BRAND.outFile).option("-o, --output <path>", "Output HTML file path", BRAND.viewerHtmlFile).option("--open", "Open in browser after generation").action(async (options) => {
5579
5579
  try {
5580
- const { generateViewerFromJson } = await import("./static-viewer-KLD24I4R.js");
5580
+ const { generateViewerFromJson } = await import("./static-viewer-2RQD5QLR.js");
5581
5581
  const fs2 = await import("fs/promises");
5582
5582
  const path = await import("path");
5583
5583
  const inputPath = path.resolve(process.cwd(), options.input);
@@ -5625,7 +5625,7 @@ program.command("add").argument("[name]", 'Component name (e.g., "Button", "Text
5625
5625
  });
5626
5626
  program.command("init").description("Initialize fragments in a project (interactive by default)").option("--force", "Overwrite existing config").option("-y, --yes", "Non-interactive mode - auto-detect and use defaults").action(async (options) => {
5627
5627
  try {
5628
- const { init } = await import("./init-4VXL3Q6N.js");
5628
+ const { init } = await import("./init-GID2DXB3.js");
5629
5629
  const result = await init({
5630
5630
  projectRoot: process.cwd(),
5631
5631
  force: options.force,
@@ -5645,7 +5645,7 @@ program.command("init").description("Initialize fragments in a project (interact
5645
5645
  });
5646
5646
  program.command("tokens").description("Discover and list design tokens from CSS/SCSS files").option("-c, --config <path>", "Path to config file").option("--json", "Output as JSON").option("--categories", "Group tokens by category").option("--theme <theme>", "Filter by theme name").option("--category <category>", "Filter by category (color, spacing, typography, etc.)").option("--verbose", "Show all tokens (no truncation)").action(async (options) => {
5647
5647
  try {
5648
- const { tokens } = await import("./tokens-M4FCJKBK.js");
5648
+ const { tokens } = await import("./tokens-A3BZIQPB.js");
5649
5649
  const result = await tokens({
5650
5650
  config: options.config,
5651
5651
  json: options.json,
@@ -5664,7 +5664,7 @@ program.command("tokens").description("Discover and list design tokens from CSS/
5664
5664
  });
5665
5665
  program.command("generate").description("Generate fragment files from component source code").argument("[component]", "Specific component name to generate (optional)").option("--force", "Overwrite existing fragment files").option("--pattern <glob>", "Pattern for component files", "src/components/**/*.tsx").action(async (component, options) => {
5666
5666
  try {
5667
- const { generate } = await import("./generate-LEBVZCCH.js");
5667
+ const { generate } = await import("./generate-ZPERYZLF.js");
5668
5668
  const result = await generate({
5669
5669
  projectRoot: process.cwd(),
5670
5670
  component,
@@ -5691,7 +5691,7 @@ program.command("graph").description("Query the component relationship graph").a
5691
5691
  program.command("test").description("Run interaction tests for fragments with play functions").option("-c, --config <path>", "Path to config file").option("--component <name>", "Filter by component name").option("--tags <tags>", "Filter by tags (comma-separated)").option("--grep <pattern>", "Filter by variant name pattern").option("--exclude <pattern>", "Exclude tests matching pattern").option("--parallel <count>", "Number of parallel browser contexts", parseInt, 4).option("--timeout <ms>", "Timeout per test in milliseconds", parseInt, 3e4).option("--retries <count>", "Number of retries for failed tests", parseInt, 0).option("--bail", "Stop on first failure").option("--browser <name>", "Browser to use (chromium, firefox, webkit)", "chromium").option("--headed", "Run in headed mode (show browser)").option("--a11y", "Run accessibility checks with axe-core").option("--visual", "Capture screenshots for visual regression").option("--update-snapshots", "Update visual snapshots").option("--watch", "Watch mode - re-run on file changes").option("--reporters <names>", "Reporters to use (console, junit, json)", "console").option("-o, --output <dir>", "Output directory for results", "./test-results").option("--server-url <url>", "URL of running dev server (skips starting server)").option("-p, --port <port>", "Port for dev server", parseInt, 6006).option("--ci", "CI mode - non-interactive, exit with code 1 on failure").option("--list", "List available tests without running them").action(async (options) => {
5692
5692
  try {
5693
5693
  const { config, configDir } = await loadConfig(options.config);
5694
- const { runTestCommand, listTests } = await import("./test-Y7YZOJLE.js");
5694
+ const { runTestCommand, listTests } = await import("./test-36UELXTE.js");
5695
5695
  if (options.list) {
5696
5696
  await listTests(config, configDir, {
5697
5697
  component: options.component,