sparkle-design-cli 2.2.0 → 2.2.2

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.
@@ -174,7 +174,9 @@ Setup:
174
174
  Generate options:
175
175
  -h, --help このヘルプメッセージを表示
176
176
  -c, --config <path> 設定ファイルのパス (default: ./sparkle.config.json)
177
- -o, --output <path> 出力ファイルのパス (default: ./src/app/sparkle-design.css)
177
+ -o, --output <path> 出力ファイルのパス
178
+ (default: globals-path 指定時はその entry CSS と同じ
179
+ ディレクトリ、未指定時は ./src/app/sparkle-design.css)
178
180
  --globals-path <path> Tailwind エントリポイント CSS のパス (default: 自動検出)
179
181
  --strict globals.css への @source 注入等が失敗したら exit 1
180
182
  (CI 向け。既定は warn + 継続で後方互換を維持)
@@ -259,9 +259,10 @@ function reconstructGlobalsCss(globalsContent, sparkleImportBlock, tailwindInfo)
259
259
  * @param {string} globalsPath globals.cssのパス
260
260
  * @param {Array<string>|null} sourcePackages 追加パッケージ名の配列(null の場合は @source を生成しない)
261
261
  * @param {string|null} customCssPath custom-css ファイルの相対パス
262
- * @returns {{ status: 'skipped' | 'updated' | 'failed', reason?: string }}
262
+ * @returns {{ status: 'skipped' | 'updated' | 'failed', reason?: string, globalsPath?: string, sourcePackages?: Array<string>|null }}
263
263
  * skipped: 触る理由がない (fonts/sourcePackages/customCss すべて空)
264
- * updated: globals.css を正常に書き換えた
264
+ * updated: globals.css を正常に書き換えた(patch した globalsPath と挿入した
265
+ * sourcePackages を併せて返す — issue #56 のサマリ表示用)
265
266
  * failed: 書き換え対象だったが失敗した (TAILWIND_IMPORT 欠落、write 失敗等)
266
267
  */
267
268
  export function updateGlobalsWithFonts(
@@ -342,7 +343,11 @@ export function updateGlobalsWithFonts(
342
343
  // 6. 更新したglobals.cssを書き込む
343
344
  fs.writeFileSync(globalsPath, reconstructedContent, 'utf8');
344
345
  console.log(MESSAGES.GLOBALS_UPDATED(globalsPath));
345
- return { status: 'updated' };
346
+ // `globalsPath` / `sourcePackages` は generate のサマリ出力(issue #56)が
347
+ // 「どの entry CSS に何の @source を挿入したか」を表示するために返す。
348
+ // en: Surface which entry CSS was patched and with which @source packages
349
+ // so the caller can render the generate summary (issue #56).
350
+ return { status: 'updated', globalsPath, sourcePackages };
346
351
  } catch (error) {
347
352
  // `E_UNSAFE_RELATIVE_PATH`(custom-css の path traversal 等)や
348
353
  // `E_TAILWIND_IMPORT_PREPEND_FAILED`(内部不整合)は silent fallback
@@ -564,7 +569,9 @@ function resolveGlobalsPath(sparkleDesignPath, explicitGlobalsPath = null) {
564
569
  * @param {string|null} customCssPath custom-css ファイルの相対パス
565
570
  * @param {string|null} globalsPathOverride 明示的に指定された globals パス
566
571
  * @param {{ strict?: boolean }} [options] strict=true のとき失敗を throw する
567
- * @returns {{ status: 'skipped' | 'updated' | 'failed', reason?: string }}
572
+ * @returns {{ status: 'skipped' | 'updated' | 'failed', reason?: string, globalsPath?: string, sourcePackages?: Array<string>|null }}
573
+ * updated のときは patch した entry CSS の globalsPath と挿入した sourcePackages
574
+ * を含む(issue #56 の generate サマリ用)。
568
575
  */
569
576
  export function manageFontImports(
570
577
  sparkleDesignPath,
@@ -23,6 +23,7 @@ import {
23
23
  updateGlobalsWithFonts,
24
24
  isViteProject,
25
25
  } from './font-manager.js';
26
+ import { assertSafeRelativePath, toPosixPath } from './path-utils.js';
26
27
 
27
28
  /**
28
29
  * config の extend セクションを解決する
@@ -344,6 +345,7 @@ function writeSparkleHead(content, sparkleDesignCssPath) {
344
345
  fs.writeFileSync(outputPath, content, 'utf8');
345
346
  console.log(`✅ SparkleHead.tsx を生成しました: ${outputPath}`);
346
347
  console.log(' → ルートレイアウトの <head> 内に <SparkleHead /> を追加してください');
348
+ return outputPath;
347
349
  }
348
350
 
349
351
  const VITE_INDEX_HTML_BLOCK_START = '<!-- sparkle-design-cli:fonts:start -->';
@@ -602,6 +604,73 @@ function detectSourcePackagesFromPackageJson(cwd = process.cwd()) {
602
604
  return null;
603
605
  }
604
606
 
607
+ /**
608
+ * `--output` 未指定時に、明示された globals-path(CLI `--globals-path` または
609
+ * `extend.globals-path`)と同じディレクトリを出力先に使えるか判定する。
610
+ *
611
+ * 以前は framework に依らず常に `DEFAULT_OUTPUT_DIR = src/app/` に書き出していた
612
+ * ため、Vite の `src/index.css` 構成で `globals-path: src/index.css` を指定しても
613
+ * `sparkle-design.css` が `src/app/` に落ち、本来不要な `src/app/` ディレクトリが
614
+ * 生成されてレビュー / クリーンアップを混乱させていた(issue #56 確定バグ)。
615
+ *
616
+ * - globals-path が未指定なら null(従来どおり src/app/ を使う)
617
+ * - 不正な path(traversal / shell メタ文字 / 絶対パス)は `assertSafeRelativePath`
618
+ * が throw(後段 `resolveGlobalsPath` でも同様に弾かれるので早期 fail-loud)
619
+ * - 解決した path が実在しなければ null。実在しない globals-path は
620
+ * `manageFontImports` が `E_EXPLICIT_GLOBALS_PATH_NOT_FOUND` で loud に throw
621
+ * するので、ここで typo 由来の誤ディレクトリを掘らないよう存在チェックする
622
+ * - 実在しても**通常ファイルでない**(ディレクトリ等)なら null。例えば
623
+ * `globals-path: src` のようにディレクトリを誤指定すると、存在チェックだけ
624
+ * では通過し `path.dirname('.../src')` がプロジェクト root を指して出力先が
625
+ * root に誤誘導される。entry CSS は CSS ファイル前提なので `isFile()` で弾く。
626
+ *
627
+ * en: When `--output` is omitted, return the directory of an explicit
628
+ * globals-path so sparkle-design.css lands next to the entry CSS instead of
629
+ * always under src/app/. Returns null (→ keep src/app/ default) when no
630
+ * globals-path is given, it doesn't exist yet, or it isn't a regular file
631
+ * (e.g. a directory was passed by mistake).
632
+ *
633
+ * @param {string|null} globalsPathOverride
634
+ * @returns {string|null} entry CSS が通常ファイルとして実在する場合その絶対ディレクトリ、なければ null
635
+ */
636
+ function resolveGlobalsDirForOutput(globalsPathOverride) {
637
+ if (!globalsPathOverride) {
638
+ return null;
639
+ }
640
+ assertSafeRelativePath(globalsPathOverride, 'globals-path');
641
+ const resolved = path.resolve(process.cwd(), globalsPathOverride);
642
+ let stat;
643
+ try {
644
+ stat = fs.statSync(resolved);
645
+ } catch {
646
+ // 実在しない(ENOENT 等)。出力先は src/app/ 既定に委ね、entry CSS の
647
+ // not-found は manageFontImports が loud に throw する。
648
+ return null;
649
+ }
650
+ if (!stat.isFile()) {
651
+ return null;
652
+ }
653
+ return path.dirname(resolved);
654
+ }
655
+
656
+ /**
657
+ * sparkle-design.css の出力先絶対パスを決定する。
658
+ * 優先順位: `--output` 明示 > globals-path と同じディレクトリ > `src/app/`(既定)
659
+ * @param {string|null} outputPath `--output` の値
660
+ * @param {string|null} globalsPathOverride globals-path(CLI > config)
661
+ * @returns {string} 出力先の絶対パス
662
+ */
663
+ function resolveOutputPath(outputPath, globalsPathOverride) {
664
+ if (outputPath) {
665
+ return path.resolve(outputPath);
666
+ }
667
+ const globalsDir = resolveGlobalsDirForOutput(globalsPathOverride);
668
+ if (globalsDir) {
669
+ return path.join(globalsDir, 'sparkle-design.css');
670
+ }
671
+ return path.resolve(process.cwd(), ...PATHS.DEFAULT_OUTPUT_DIR, 'sparkle-design.css');
672
+ }
673
+
605
674
  function writeCSS(cssContent, outputPath = null) {
606
675
  // カスタムパスが指定されていない場合は実行場所からsrc/appディレクトリに出力
607
676
  const defaultOutputPath = path.resolve(
@@ -626,6 +695,79 @@ function writeCSS(cssContent, outputPath = null) {
626
695
  }
627
696
  }
628
697
 
698
+ /**
699
+ * `@source` ブロックに実際に書き出されるパッケージ名一覧を組み立てる。
700
+ * `createSourceBlock`(font-manager.js)と同じく default の `sparkle-design` を
701
+ * 先頭に入れ、重複を除いた配列を返す。サマリ表示専用。
702
+ * en: Mirror createSourceBlock's package list (default sparkle-design first)
703
+ * for the summary output.
704
+ * @param {Array<string>|null|undefined} sourcePackages
705
+ * @returns {Array<string>|null} null は @source 未挿入
706
+ */
707
+ function describeInsertedSourcePackages(sourcePackages) {
708
+ if (sourcePackages === null || sourcePackages === undefined) {
709
+ return null;
710
+ }
711
+ const defaultPackage = 'sparkle-design';
712
+ return [defaultPackage, ...sourcePackages.filter((p) => p !== defaultPackage)];
713
+ }
714
+
715
+ /**
716
+ * generate 完了時に「何を・どこに書いたか」を 1 ブロックで要約出力する。
717
+ * issue #56 の可観測性要求への対応。とくに entry CSS と出力先のディレクトリが
718
+ * 乖離している場合(Vite で `src/index.css` を patch しつつ出力が `src/app/` に
719
+ * 落ちる等)に警告を出し、`@source` が想定どおり挿入されたかを目視確認できる
720
+ * ようにする。
721
+ * en: Print a one-block summary of what `generate` patched / wrote and warn
722
+ * when the entry CSS dir and the output dir diverge (issue #56 observability).
723
+ *
724
+ * @param {Object} args
725
+ * @param {string} args.outputPath sparkle-design.css の絶対パス
726
+ * @param {string} args.sparkleHeadPath SparkleHead.tsx の絶対パス
727
+ * @param {{ status: string, reason?: string, globalsPath?: string, sourcePackages?: Array<string>|null }} args.globalsResult
728
+ */
729
+ function printGenerateSummary({ outputPath, sparkleHeadPath, globalsResult }) {
730
+ const cwd = process.cwd();
731
+ const rel = (p) => (p ? path.relative(cwd, p) || '.' : null);
732
+ const lines = ['', '📋 生成サマリ (issue #56):'];
733
+ lines.push(` • sparkle-design.css: ${rel(outputPath)}`);
734
+ lines.push(` • SparkleHead.tsx: ${rel(sparkleHeadPath)}`);
735
+
736
+ if (globalsResult.status === 'updated' && globalsResult.globalsPath) {
737
+ const entryPath = globalsResult.globalsPath;
738
+ lines.push(` • パッチした entry CSS: ${rel(entryPath)}`);
739
+
740
+ const inserted = describeInsertedSourcePackages(globalsResult.sourcePackages);
741
+ if (inserted && inserted.length > 0) {
742
+ lines.push(` • 挿入した @source: ${inserted.join(', ')}`);
743
+ } else {
744
+ lines.push(' • 挿入した @source: なし(source-packages 未指定)');
745
+ }
746
+
747
+ const entryDir = path.dirname(entryPath);
748
+ const outputDir = path.dirname(outputPath);
749
+ if (path.resolve(entryDir) === path.resolve(outputDir)) {
750
+ lines.push(` • entry CSS と出力先 dir: 一致 (${rel(entryDir)})`);
751
+ } else {
752
+ const suggestedOutput = toPosixPath(path.join(rel(entryDir), 'sparkle-design.css'));
753
+ lines.push(
754
+ ` ⚠️ entry CSS dir (${rel(entryDir)}) と出力先 dir (${rel(outputDir)}) が異なります。`
755
+ );
756
+ lines.push(
757
+ ` @import は相対パスで解決されるため動作はしますが、出力先を揃えるには ` +
758
+ `--output ${suggestedOutput} の指定、または extend.globals-path と同じ ` +
759
+ `ディレクトリへの出力を検討してください。`
760
+ );
761
+ }
762
+ } else if (globalsResult.status === 'skipped') {
763
+ lines.push(` • entry CSS パッチ: スキップ (${globalsResult.reason ?? 'no-work'})`);
764
+ } else if (globalsResult.status === 'failed') {
765
+ lines.push(` • entry CSS パッチ: ❌ 失敗 (${globalsResult.reason ?? 'unknown'})`);
766
+ }
767
+
768
+ console.log(lines.join('\n'));
769
+ }
770
+
629
771
  /**
630
772
  * メイン処理
631
773
  * @param {string|null} configPath カスタム設定ファイルのパス(オプション)
@@ -666,18 +808,21 @@ export function generateCSS(
666
808
  colors
667
809
  );
668
810
 
811
+ // globals-path(CLI `--globals-path` > `extend.globals-path`)を先に解決する。
812
+ // 出力先デフォルトの決定とフォント管理(@source 挿入)の両方で同じ値を使う。
813
+ // en: Resolve globals-path once (CLI over config); both the default output
814
+ // location and the font-import patcher consume it.
815
+ const globalsPathOverride = globalsPath || config['globals-path'] || null;
816
+
669
817
  // 6. CSSファイルを書き出し
670
- const defaultOutputPath = path.resolve(
671
- process.cwd(),
672
- ...PATHS.DEFAULT_OUTPUT_DIR,
673
- 'sparkle-design.css'
674
- );
675
- const resolvedOutputPath = outputPath ? path.resolve(outputPath) : defaultOutputPath;
676
- writeCSS(processedCSS, outputPath);
818
+ // `--output` 未指定時は globals-path と同じディレクトリ(実在する場合)に出す。
819
+ // 詳細は resolveOutputPath / resolveGlobalsDirForOutput の comment 参照(#56)。
820
+ const resolvedOutputPath = resolveOutputPath(outputPath, globalsPathOverride);
821
+ writeCSS(processedCSS, resolvedOutputPath);
677
822
 
678
823
  // 7. SparkleHead.tsx を生成(processTemplate で解決済みの resolvedFonts を再利用)
679
824
  const sparkleHeadContent = generateSparkleHeadContent(resolvedFonts);
680
- writeSparkleHead(sparkleHeadContent, resolvedOutputPath);
825
+ const sparkleHeadPath = writeSparkleHead(sparkleHeadContent, resolvedOutputPath);
681
826
 
682
827
  // 7.5 Vite プロジェクトの index.html に Sparkle のフォント <link> タグを upsert
683
828
  // する。Vite は <head> が index.html 側にあるため、React コンポーネントの
@@ -740,7 +885,6 @@ export function generateCSS(
740
885
  ? [...new Set([...(detectedPackages ?? []), ...(explicitPackages ?? [])])]
741
886
  : null;
742
887
  const customCssPath = config['custom-css'] || null;
743
- const globalsPathOverride = globalsPath || config['globals-path'] || null;
744
888
  const globalsResult = manageFontImports(
745
889
  resolvedOutputPath,
746
890
  sourcePackages,
@@ -749,6 +893,11 @@ export function generateCSS(
749
893
  { strict: Boolean(options.strict) }
750
894
  );
751
895
 
896
+ // 9. 生成サマリ(可観測性 / issue #56)。何を・どこに書いたか、@source が
897
+ // 挿入されたか、entry CSS と出力先の dir が乖離していないかを 1 ブロックで
898
+ // 出力する。設定は正しいのに @source が silent に落ちる事象を即検知できる。
899
+ printGenerateSummary({ outputPath: resolvedOutputPath, sparkleHeadPath, globalsResult });
900
+
752
901
  console.log(MESSAGES.SUCCESS);
753
902
  return { globalsResult };
754
903
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sparkle-design-cli",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "Sparkle Design CLI — プロジェクトセットアップ、CSS・フォント生成、アンチパターン検査、AI エージェント(Claude Code / Cursor / Codex)向けのガードと hook 設定まで一括で行う sparkle-design 公式 CLI。",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org",
@@ -60,6 +60,7 @@
60
60
  /* フォントウェイト */
61
61
  --font-weight-char-normal: 400;
62
62
  --font-weight-char-bold: 700;
63
+ --font-weight-icon: 500;
63
64
  --font-weight-icon-fill-0: 'FILL' 0, 'wght' 500, 'GRAD' 0, 'opsz' 24;
64
65
  --font-weight-icon-fill-1: 'FILL' 1, 'wght' 500, 'GRAD' 0, 'opsz' 24;
65
66
 
@@ -682,6 +683,7 @@
682
683
  /* アイコンスタイル */
683
684
  font-family: var(--font-family-icon);
684
685
  font-size: var(--font-size-12);
686
+ font-weight: var(--font-weight-icon);
685
687
  font-variation-settings: var(--font-weight-icon-fill-0);
686
688
  font-display: optional;
687
689
  letter-spacing: var(--letter-spacing-normal);
@@ -690,6 +692,7 @@
690
692
  .icon-1-fill-1 {
691
693
  font-family: var(--font-family-icon);
692
694
  font-size: var(--font-size-12);
695
+ font-weight: var(--font-weight-icon);
693
696
  font-variation-settings: var(--font-weight-icon-fill-1);
694
697
  font-display: optional;
695
698
  letter-spacing: var(--letter-spacing-normal);
@@ -698,6 +701,7 @@
698
701
  .icon-2-fill-0 {
699
702
  font-family: var(--font-family-icon);
700
703
  font-size: var(--font-size-14);
704
+ font-weight: var(--font-weight-icon);
701
705
  font-variation-settings: var(--font-weight-icon-fill-0);
702
706
  font-display: optional;
703
707
  letter-spacing: var(--letter-spacing-normal);
@@ -706,6 +710,7 @@
706
710
  .icon-2-fill-1 {
707
711
  font-family: var(--font-family-icon);
708
712
  font-size: var(--font-size-14);
713
+ font-weight: var(--font-weight-icon);
709
714
  font-variation-settings: var(--font-weight-icon-fill-1);
710
715
  font-display: optional;
711
716
  letter-spacing: var(--letter-spacing-normal);
@@ -714,6 +719,7 @@
714
719
  .icon-3-fill-0 {
715
720
  font-family: var(--font-family-icon);
716
721
  font-size: var(--font-size-16);
722
+ font-weight: var(--font-weight-icon);
717
723
  font-variation-settings: var(--font-weight-icon-fill-0);
718
724
  font-display: optional;
719
725
  letter-spacing: var(--letter-spacing-normal);
@@ -722,6 +728,7 @@
722
728
  .icon-3-fill-1 {
723
729
  font-family: var(--font-family-icon);
724
730
  font-size: var(--font-size-16);
731
+ font-weight: var(--font-weight-icon);
725
732
  font-variation-settings: var(--font-weight-icon-fill-1);
726
733
  font-display: optional;
727
734
  letter-spacing: var(--letter-spacing-normal);
@@ -730,6 +737,7 @@
730
737
  .icon-4-fill-0 {
731
738
  font-family: var(--font-family-icon);
732
739
  font-size: var(--font-size-18);
740
+ font-weight: var(--font-weight-icon);
733
741
  font-variation-settings: var(--font-weight-icon-fill-0);
734
742
  font-display: optional;
735
743
  letter-spacing: var(--letter-spacing-normal);
@@ -738,6 +746,7 @@
738
746
  .icon-4-fill-1 {
739
747
  font-family: var(--font-family-icon);
740
748
  font-size: var(--font-size-18);
749
+ font-weight: var(--font-weight-icon);
741
750
  font-variation-settings: var(--font-weight-icon-fill-1);
742
751
  font-display: optional;
743
752
  letter-spacing: var(--letter-spacing-normal);
@@ -746,6 +755,7 @@
746
755
  .icon-5-fill-0 {
747
756
  font-family: var(--font-family-icon);
748
757
  font-size: var(--font-size-20);
758
+ font-weight: var(--font-weight-icon);
749
759
  font-variation-settings: var(--font-weight-icon-fill-0);
750
760
  font-display: optional;
751
761
  letter-spacing: var(--letter-spacing-normal);
@@ -754,6 +764,7 @@
754
764
  .icon-5-fill-1 {
755
765
  font-family: var(--font-family-icon);
756
766
  font-size: var(--font-size-20);
767
+ font-weight: var(--font-weight-icon);
757
768
  font-variation-settings: var(--font-weight-icon-fill-1);
758
769
  font-display: optional;
759
770
  letter-spacing: var(--letter-spacing-normal);
@@ -762,6 +773,7 @@
762
773
  .icon-6-fill-0 {
763
774
  font-family: var(--font-family-icon);
764
775
  font-size: var(--font-size-24);
776
+ font-weight: var(--font-weight-icon);
765
777
  font-variation-settings: var(--font-weight-icon-fill-0);
766
778
  font-display: optional;
767
779
  letter-spacing: var(--letter-spacing-normal);
@@ -770,6 +782,7 @@
770
782
  .icon-6-fill-1 {
771
783
  font-family: var(--font-family-icon);
772
784
  font-size: var(--font-size-24);
785
+ font-weight: var(--font-weight-icon);
773
786
  font-variation-settings: var(--font-weight-icon-fill-1);
774
787
  font-display: optional;
775
788
  letter-spacing: var(--letter-spacing-normal);
@@ -778,6 +791,7 @@
778
791
  .icon-7-fill-0 {
779
792
  font-family: var(--font-family-icon);
780
793
  font-size: var(--font-size-28);
794
+ font-weight: var(--font-weight-icon);
781
795
  font-variation-settings: var(--font-weight-icon-fill-0);
782
796
  font-display: optional;
783
797
  letter-spacing: var(--letter-spacing-normal);
@@ -786,6 +800,7 @@
786
800
  .icon-7-fill-1 {
787
801
  font-family: var(--font-family-icon);
788
802
  font-size: var(--font-size-28);
803
+ font-weight: var(--font-weight-icon);
789
804
  font-variation-settings: var(--font-weight-icon-fill-1);
790
805
  font-display: optional;
791
806
  letter-spacing: var(--letter-spacing-normal);
@@ -794,6 +809,7 @@
794
809
  .icon-8-fill-0 {
795
810
  font-family: var(--font-family-icon);
796
811
  font-size: var(--font-size-32);
812
+ font-weight: var(--font-weight-icon);
797
813
  font-variation-settings: var(--font-weight-icon-fill-0);
798
814
  font-display: optional;
799
815
  letter-spacing: var(--letter-spacing-normal);
@@ -802,6 +818,7 @@
802
818
  .icon-8-fill-1 {
803
819
  font-family: var(--font-family-icon);
804
820
  font-size: var(--font-size-32);
821
+ font-weight: var(--font-weight-icon);
805
822
  font-variation-settings: var(--font-weight-icon-fill-1);
806
823
  font-display: optional;
807
824
  letter-spacing: var(--letter-spacing-normal);
@@ -810,6 +827,7 @@
810
827
  .icon-9-fill-0 {
811
828
  font-family: var(--font-family-icon);
812
829
  font-size: var(--font-size-36);
830
+ font-weight: var(--font-weight-icon);
813
831
  font-variation-settings: var(--font-weight-icon-fill-0);
814
832
  font-display: optional;
815
833
  letter-spacing: var(--letter-spacing-normal);
@@ -818,6 +836,7 @@
818
836
  .icon-9-fill-1 {
819
837
  font-family: var(--font-family-icon);
820
838
  font-size: var(--font-size-36);
839
+ font-weight: var(--font-weight-icon);
821
840
  font-variation-settings: var(--font-weight-icon-fill-1);
822
841
  font-display: optional;
823
842
  letter-spacing: var(--letter-spacing-normal);
@@ -826,6 +845,7 @@
826
845
  .icon-10-fill-0 {
827
846
  font-family: var(--font-family-icon);
828
847
  font-size: var(--font-size-42);
848
+ font-weight: var(--font-weight-icon);
829
849
  font-variation-settings: var(--font-weight-icon-fill-0);
830
850
  font-display: optional;
831
851
  letter-spacing: var(--letter-spacing-normal);
@@ -834,6 +854,7 @@
834
854
  .icon-10-fill-1 {
835
855
  font-family: var(--font-family-icon);
836
856
  font-size: var(--font-size-42);
857
+ font-weight: var(--font-weight-icon);
837
858
  font-variation-settings: var(--font-weight-icon-fill-1);
838
859
  font-display: optional;
839
860
  letter-spacing: var(--letter-spacing-normal);
@@ -842,6 +863,7 @@
842
863
  .icon-11-fill-0 {
843
864
  font-family: var(--font-family-icon);
844
865
  font-size: var(--font-size-48);
866
+ font-weight: var(--font-weight-icon);
845
867
  font-variation-settings: var(--font-weight-icon-fill-0);
846
868
  font-display: optional;
847
869
  letter-spacing: var(--letter-spacing-normal);
@@ -850,6 +872,7 @@
850
872
  .icon-11-fill-1 {
851
873
  font-family: var(--font-family-icon);
852
874
  font-size: var(--font-size-48);
875
+ font-weight: var(--font-weight-icon);
853
876
  font-variation-settings: var(--font-weight-icon-fill-1);
854
877
  font-display: optional;
855
878
  letter-spacing: var(--letter-spacing-normal);
@@ -858,6 +881,7 @@
858
881
  .icon-12-fill-0 {
859
882
  font-family: var(--font-family-icon);
860
883
  font-size: var(--font-size-54);
884
+ font-weight: var(--font-weight-icon);
861
885
  font-variation-settings: var(--font-weight-icon-fill-0);
862
886
  font-display: optional;
863
887
  letter-spacing: var(--letter-spacing-normal);
@@ -866,6 +890,7 @@
866
890
  .icon-12-fill-1 {
867
891
  font-family: var(--font-family-icon);
868
892
  font-size: var(--font-size-54);
893
+ font-weight: var(--font-weight-icon);
869
894
  font-variation-settings: var(--font-weight-icon-fill-1);
870
895
  font-display: optional;
871
896
  letter-spacing: var(--letter-spacing-normal);