@hjmds/design-contracts 1.23.0 → 1.24.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.
package/dist/catalog.d.ts CHANGED
@@ -6042,6 +6042,22 @@ export declare const recipeRegistry: {
6042
6042
  };
6043
6043
  };
6044
6044
  readonly segmentedControlRecipe: {
6045
+ readonly text: {
6046
+ readonly gap: 16;
6047
+ readonly indicatorWidth: 16;
6048
+ readonly indicatorHeight: 2;
6049
+ readonly indicatorRadius: 999;
6050
+ readonly minHeight: 44;
6051
+ readonly labelGap: 4;
6052
+ readonly regular: {
6053
+ readonly idle: "400";
6054
+ readonly selected: "600";
6055
+ };
6056
+ readonly strong: {
6057
+ readonly idle: "500";
6058
+ readonly selected: "700";
6059
+ };
6060
+ };
6045
6061
  readonly slots: readonly ["root", "item", "label", "indicator"];
6046
6062
  readonly defaults: {
6047
6063
  readonly size: "medium";
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGjB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,cAAc,CAAC"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGjB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,cAAc,CAAC"}
@@ -1819,6 +1819,22 @@ export declare const comboboxRecipe: {
1819
1819
  };
1820
1820
  };
1821
1821
  export declare const segmentedControlRecipe: {
1822
+ readonly text: {
1823
+ readonly gap: 16;
1824
+ readonly indicatorWidth: 16;
1825
+ readonly indicatorHeight: 2;
1826
+ readonly indicatorRadius: 999;
1827
+ readonly minHeight: 44;
1828
+ readonly labelGap: 4;
1829
+ readonly regular: {
1830
+ readonly idle: "400";
1831
+ readonly selected: "600";
1832
+ };
1833
+ readonly strong: {
1834
+ readonly idle: "500";
1835
+ readonly selected: "700";
1836
+ };
1837
+ };
1822
1838
  readonly slots: readonly ["root", "item", "label", "indicator"];
1823
1839
  readonly defaults: {
1824
1840
  readonly size: "medium";
@@ -1 +1 @@
1
- {"version":3,"file":"component-recipes.d.ts","sourceRoot":"","sources":["../src/component-recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-recipes.d.ts","sourceRoot":"","sources":["../src/component-recipes.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,OAAO,EAUP,OAAO,EAKR,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,8BAA8B,GACpC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,CAAC;AACd,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BtB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,WAAW,GACX,YAAY,GACZ,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AACd,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC3C,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,OAAO,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAElE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAoBvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;QAenB,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC3D,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBvB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GAAG,MAAM,OAAO,oBAAoB,CAAC,YAAY,CAAC;AACvF,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;AAErG,MAAM,MAAM,SAAS,GACjB,SAAS;AACX;;;;;;;;GAQG;GACD,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AACb,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC3C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFd,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjD,iFAAiF;AACjF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiC5B;;;;;;;;;;;;OAYG;;;;;;;;;;;;;CAiCJ,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,OAAO,CAAC,UAAU,CAAC;AAEvD,eAAO,MAAM,UAAU;;;;;;IAGrB;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CK,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAUhB,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CASb,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC;AAChF,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyCxB;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCJ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,aAAa,CAAC;AAEzD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC,OAAO,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC5C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,aAAa,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJxB,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqE1B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAU/B;;;;;;;WAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwCH;;;;WAIG;;;;;;;;;;;;;;;;CAQG,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Df,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAC;AAExD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqBjC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6EH;;;OAGG;;;;;;;;;;;QAWD;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDG,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEjF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBf,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYnB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAehB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8D1B,CAAC;AAEF,eAAO,MAAM,YAAY;;IAEvB;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQK,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,aAAa,CAAC;AACzD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2H3B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;IAGtB;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAcD,gHAAgH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC1G,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBf,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6F7B,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,CAAC;AACjB,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEZ,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+MvB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BhB,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCf,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CA8BlB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,sBAAsB,CAAC,KAAK,CAAC;AAC7E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,YAAY,CAAC,KAAK,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,sBAAsB,CAAC,KAAK,CAAC;AAC7E,MAAM,MAAM,4BAA4B,GAAG,MAAM,OAAO,sBAAsB,CAAC,aAAa,CAAC;AAC7F,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,UAAU,CAAC,KAAK,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC,OAAO,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,aAAa,CAAC,KAAK,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,aAAa,CAAC,KAAK,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,YAAY,CAAC,KAAK,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,YAAY,CAAC,MAAM,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,YAAY,CAAC,KAAK,CAAC"}
@@ -612,6 +612,9 @@ export const comboboxRecipe = {
612
612
  transition: selectRecipe.transition,
613
613
  };
614
614
  export const segmentedControlRecipe = {
615
+ // Text navigation reuses radio selection, without cloning a product-only tab engine.
616
+ text: { gap: spacing.md, indicatorWidth: 16, indicatorHeight: 2, indicatorRadius: radius.full,
617
+ minHeight: control.minTouchTarget, labelGap: spacing.xxs, regular: { idle: "400", selected: "600" }, strong: { idle: "500", selected: "700" } },
615
618
  slots: ["root", "item", "label", "indicator"],
616
619
  defaults: { size: "medium" },
617
620
  // Category filters share the single-selection engine, with a compact surface inside a 44 target.
@@ -1 +1 @@
1
- {"version":3,"file":"component-recipes.js","sourceRoot":"","sources":["../src/component-recipes.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColorReference } from \"./color-references.js\";\nimport {\n collectionItemContract,\n fieldFrameContract,\n floatingSurfaceContract,\n focusIndicatorContract,\n formSupportContract,\n} from \"./component-contracts.js\";\nimport {\n backdrop,\n breakpoint,\n control,\n glyph,\n layer,\n largeTextThreshold,\n layout,\n fontWeight,\n motion,\n motionPreset,\n opacity,\n radius,\n spacing,\n stroke,\n type FontWeightValue,\n type GlyphSize,\n type TextVariant,\n} from \"./foundations.js\";\nimport { semanticColors } from \"./semantic-colors.js\";\nimport { tooltipDescriptorDefaults } from \"./tooltip.js\";\nimport { bottomNavigationRecipeDefaults } from \"./bottom-navigation-defaults.js\";\n\nexport {\n iconButtonRecipe,\n resolveIconButtonPresentation,\n type IconButtonShape,\n type IconButtonSize,\n type IconButtonTone,\n type ResolvedIconButtonPresentation,\n} from \"./icon-button-recipe.js\";\nexport {\n counterBadgeDefaults,\n counterBadgeRecipe,\n formatCounterBadgeCount,\n type CounterBadgeSize,\n type CounterBadgeTone,\n type CounterBadgeVariant,\n} from \"./counter-badge-recipe.js\";\nexport {\n progressRecipe,\n type ProgressShape,\n type ProgressSize,\n type ProgressTone,\n} from \"./progress-recipe.js\";\nexport type {\n BottomNavigationDensity,\n BottomNavigationDistribution,\n BottomNavigationPresentation,\n} from \"./bottom-navigation-defaults.js\";\n\nexport type TextTone =\n | \"primary\"\n | \"body\"\n | \"muted\"\n | \"subtle\"\n | \"weak\"\n | \"brand\"\n | \"danger\"\n | \"inverse\";\nexport type TextEmphasis = \"regular\" | \"medium\" | \"strong\";\n\nexport const textRecipe = {\n slots: [\"root\"] as const,\n defaults: { variant: \"body\", tone: \"primary\", emphasis: \"regular\" },\n tones: {\n primary: semanticColors.content.primary,\n body: semanticColors.content.body,\n muted: semanticColors.content.secondary,\n subtle: semanticColors.content.tertiary,\n weak: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n emphasis: {\n regular: fontWeight.regular,\n medium: fontWeight.semibold,\n strong: fontWeight.bold,\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n variant: TextVariant;\n tone: TextTone;\n emphasis: TextEmphasis;\n };\n tones: Record<TextTone, ColorReference>;\n emphasis: Record<TextEmphasis, FontWeightValue>;\n};\n\nexport type IconTone =\n | \"primary\"\n | \"secondary\"\n | \"decorative\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"inverse\";\nexport type IconWeight = \"regular\" | \"strong\";\n\nexport const iconRecipe = {\n slots: [\"root\"] as const,\n defaults: {\n size: \"md\",\n tone: \"secondary\",\n weight: \"regular\",\n decorative: true,\n },\n sizes: glyph,\n tones: {\n primary: semanticColors.content.primary,\n secondary: semanticColors.content.secondary,\n decorative: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n info: semanticColors.feedback.info.foreground,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n weights: { regular: 2, strong: 2.5 },\n stroke: {\n lineCap: \"round\",\n lineJoin: \"round\",\n scaling: \"proportional\",\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n size: GlyphSize;\n tone: IconTone;\n weight: IconWeight;\n decorative: boolean;\n };\n sizes: Record<GlyphSize, number>;\n tones: Record<IconTone, ColorReference>;\n weights: Record<IconWeight, number>;\n stroke: {\n lineCap: \"round\";\n lineJoin: \"round\";\n scaling: \"proportional\";\n };\n};\n\nexport type StackAxis = \"block\" | \"inline\";\nexport type StackGap = keyof typeof spacing;\nexport type StackAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\nexport type StackJustify = \"start\" | \"center\" | \"end\" | \"between\";\n\nexport const stackRecipe = {\n slots: [\"root\"] as const,\n defaults: { axis: \"block\", gap: \"md\", align: \"stretch\", justify: \"start\", wrap: false },\n axes: { block: \"column\", inline: \"row\" },\n gaps: spacing,\n align: [\"start\", \"center\", \"end\", \"stretch\"] as const,\n justify: [\"start\", \"center\", \"end\", \"between\"] as const,\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n axis: StackAxis;\n gap: StackGap;\n align: StackAlign;\n justify: StackJustify;\n wrap: boolean;\n };\n axes: Record<StackAxis, \"column\" | \"row\">;\n gaps: Record<StackGap, number>;\n align: readonly StackAlign[];\n justify: readonly StackJustify[];\n};\n\nexport type LinkTone = \"brand\" | \"neutral\";\nexport type LinkVariant = \"inline\" | \"standalone\";\n\nexport const linkRecipe = {\n slots: [\"root\", \"leading\", \"label\", \"trailing\"] as const,\n defaults: { tone: \"brand\", variant: \"inline\" },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.body,\n },\n variants: {\n inline: {\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n underline: \"always\",\n minHeight: null,\n minWidth: null,\n },\n /** 그 자체가 동작이므로 두 축 모두 최소 터치 타깃. 높이만 잡으면 짧은 라벨이 좁아진다. */\n standalone: {\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n underline: \"hover\",\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n },\n },\n gap: spacing.xxs,\n icon: { glyph: \"xs\", inheritsTone: true },\n states: {\n pressedOpacity: opacity.pressed,\n focus: focusIndicatorContract,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"label\", \"trailing\"];\n defaults: { tone: LinkTone; variant: LinkVariant };\n tones: Record<LinkTone, ColorReference>;\n variants: Record<\n LinkVariant,\n {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n underline: \"always\" | \"hover\";\n minHeight: number | null;\n minWidth: number | null;\n }\n >;\n gap: number;\n icon: { glyph: GlyphSize; inheritsTone: true };\n states: {\n pressedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n};\n\nexport const selectionGroupRecipe = {\n slots: [\"root\", \"label\", \"requiredIndicator\", \"description\", \"items\", \"error\"] as const,\n defaults: { orientation: \"vertical\", presentation: \"card\" },\n orientations: {\n vertical: {\n direction: \"column\",\n // `grouped` rows sit flush inside one shared card, so the group owns\n // the only outer radius and the rows share edges instead of floating\n // apart with their own gap — the same shape as `selectionControlRecipe`'s\n // `grouped` presentation, which this gap pairs with.\n gap: { plain: spacing.xxs, card: spacing.xs, grouped: 0 },\n },\n horizontal: {\n direction: \"row\",\n gap: { plain: spacing.sm, card: spacing.md, grouped: 0 },\n },\n },\n label: formSupportContract.label,\n requiredIndicator: { color: semanticColors.content.danger },\n description: formSupportContract.hint,\n error: formSupportContract.error,\n supportGap: formSupportContract.gap,\n states: { disabledOpacity: opacity.disabled },\n} as const;\n\nexport type SelectionGroupOrientation = keyof typeof selectionGroupRecipe.orientations;\nexport type SelectionGroupPresentation = keyof typeof selectionGroupRecipe.orientations.vertical.gap;\n\nexport type BadgeTone =\n | \"neutral\"\n /**\n * One step stronger than `neutral`: solid ink plate instead of a muted\n * label + sunken plate. A product author needed this for a result screen\n * where win/loss is the fact itself, not a side note, and `neutral` plus\n * its `outline` variant read as nearly the same grey — the one place the\n * distinction had to be unmistakable at a glance. Use it where a badge must\n * outrank `neutral` without borrowing an accent or the brand tint (both of\n * which already carry other meanings — see the `brand` tone below).\n */\n | \"strong\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"attention\"\n | \"danger\";\nexport type BadgeSize = \"small\" | \"medium\";\nexport type BadgeVariant = \"filled\" | \"outline\";\n\nexport const badgeRecipe = {\n slots: [\"root\", \"icon\", \"label\"] as const,\n defaults: { tone: \"neutral\", size: \"medium\", variant: \"filled\" },\n variants: {\n filled: {\n usesToneBackground: true,\n borderFallback: null,\n },\n outline: {\n usesToneBackground: false,\n borderFallback: semanticColors.border.default,\n },\n },\n tones: {\n neutral: {\n content: semanticColors.content.secondary,\n outlineContent: semanticColors.content.secondary,\n background: semanticColors.canvas,\n border: null,\n },\n strong: {\n content: semanticColors.content.inverse,\n outlineContent: semanticColors.content.primary,\n background: semanticColors.content.primary,\n border: null,\n },\n brand: {\n content: semanticColors.content.brand,\n outlineContent: semanticColors.content.brand,\n // The brand tint now means \"selected\" everywhere (see\n // `selectionControlRecipe`/`segmentedControlRecipe`), so a badge that\n // only labels something — a season, a grade, a question number —\n // cannot wear it: rows of static badges started reading as a filter\n // with one option switched on. The plate goes neutral and the brand\n // stays in the copy.\n background: semanticColors.canvas,\n border: null,\n },\n info: {\n content: semanticColors.feedback.info.foreground,\n outlineContent: semanticColors.feedback.info.foreground,\n background: semanticColors.canvas,\n border: semanticColors.feedback.info.border,\n },\n success: {\n content: semanticColors.feedback.success.foreground,\n outlineContent: semanticColors.feedback.success.foreground,\n background: semanticColors.feedback.success.badgeBackground,\n border: semanticColors.feedback.success.border,\n },\n warning: {\n content: semanticColors.feedback.warning.foreground,\n outlineContent: semanticColors.feedback.warning.foreground,\n background: semanticColors.feedback.warning.badgeBackground,\n border: semanticColors.feedback.warning.border,\n },\n attention: {\n content: semanticColors.feedback.attention.foreground,\n outlineContent: semanticColors.feedback.attention.foreground,\n background: semanticColors.feedback.attention.badgeBackground,\n border: semanticColors.feedback.attention.border,\n },\n danger: {\n content: semanticColors.feedback.danger.foreground,\n outlineContent: semanticColors.feedback.danger.foreground,\n background: semanticColors.feedback.danger.badgeBackground,\n border: semanticColors.feedback.danger.border,\n },\n },\n sizes: {\n small: {\n minHeight: 20,\n paddingHorizontal: spacing.xxs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n medium: {\n minHeight: 24,\n paddingHorizontal: spacing.xs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n },\n radius: \"full\",\n borderWidth: stroke.default,\n fontWeight: fontWeight.bold,\n} as const;\n\nexport type SearchFieldSize = \"medium\" | \"large\";\n\n/** Search is a field specialization with stable affordance and clear targets. */\nexport const searchFieldRecipe = {\n slots: [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"] as const,\n defaults: { size: \"medium\", shape: \"medium\" },\n sizes: {\n medium: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n gap: spacing.xs,\n glyph: \"sm\",\n clearDiameter: 36,\n clearHitSlop: 4,\n textVariant: \"body\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.md,\n gap: spacing.sm,\n glyph: \"sm\",\n clearDiameter: control.minTouchTarget,\n clearHitSlop: 0,\n textVariant: \"bodyLarge\",\n },\n },\n colors: {\n background: semanticColors.canvas,\n content: semanticColors.content.primary,\n placeholder: semanticColors.content.secondary,\n leading: semanticColors.content.decorative,\n clear: semanticColors.content.secondary,\n border: semanticColors.border.control,\n focus: focusIndicatorContract.color,\n invalid: semanticColors.border.danger,\n },\n /**\n * 모양은 **축이다** — 값 하나로 못 박지 않는다.\n *\n * 원래 여기는 `radius: \"full\"` 하나였다. 그런데 `fieldRecipe`는 같은 결정을\n * `shapes: { medium, large, full }` 축으로 열어 두고 있었고, 그래서 **한 앱 안에서\n * 평범한 입력과 찾기 입력이 서로 다른 모양이 되는 것을 계약이 막지 못했다.** 실제로\n * 갈라졌다 — app-rn은 `\"md\"`로 그리고 있었는데 이 계약은 `\"full\"`이라고 말하고\n * 있었고, 어느 쪽이 옳은지 양쪽 문서 어디에도 없었다.\n *\n * 찾기 입력이 알약이어야 하는지는 **제품이 정할 일**이고(iOS 관례는 알약, 이 앱은\n * 사각), 계약이 할 일은 그 선택지를 `fieldRecipe`와 **같은 이름으로** 주는 것이다.\n * 그러면 두 입력의 모양을 나란히 맞추는 것과 일부러 다르게 하는 것이 둘 다 표현된다.\n */\n shapes: { medium: \"md\", large: \"lg\", full: \"full\" },\n borderWidth: stroke.default,\n focusRingWidth: focusIndicatorContract.width,\n focusRingOffset: focusIndicatorContract.offset,\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"];\n defaults: { size: SearchFieldSize; shape: \"medium\" | \"large\" | \"full\" };\n sizes: Record<\n SearchFieldSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n gap: number;\n glyph: GlyphSize;\n clearDiameter: number;\n clearHitSlop: number;\n textVariant: TextVariant;\n }\n >;\n colors: Record<\n \"background\" | \"content\" | \"placeholder\" | \"leading\" | \"clear\" | \"border\" | \"focus\" | \"invalid\",\n ColorReference\n >;\n shapes: Record<\"medium\" | \"large\" | \"full\", keyof typeof radius>;\n borderWidth: number;\n focusRingWidth: number;\n focusRingOffset: number;\n states: { disabledOpacity: number; pressedOpacity: number };\n};\n\nexport type ChipSize = keyof typeof control.chipHeight;\n\nexport const chipRecipe = {\n slots: [\"root\", \"leading\", \"indicator\", \"label\", \"trailing\"] as const,\n defaults: { size: \"small\", selected: false },\n /**\n * `height` is the minimum visible height; a label taller than it grows the chip (Web `min-block-size`,\n * Native `minHeight` from 1.13.1). Native used it as a fixed height and clipped labels at large text\n * (utilverse 1.13.0 adoption, 2026-10-06), unlike Web and Button.\n */\n sizes: {\n small: {\n height: control.chipHeight.small,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n gap: spacing.xxs,\n textVariant: \"body\",\n },\n medium: {\n height: control.chipHeight.medium,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n textVariant: \"body\",\n },\n },\n states: {\n idle: {\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n // A resting chip wears the shared hairline, not a text-strength\n // outline. Drawing it in `content.secondary` made an unselected chip\n // read heavier than the selected one beside it, inverting the one\n // signal that matters in a filter row.\n border: semanticColors.border.default,\n },\n selected: {\n background: semanticColors.canvas,\n content: semanticColors.content.brand,\n border: semanticColors.border.focus,\n },\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n radius: \"full\",\n borderWidth: stroke.default,\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: {\n color: semanticColors.content.brand,\n glyph: \"xs\",\n },\n focus: focusIndicatorContract,\n} as const;\n\nexport const dividerRecipe = {\n slots: [\"root\", \"label\"] as const,\n defaults: { orientation: \"horizontal\", inset: \"none\" },\n color: semanticColors.border.default,\n thickness: stroke.subtle,\n insets: {\n none: 0,\n start: spacing.md,\n both: spacing.md,\n },\n} as const;\n\nexport const listRecipe = {\n slots: [\"root\", \"item\", \"separator\"] as const,\n defaults: { separator: \"indented\" },\n separators: {\n none: null,\n full: { insetStart: 0, insetEnd: 0 },\n indented: { insetStart: 40 + spacing.sm, insetEnd: 0 },\n },\n background: null,\n} as const;\n\nexport type ListRowDensity = \"compact\" | \"comfortable\" | \"relaxed\" | \"spacious\";\n/** Frame geometry the ListRow paints around its leading slot. */\nexport type ListRowLeadingShape = \"square\" | \"circle\";\n\nexport const listRowRecipe = {\n slots: [\"root\", \"leading\", \"content\", \"title\", \"description\", \"trailing\"] as const,\n defaults: { density: \"comfortable\", selected: false, tone: \"default\" },\n // Destructive destinations keep semantic emphasis without renderer-specific title styles.\n tones: { default: { titleColor: semanticColors.content.body }, danger: { titleColor: semanticColors.content.danger } },\n density: {\n compact: {\n oneLineMinHeight: control.minTouchTarget,\n twoLineMinHeight: 60,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xxs,\n },\n comfortable: {\n oneLineMinHeight: layout.rowHeight.singleLine,\n twoLineMinHeight: layout.rowHeight.twoLine,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xs,\n },\n /*\n 토스 TDS의 ListRow는 세로 여백을 네 단계로 둔다. HJM이 두 단계만 갖고 있던 동안\n 제품은 그 사이 값을 제품 CSS로 만들었다(설정 목록은 넓게, 검색 결과는 좁게).\n 숫자는 이미 있는 spacing 스케일(sm/md)을 그대로 쓰고 새 값을 만들지 않는다.\n 최소 높이는 여백에 맞춰 함께 올라간다 — 여백만 키우면 한 줄 행이 위아래로 치우친다.\n */\n relaxed: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.xs,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.xs,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.sm,\n },\n spacious: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.md,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.md,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.md,\n },\n },\n // Loading uses the same row/line boxes as content; only the copy width is illustrative.\n loading: { titleWidthPercent: 60, descriptionWidthPercent: 40, trailingWidth: spacing.xxl },\n gap: spacing.sm,\n leadingSize: 40,\n /**\n * Frame geometry for the leading slot. The size was already declared here but\n * no renderer bound it, so every consumer re-derived the avatar box (radius,\n * clipping, centering) in product styles.\n */\n leadingShapes: { square: null, circle: \"full\" },\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.secondary, textVariant: \"body\" },\n trailing: {\n textColor: semanticColors.content.secondary,\n iconColor: semanticColors.content.decorative,\n glyph: \"sm\",\n textVariant: \"caption\",\n },\n states: {\n pressedBackground: semanticColors.canvas,\n selectedBackground: semanticColors.canvas,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: ListRowDensity; selected: boolean; tone: \"default\" | \"danger\" };\n tones: Record<\"default\" | \"danger\", { titleColor: ColorReference }>;\n density: Record<ListRowDensity, {\n oneLineMinHeight: number;\n twoLineMinHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n }>;\n loading: { titleWidthPercent: number; descriptionWidthPercent: number; trailingWidth: number };\n gap: number;\n leadingSize: number;\n leadingShapes: Record<ListRowLeadingShape, keyof typeof radius | null>;\n title: unknown;\n description: unknown;\n trailing: unknown;\n states: unknown;\n};\n\nexport type AccordionDensity = \"compact\" | \"comfortable\";\n\nexport const accordionRecipe = {\n slots: [\"root\", \"item\", \"header\", \"trigger\", \"title\", \"indicator\", \"panel\", \"divider\"] as const,\n defaults: { density: \"comfortable\", allowsMultipleExpanded: false },\n density: {\n compact: { triggerMinHeight: control.minTouchTarget, paddingVertical: spacing.xs },\n comfortable: { triggerMinHeight: layout.rowHeight.singleLine, paddingVertical: spacing.sm },\n },\n paddingHorizontal: spacing.xs,\n gap: spacing.sm,\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n indicator: { color: semanticColors.content.secondary, glyph: \"sm\" },\n panel: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n paddingBottom: spacing.md,\n paddingInlineStart: spacing.xs,\n },\n divider: semanticColors.border.default,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n transition: motionPreset.enter,\n} as const;\n\nexport type MenuItemTone = \"neutral\" | \"danger\";\n\nexport const menuRecipe = {\n slots: [\n \"trigger\",\n \"content\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"item\",\n \"leading\",\n \"copy\",\n \"label\",\n \"description\",\n \"trailing\",\n \"shortcut\",\n \"indicator\",\n \"dangerIndicator\",\n \"separator\",\n ] as const,\n defaults: { density: \"comfortable\", itemTone: \"neutral\" },\n surface: floatingSurfaceContract,\n density: {\n compact: { ...collectionItemContract, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, minHeight: layout.rowHeight.singleLine },\n },\n tones: {\n neutral: collectionItemContract.label.color,\n danger: collectionItemContract.danger,\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n leading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n shortcut: { color: semanticColors.content.secondary, textVariant: \"caption\" },\n indicator: { color: collectionItemContract.selectedIndicator, glyph: \"sm\" },\n separator: semanticColors.border.default,\n dangerIndicator: {\n color: collectionItemContract.danger,\n glyph: \"sm\",\n mark: \"alert\",\n },\n minWidth: 220,\n maxWidth: 320,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n states: { disabledOpacity: opacity.disabled },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: \"compact\" | \"comfortable\"; itemTone: MenuItemTone };\n surface: typeof floatingSurfaceContract;\n density: Record<\n \"compact\" | \"comfortable\",\n Omit<typeof collectionItemContract, \"minHeight\"> & { minHeight: number }\n >;\n tones: Record<MenuItemTone, ColorReference>;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n leading: { color: ColorReference; glyph: GlyphSize };\n shortcut: { color: ColorReference; textVariant: TextVariant };\n indicator: { color: ColorReference; glyph: GlyphSize };\n separator: ColorReference;\n dangerIndicator: {\n color: ColorReference;\n glyph: GlyphSize;\n mark: \"alert\";\n };\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n states: { disabledOpacity: number };\n transition: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n};\n\nexport type MenuDensity = keyof typeof menuRecipe.density;\n\nexport type SelectSize = \"medium\" | \"large\";\nexport type SelectDensity = \"compact\" | \"comfortable\";\n\n/**\n * Select is visually one field plus one collection, even though Web renders\n * the collection in a popover and Native renders it in a modal sheet.\n */\nexport const selectRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"trigger\",\n \"leading\",\n \"value\",\n \"placeholder\",\n \"busyIndicator\",\n \"indicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: { size: \"medium\", density: \"comfortable\" },\n adaptive: { web: \"popover\", native: \"sheet\" },\n frame: fieldFrameContract,\n sizes: {\n medium: {\n minHeight: fieldFrameContract.minHeight,\n paddingHorizontal: fieldFrameContract.paddingHorizontal,\n textVariant: \"body\",\n glyph: \"sm\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.lg,\n textVariant: \"bodyLarge\",\n glyph: \"md\",\n },\n },\n support: formSupportContract,\n value: {\n color: semanticColors.content.body,\n placeholderColor: semanticColors.content.secondary,\n gap: spacing.sm,\n },\n leading: { color: semanticColors.content.secondary },\n indicator: { color: semanticColors.content.secondary },\n busyIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: {\n ...floatingSurfaceContract,\n minWidth: 220,\n maxWidth: 420,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n },\n density: {\n compact: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: layout.rowHeight.singleLine },\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n optionLeading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n optionLabel: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: { color: semanticColors.border.focus, glyph: \"sm\" },\n stateMessage: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.sm,\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n invalidBorder: semanticColors.border.danger,\n disabledOpacity: opacity.disabled,\n },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { size: SelectSize; density: SelectDensity };\n adaptive: { web: \"popover\"; native: \"sheet\" };\n frame: typeof fieldFrameContract;\n sizes: Record<\n SelectSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n textVariant: TextVariant;\n glyph: GlyphSize;\n }\n >;\n support: typeof formSupportContract;\n value: { color: ColorReference; placeholderColor: ColorReference; gap: number };\n leading: { color: ColorReference };\n indicator: { color: ColorReference };\n busyIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof floatingSurfaceContract & {\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n };\n density: Record<\n SelectDensity,\n Omit<typeof collectionItemContract, \"minHeight\" | \"selectedBackground\" | \"highlightedBackground\"> & { minHeight: number; selectedBackground: ColorReference; highlightedBackground: ColorReference }\n >;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n optionLeading: { color: ColorReference; glyph: GlyphSize };\n optionLabel: { fontWeight: FontWeightValue; selectedFontWeight: FontWeightValue };\n selectionIndicator: { color: ColorReference; glyph: GlyphSize };\n stateMessage: {\n color: ColorReference;\n textVariant: TextVariant;\n minHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n states: {\n hoverBackground: ColorReference;\n pressedBackground: ColorReference;\n focus: typeof focusIndicatorContract;\n invalidBorder: ColorReference;\n disabledOpacity: number;\n };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\n/** Editable input anatomy layered on the exact same collection grammar. */\nexport const comboboxRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"field\",\n \"leading\",\n \"input\",\n \"indicator\",\n \"clear\",\n \"loadingIndicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: selectRecipe.defaults,\n adaptive: selectRecipe.adaptive,\n frame: selectRecipe.frame,\n sizes: selectRecipe.sizes,\n support: selectRecipe.support,\n input: selectRecipe.value,\n leading: selectRecipe.leading,\n indicator: selectRecipe.indicator,\n clear: {\n diameter: control.buttonHeight.small,\n hitSlop: control.buttonHitSlop.small,\n glyph: \"xs\",\n color: semanticColors.content.secondary,\n },\n loadingIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: selectRecipe.popover,\n density: selectRecipe.density,\n sectionLabel: selectRecipe.sectionLabel,\n optionLeading: selectRecipe.optionLeading,\n optionLabel: selectRecipe.optionLabel,\n selectionIndicator: selectRecipe.selectionIndicator,\n stateMessage: selectRecipe.stateMessage,\n states: selectRecipe.states,\n transition: selectRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: typeof selectRecipe.defaults;\n adaptive: typeof selectRecipe.adaptive;\n frame: typeof selectRecipe.frame;\n sizes: typeof selectRecipe.sizes;\n support: typeof selectRecipe.support;\n input: typeof selectRecipe.value;\n leading: typeof selectRecipe.leading;\n indicator: typeof selectRecipe.indicator;\n clear: { diameter: number; hitSlop: number; glyph: GlyphSize; color: ColorReference };\n loadingIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof selectRecipe.popover;\n density: typeof selectRecipe.density;\n sectionLabel: typeof selectRecipe.sectionLabel;\n optionLeading: typeof selectRecipe.optionLeading;\n optionLabel: typeof selectRecipe.optionLabel;\n selectionIndicator: typeof selectRecipe.selectionIndicator;\n stateMessage: typeof selectRecipe.stateMessage;\n states: typeof selectRecipe.states;\n transition: typeof selectRecipe.transition;\n};\n\nexport const segmentedControlRecipe = {\n slots: [\"root\", \"item\", \"label\", \"indicator\"] as const,\n defaults: { size: \"medium\" },\n // Category filters share the single-selection engine, with a compact surface inside a 44 target.\n // See usage/components/segmented-control.md; no separate filter-selection state is introduced.\n pills: { gap: spacing.xs, radius: radius.full, inset: spacing.xs, minHeight: control.minTouchTarget,\n selectedBackground: semanticColors.content.body, selectedContent: semanticColors.canvas,\n /**\n * Pills are content-width, so large text keeps the row: it wraps inside a block and stays one line\n * inside a horizontal scroller (SearchScreen `filtersOverflow=\"scroll\"`, a product rail). `adaptive`\n * stacking is for the equal-width connected track only. Stacking pills too turned a seven-theme\n * filter rail into a ~440pt column at accessibility-large (utilverse 1.13.0 adoption, 2026-10-06),\n * and the product swapped in a Select to escape it. Rejected: a pills-only scroll prop, because\n * the host already owns the rail and a second scroller inside it would nest horizontal scrolling.\n */\n largeTextLayout: \"wrap\" as const },\n adaptive: {\n // Equal-width rows stop being comparable when every short label wraps one\n // Hangul syllable per line. Native renderers stack the options before that\n // point so each choice remains a readable phrase and a 44pt target.\n // Applies to presentation=\"connected\" only; pills follow `pills.largeTextLayout`.\n largeTextLayout: \"stacked\" as const,\n stackAtFontScale: largeTextThreshold,\n },\n // Track and selected segment share the canvas; the blue ring identifies the chosen option.\n container: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.subtle,\n radius: \"lg\",\n padding: spacing.xxs,\n gap: spacing.xxs,\n },\n sizes: {\n small: {\n minHeight: 36,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: control.minTouchTarget,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n item: {\n radius: \"md\",\n gap: spacing.xxs,\n idleContent: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n selectedBackground: semanticColors.canvas,\n selectedContent: semanticColors.content.brand,\n /**\n * The ring stays the selection signal so the control keeps a non-text\n * contrast of at least 3:1; a fill-only thumb cannot reach that against a\n * neutral track.\n */\n selectedBorder: semanticColors.border.focus,\n selectedBorderWidth: stroke.strong,\n selectedFontWeight: fontWeight.bold,\n focusRing: semanticColors.border.focus,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport const switchRecipe = {\n // Settings rows are controls, not prominent reading content. Spint's native row\n // used bodyLarge while Web inherited its parent; one role prevents that drift.\n rowLabelTextVariant: \"body\",\n slots: [\"root\", \"track\", \"thumb\", \"label\", \"description\"] as const,\n defaults: { size: \"medium\" },\n // Preserve existing inline Web and full-row Native layouts. Settings can opt in\n // to one shared row without wrapping a switch in a second interactive target.\n presentationDefaults: { web: \"inline\", native: \"row\" },\n // Descriptions beside a fixed track become a narrow column at larger text sizes.\n // Reuse the provider's large-text boundary so Web CSS and Native reflow together.\n stackedTextScale: largeTextThreshold,\n sizes: {\n small: { width: 44, height: 26, thumb: 22, inset: 2 },\n medium: { width: 52, height: 32, thumb: 28, inset: 2 },\n },\n colors: {\n // The off state is two unsaturated planes — a `surfaceAlt` track holding a `bg`\n // thumb — so on a dark palette both collapse into the card behind them: measured\n // 1.10:1 track-to-surface and 1.20:1 thumb-to-track on the canonical dark theme,\n // where the thumb is actually *darker* than its own track. The `*OffBorder`\n // hairlines are what keep the shape readable, so they are part of the contract\n // rather than a renderer flourish. A consumer settings screen shipped with the web\n // renderer ignoring them and the control was invisible (2026-09-14); the web\n // stylesheet now paints them and `action-contrast.browser.test.tsx` holds the line.\n trackOff: semanticColors.surface.sunken,\n trackOffBorder: semanticColors.content.secondary,\n // A lit track is a filled brand plate, same role as a checked checkbox\n // (`selectionControlRecipe.states.checkedBackground`). Was `content.brand`, a\n // content role; both renderers painted `primary` anyway, so this is a no-op.\n trackOn: semanticColors.action.brand.background,\n trackOnBorder: semanticColors.border.focus,\n thumbOff: semanticColors.canvas,\n thumbOffBorder: semanticColors.content.secondary,\n thumbOn: semanticColors.canvas,\n // A disabled switch still has to report what it is set to, so disabled\n // state changes hue instead of fading uniformly with `states.disabledOpacity`\n // — a product author found that a flat opacity made \"on\" and \"off\" nearly\n // identical, turning a saved setting unreadable while its backing request\n // was in flight. The on track keeps a recognisable (if muted) brand wash,\n // the off track and both thumbs drop to neutral tones, and every part\n // keeps a hairline border so the shape stays legible at reduced contrast.\n trackOffDisabled: semanticColors.border.default,\n trackOffBorderDisabled: semanticColors.border.default,\n trackOnDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n trackOnBorderDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n thumbDisabled: semanticColors.canvas,\n thumbDisabledBorder: semanticColors.content.decorative,\n },\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n rowMinHeight: control.minTouchTarget,\n // A switch with a description is a two-line row like any other list row,\n // and a product author found that letting content decide the height gave\n // neighbouring rows different heights — this pins it to the same value as\n // `listRowRecipe.density.comfortable.twoLineMinHeight`.\n rowTwoLineMinHeight: 68,\n} as const;\n\nexport type SelectionControlKind = \"checkbox\" | \"radio\";\n\nexport const selectionControlRecipe = {\n slots: [\n \"root\",\n \"control\",\n \"indicator\",\n \"leading\",\n \"content\",\n \"label\",\n \"description\",\n ] as const,\n defaults: { kind: \"checkbox\", size: \"medium\", presentation: \"card\" },\n sizes: {\n small: {\n rowMinHeight: control.minTouchTarget,\n control: 20,\n hitSlop: 12,\n glyph: \"xs\",\n gap: spacing.xs,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n labelVariant: \"label\",\n descriptionVariant: \"caption\",\n },\n medium: {\n rowMinHeight: layout.rowHeight.singleLine,\n control: control.selectionIndicator,\n hitSlop: 10,\n glyph: \"sm\",\n gap: spacing.sm,\n paddingHorizontal: spacing.md,\n paddingVertical: spacing.sm,\n labelVariant: \"body\",\n descriptionVariant: \"label\",\n },\n },\n shapes: { checkbox: \"sm\", radio: \"full\" },\n presentations: {\n plain: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"md\",\n useSizePadding: false,\n labelColor: null,\n },\n card: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n useSizePadding: true,\n labelColor: null,\n },\n // A row inside a card shared by the whole group (paired with\n // `selectionGroupRecipe.orientations.*.gap.grouped`). The item owns its\n // own padding so the selected fill runs the full width of the group, and\n // only the first and last rows round — an item-level radius on every row\n // left a visible white sliver in the group's corners. `labelColor` is\n // pinned here (rather than left to the row) because a grouped row's\n // label sits directly on the shared card background, not on its own\n // plate — the row needs to know the label reads correctly there.\n grouped: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"lg\",\n useSizePadding: true,\n labelColor: semanticColors.content.primary,\n },\n },\n label: {\n color: semanticColors.content.body,\n fontWeight: fontWeight.semibold,\n checkedFontWeight: fontWeight.bold,\n },\n leading: { size: \"md\", color: semanticColors.content.secondary },\n description: { color: semanticColors.content.secondary },\n indicators: {\n checkbox: { checked: \"check\", mixed: \"dash\" },\n radio: { checked: \"dot\", mixed: null },\n },\n radioDotRatio: 0.42,\n states: {\n idleBackground: semanticColors.canvas,\n idleBorder: semanticColors.content.secondary,\n checkedBackground: semanticColors.action.brand.background,\n checkedBorder: semanticColors.border.focus,\n indicator: semanticColors.action.brand.content,\n // Keep the entire choice plate white; border and checked indicator carry selection.\n selectedBackground: semanticColors.canvas,\n selectedBorder: semanticColors.border.focus,\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n invalidBorder: semanticColors.border.danger,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\n/**\n * Persistent top-level navigation. The recipe reserves an optional center gap\n * for a sibling primary action but never treats that action as a destination.\n */\nexport const bottomNavigationRecipe = {\n slots: [\n \"root\",\n \"surface\",\n \"list\",\n \"item\",\n \"indicator\",\n \"icon\",\n \"label\",\n \"badge\",\n ] as const,\n defaults: bottomNavigationRecipeDefaults,\n // Selected full-item cards retain the existing navigation state engine (Spint, 2026-10-12).\n selectionTile: {\n background: semanticColors.surface.brand,\n selectedBackground: semanticColors.action.brand.background,\n selectedContent: semanticColors.action.brand.content,\n padding: spacing.xxs,\n gap: spacing.xxs,\n radius: \"lg\" as const,\n },\n /**\n * Opt-in thick plank for tile selection (Spint wooden sign, 2026-10-13). The\n * lower edges replace the floating shadow so the bar reads as one flat object.\n * The selected edge darkens the brand fill with `interaction.depth` because no\n * palette role names a \"pressed brand\" shade.\n */\n raisedSurface: {\n background: semanticColors.surface.sunken,\n border: semanticColors.border.control,\n depth: 4,\n selectedDepth: 3,\n selectedDepthColor: semanticColors.interaction.depth,\n },\n adaptive: {\n web: \"fixed-compact-viewport\",\n native: \"navigator-tab-bar\",\n },\n presentations: {\n capsule: {\n background: semanticColors.surface.default,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"full\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 480,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n bar: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"block-start\"] as const,\n radius: null,\n shadow: null,\n maxWidth: null,\n outerPaddingHorizontal: 0,\n outerPaddingTop: 0,\n },\n floating: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"xl\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 384,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n },\n distributions: {\n equal: { centerGap: 0, requiresEvenItemCount: false },\n \"center-gap\": {\n centerGap: control.buttonHeight.large + spacing.md,\n requiresEvenItemCount: true,\n },\n },\n density: {\n compact: {\n itemMinWidth: 52,\n itemMinHeight: 52,\n padding: spacing.xxs,\n gap: 2,\n icon: \"sm\" as const,\n label: \"caption\" as const,\n },\n regular: {\n itemMinWidth: 56,\n itemMinHeight: 64,\n padding: spacing.xs,\n gap: spacing.xxs,\n icon: \"md\" as const,\n label: \"caption\" as const,\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selectedIcon: semanticColors.content.brand,\n selectedLabel: semanticColors.content.brand,\n },\n /**\n * Stable icon/badge layout anchor. Selection never paints this slot as a\n * pill: the icon and label below own the non-color selected evidence.\n */\n indicator: {\n minWidth: 40,\n minHeight: 28,\n radius: \"full\" as const,\n visual: \"none\" as const,\n background: null,\n border: null,\n borderWidth: 0,\n },\n icon: {\n /**\n * Adapters apply at least one supported emphasis. Stroke-oriented glyphs\n * use strokeWidth; renderers without stroke control use scale instead.\n */\n selectedEmphasis: {\n minimumAdaptations: 1,\n strokeWidth: { idle: stroke.strong, selected: 3 },\n scale: { idle: 1, selected: 1.06 },\n },\n },\n label: {\n fontWeight: fontWeight.semibold,\n selectedFontWeight: fontWeight.bold,\n textAlign: \"center\",\n wrap: true,\n fixedLines: null,\n },\n badge: {\n size: \"small\" as const,\n variant: \"floating\" as const,\n anchor: { blockStart: -spacing.xxs, inlineEnd: -spacing.xs },\n subtreeHiddenFromAccessibility: true,\n },\n safeArea: {\n mode: \"additive\",\n minimumBottomPadding: spacing.xs,\n },\n keyboard: { defaultBehavior: \"hide\", movesAboveKeyboard: false },\n largeText: {\n allowFontScaling: true,\n // Persistent navigation has to keep every destination visible at once.\n // Let labels respond to Dynamic Type, but cap the visual chrome before a\n // three-character destination turns into a three-line column. The full,\n // uncapped label remains the item's accessible name.\n maxFontSizeMultiplier: 1.4,\n fixedItemHeight: false,\n labelWraps: true,\n },\n direction: {\n itemOrder: \"logical\",\n badgeAnchor: \"inline-end\",\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n selectedNonColorEvidence: {\n target: \"icon-and-label\" as const,\n label: \"font-weight\" as const,\n icon: \"emphasis\" as const,\n },\n selectedFocusSeparation: {\n selectedTarget: \"icon-and-label\" as const,\n focusTarget: \"item\",\n minimumGap: focusIndicatorContract.offset,\n },\n },\n transition: motionPreset.micro,\n} as const;\n\nexport const tabsRecipe = {\n slots: [\"root\", \"list\", \"tab\", \"label\", \"indicator\", \"panel\"] as const,\n defaults: { size: \"medium\", layout: \"content\", overflow: \"scroll\" },\n sizes: {\n small: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: 48,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selected: semanticColors.content.primary,\n indicator: semanticColors.border.focus,\n divider: semanticColors.border.default,\n },\n gap: spacing.xs,\n icon: { glyph: \"xs\" },\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n layouts: {\n content: { fitted: false },\n fitted: { fitted: true },\n },\n overflow: {\n scroll: { scrollable: true, wrap: false },\n clip: { scrollable: false, wrap: false },\n },\n indicatorHeight: stroke.strong,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport type NoticeTone = \"info\" | \"success\" | \"warning\" | \"attention\" | \"danger\";\n\nexport const noticeRecipe = {\n slots: [\"root\", \"icon\", \"content\", \"title\", \"description\", \"action\"] as const,\n defaults: { tone: \"info\" },\n tones: {\n ...semanticColors.feedback,\n info: {\n ...semanticColors.feedback.info,\n // The informational wash landed bluer and darker than the selection\n // tint itself over canvas, so a banner outranked the control the\n // reader was supposed to act on. `info` alone goes neutral — its\n // accent stays in the icon, the title, and the border; `success`/\n // `warning`/`attention`/`danger` keep the tinted surface because a\n // product author confirmed those readings didn't have the same\n // conflict with a selection state.\n background: semanticColors.canvas,\n },\n },\n radius: \"md\",\n padding: spacing.md,\n gap: spacing.sm,\n contentGap: spacing.xxs,\n iconSize: \"sm\",\n borderWidth: stroke.default,\n title: { textVariant: \"body\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.body, textVariant: \"body\" },\n} as const;\n\nexport const skeletonRecipe = {\n slots: [\"root\"] as const,\n // animated는 0.9.12까지 false였다. 정지한 블록은 로딩이 아니라 깨진 화면으로\n // 읽힌다. 전환 근거와 소비 측 migration은\n // .changeset/skeleton-pulse-by-default.md에 있다.\n defaults: { shape: \"block\", animated: true },\n background: semanticColors.canvas,\n shapes: {\n block: { radius: \"md\", defaultHeight: spacing.xxl },\n text: { radius: \"sm\", defaultHeight: spacing.md },\n circle: { radius: \"full\", defaultHeight: glyph.xxl },\n },\n animation: {\n duration: motion.slow * 4,\n easing: \"standard\",\n fromOpacity: 0.56,\n toOpacity: 1,\n reducedMotion: \"static\",\n },\n} as const;\n\nexport const emptyStateRecipe = {\n slots: [\"root\", \"icon\", \"title\", \"description\", \"action\"] as const,\n defaults: { density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.xl },\n regular: { paddingVertical: spacing.xxxl },\n },\n paddingHorizontal: spacing.xl,\n gap: spacing.xs,\n icon: { size: \"lg\", color: semanticColors.content.decorative },\n title: { textVariant: \"body\", color: semanticColors.content.primary, fontWeight: fontWeight.semibold },\n description: { textVariant: \"label\", color: semanticColors.content.secondary },\n} as const;\n\nexport const spinnerRecipe = {\n slots: [\"root\"] as const,\n defaults: { size: \"medium\", tone: \"brand\" },\n sizes: { small: glyph.xs, medium: glyph.sm, large: glyph.lg },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.secondary,\n inverse: semanticColors.content.inverse,\n },\n strokeWidth: stroke.strong,\n animation: {\n duration: 800,\n easing: \"standard\",\n reducedMotion: \"static\",\n },\n} as const;\n\nexport type LoadMoreDensity = \"compact\" | \"regular\";\n\nexport const loadMoreRecipe = {\n slots: [\n \"root\",\n \"status\",\n \"spinner\",\n \"trigger\",\n \"error\",\n \"retry\",\n \"end\",\n ] as const,\n defaults: { mode: \"automatic\", density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.sm, gap: spacing.xs },\n regular: { paddingVertical: spacing.lg, gap: spacing.sm },\n },\n status: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n },\n error: {\n color: semanticColors.content.danger,\n textVariant: \"label\",\n },\n end: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trigger: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n radius: \"md\",\n color: semanticColors.content.brand,\n textVariant: \"label\",\n fontWeight: fontWeight.bold,\n },\n spinner: { size: \"small\", tone: \"brand\" },\n states: {\n focus: focusIndicatorContract,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { mode: \"automatic\" | \"manual\"; density: LoadMoreDensity };\n density: Record<LoadMoreDensity, { paddingVertical: number; gap: number }>;\n status: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n end: { color: ColorReference; textVariant: TextVariant };\n trigger: {\n minHeight: number;\n paddingHorizontal: number;\n radius: keyof typeof radius;\n color: ColorReference;\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n };\n spinner: { size: SpinnerSize; tone: SpinnerTone };\n states: {\n focus: typeof focusIndicatorContract;\n pressedOpacity: number;\n disabledOpacity: number;\n };\n};\n\nexport const avatarRecipe = {\n slots: [\"root\", \"image\", \"fallback\", \"badge\", \"group\"] as const,\n /**\n * 겹쳐 쌓은 아바타 묶음이 얼마나 겹치는가. 비율로 두는 이유는 크기 축이 이미 네 단계라\n * 픽셀로 적으면 네 벌이 되기 때문이다. 남은 인원은 제품이 문구로 만든다(\"+3\").\n */\n overlapRatio: 0.3,\n defaults: { size: \"medium\", shape: \"circle\" },\n sizes: { small: 32, medium: 40, large: 48, xlarge: 64 },\n shapes: { rounded: \"md\", circle: \"full\" },\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n border: semanticColors.border.default,\n} as const;\n\nexport type StatisticDensity = \"compact\" | \"comfortable\";\nexport type StatisticPresentation = \"plain\" | \"surface\";\n\nexport const statisticRecipe = {\n slots: [\n \"group\",\n \"root\",\n \"label\",\n \"valueRow\",\n \"prefix\",\n \"value\",\n \"suffix\",\n \"trend\",\n \"trendMark\",\n \"hint\",\n ] as const,\n defaults: { density: \"comfortable\", presentation: \"plain\", columns: 3 },\n density: {\n compact: {\n padding: spacing.sm,\n gap: spacing.xxs,\n labelVariant: \"caption\",\n valueVariant: \"title\",\n },\n comfortable: {\n padding: spacing.md,\n gap: spacing.xs,\n labelVariant: \"label\",\n valueVariant: \"heading\",\n },\n },\n presentations: {\n plain: { background: null, border: null, borderWidth: 0, radius: \"md\" },\n surface: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n },\n },\n group: {\n gap: spacing.xs,\n minItemWidth: 120,\n columns: [1, 2, 3, 4] as const,\n },\n label: {\n color: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n },\n value: {\n color: semanticColors.content.primary,\n fontWeight: fontWeight.heavy,\n numericVariant: \"tabular\",\n maxLines: null,\n },\n affix: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n },\n hint: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trend: {\n textVariant: \"caption\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n marks: {\n up: \"trendUp\",\n down: \"trendDown\",\n flat: \"trendFlat\",\n },\n tones: {\n neutral: semanticColors.content.secondary,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: {\n density: StatisticDensity;\n presentation: StatisticPresentation;\n columns: 1 | 2 | 3 | 4;\n };\n density: Record<\n StatisticDensity,\n {\n padding: number;\n gap: number;\n labelVariant: TextVariant;\n valueVariant: TextVariant;\n }\n >;\n presentations: Record<\n StatisticPresentation,\n {\n background: ColorReference | null;\n border: ColorReference | null;\n borderWidth: number;\n radius: keyof typeof radius;\n }\n >;\n group: {\n gap: number;\n minItemWidth: number;\n columns: readonly (1 | 2 | 3 | 4)[];\n };\n label: { color: ColorReference; fontWeight: FontWeightValue };\n value: {\n color: ColorReference;\n fontWeight: FontWeightValue;\n numericVariant: \"tabular\";\n maxLines: null;\n };\n affix: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n hint: { color: ColorReference; textVariant: TextVariant };\n trend: {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n gap: number;\n marks: Record<\"up\" | \"down\" | \"flat\", string>;\n tones: Record<\"neutral\" | \"success\" | \"warning\" | \"danger\", ColorReference>;\n };\n};\n\nexport const sheetRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"handle\", \"header\", \"title\", \"body\", \"footer\", \"close\"] as const,\n defaults: { placement: \"bottom\", size: \"auto\" },\n /**\n * How tall the sheet opens. `auto` keeps the content-driven height that the\n * recipe already caps with `maxHeightRatio`. The fixed steps exist because\n * consumers otherwise reach for `contentStyle={{ height }}`, which moves a\n * recipe-owned dimension into product code.\n */\n sizes: {\n auto: null,\n medium: 0.6,\n large: 0.85,\n full: 1,\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"xl\",\n shadow: floatingSurfaceContract.shadow,\n /** Caps `size=\"auto\"` only; fixed `sizes` (medium/large/full) are bounded by the safe-area viewport instead. */\n maxHeightRatio: 0.9,\n paddingHorizontal: spacing.lg,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n },\n web: { maxWidth: 640 },\n safeArea: {\n edge: \"bottom\",\n mode: \"additive\",\n minimumPadding: spacing.sm,\n },\n handle: {\n width: 36,\n height: 4,\n radius: \"full\",\n color: semanticColors.content.secondary,\n visibleByDefault: false,\n showWhen: \"swipe-dismiss-enabled\",\n },\n header: { minHeight: control.minTouchTarget, gap: spacing.sm },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n },\n body: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.md,\n },\n footer: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.sm,\n paddingTop: spacing.sm,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\nexport const dialogRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"header\", \"title\", \"description\", \"body\", \"footer\", \"close\"] as const,\n defaults: { size: \"medium\", dismissible: true },\n sizes: {\n small: { maxWidth: 320, padding: spacing.lg },\n medium: { maxWidth: 420, padding: spacing.xl },\n large: { maxWidth: 640, padding: spacing.xl },\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"lg\",\n gap: spacing.md,\n shadow: floatingSurfaceContract.shadow,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\n/**\n * Tone is the dialog's reason for interrupting, not its decoration.\n *\n * `attention` and `danger` covered \"are you sure?\" and \"this destroys\n * something\", but consumers also stop the user to *explain* an action before\n * running it — an intro before a button that copies content into the account,\n * or a confirmation that something finished. Those were shipping with the\n * attention mark, so a neutral explanation read as a warning (reported by a\n * product team on 2026-09-15). `info` and `success` carry the existing feedback\n * accents so the axis stays one token lookup per renderer.\n */\nexport type AlertDialogTone = \"attention\" | \"danger\" | \"info\" | \"success\";\n\nexport const alertDialogRecipe = {\n slots: [\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"icon\",\n \"title\",\n \"description\",\n \"status\",\n \"error\",\n \"actions\",\n \"cancel\",\n \"confirm\",\n ] as const,\n defaults: { tone: \"attention\", size: \"small\" },\n sizes: dialogRecipe.sizes,\n backdrop: dialogRecipe.backdrop,\n content: dialogRecipe.content,\n tones: {\n attention: {\n icon: semanticColors.feedback.attention.foreground,\n iconBackground: semanticColors.feedback.attention.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n danger: {\n icon: semanticColors.content.danger,\n iconBackground: semanticColors.feedback.danger.background,\n confirm: semanticColors.action.danger.background,\n confirmContent: semanticColors.action.danger.content,\n },\n // Explanation and completion keep the brand confirm button: the action they\n // introduce is the ordinary one, only the mark and its wash change.\n info: {\n icon: semanticColors.feedback.info.foreground,\n iconBackground: semanticColors.feedback.info.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n success: {\n icon: semanticColors.feedback.success.foreground,\n iconBackground: semanticColors.feedback.success.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n },\n icon: { containerSize: control.minTouchTarget, glyph: \"md\", radius: \"full\" },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n },\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n error: formSupportContract.error,\n // Stacked: confirm on top, cancel below, tighter gap (reported 2026-09-27). Row stays [cancel][confirm].\n actions: {\n gap: spacing.sm,\n stackedGap: spacing.xs,\n stackedOrder: \"confirm-first\",\n stackBelow: breakpoint.medium,\n minButtonWidth: 96,\n },\n transition: dialogRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: AlertDialogTone; size: DialogSize };\n sizes: typeof dialogRecipe.sizes;\n backdrop: typeof dialogRecipe.backdrop;\n content: typeof dialogRecipe.content;\n tones: Record<\n AlertDialogTone,\n {\n icon: ColorReference;\n iconBackground: ColorReference;\n confirm: ColorReference;\n confirmContent: ColorReference;\n }\n >;\n icon: { containerSize: number; glyph: GlyphSize; radius: keyof typeof radius };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n actions: {\n gap: number;\n stackedGap: number;\n stackedOrder: \"confirm-first\";\n stackBelow: number;\n minButtonWidth: number;\n };\n transition: typeof dialogRecipe.transition;\n};\n\nexport type ToastPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\";\nexport type ToastTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type ToastToneMark =\n | \"notifications\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"alert\";\n\nexport const toastRecipe = {\n slots: [\n \"viewport\",\n \"root\",\n \"toneMark\",\n \"icon\",\n \"media\",\n \"content\",\n \"title\",\n \"description\",\n \"progress\",\n \"action\",\n \"close\",\n ] as const,\n defaults: { tone: \"neutral\", placement: \"bottom\", durationMs: 3000 },\n adaptive: { web: \"fixed-viewport\", native: \"safe-area-overlay\" },\n viewport: {\n layer: layer.toast,\n gap: spacing.sm,\n inset: spacing.md,\n maxWidth: 420,\n safeAreaMode: \"additive\",\n },\n placements: {\n top: { blockEdge: \"top\", inlineEdge: \"center\", stackFrom: \"top\" },\n \"top-start\": { blockEdge: \"top\", inlineEdge: \"start\", stackFrom: \"top\" },\n \"top-end\": { blockEdge: \"top\", inlineEdge: \"end\", stackFrom: \"top\" },\n bottom: { blockEdge: \"bottom\", inlineEdge: \"center\", stackFrom: \"bottom\" },\n \"bottom-start\": { blockEdge: \"bottom\", inlineEdge: \"start\", stackFrom: \"bottom\" },\n \"bottom-end\": { blockEdge: \"bottom\", inlineEdge: \"end\", stackFrom: \"bottom\" },\n },\n // 1.10.0: tone is carried by a tinted icon badge, not a 2px edge strip — the strip plus a bare glyph read\n // as a grey dot on neutral toasts (BurnTok 2026-09-30 feedback \"알림 ui 구려\"). `badge` is the badge fill.\n tones: {\n neutral: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.secondary,\n badge: semanticColors.surface.sunken,\n mark: \"notifications\",\n },\n info: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.info.foreground,\n badge: semanticColors.feedback.info.badgeBackground,\n mark: \"info\",\n },\n success: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.success.foreground,\n badge: semanticColors.feedback.success.badgeBackground,\n mark: \"success\",\n },\n warning: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.warning.foreground,\n badge: semanticColors.feedback.warning.badgeBackground,\n mark: \"warning\",\n },\n danger: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.danger,\n badge: semanticColors.feedback.danger.badgeBackground,\n mark: \"alert\",\n },\n },\n surface: {\n background: semanticColors.canvas,\n // Strong border stays: the card boundary must keep 3:1 against the page (toast.test.ts, WCAG 1.4.11).\n // 1.10.0 softened the shape to lg; 1.20 makes every toast the \"panel\" (xl) that BurnTok designed for its\n // review status, by user request on 2026-10-10 (\"패널이 토스트가 되는거지\").\n border: semanticColors.border.strong,\n borderWidth: stroke.default,\n radius: \"xl\",\n shadow: floatingSurfaceContract.shadow,\n minHeight: layout.rowHeight.singleLine,\n padding: spacing.md,\n gap: spacing.sm,\n maxWidth: 420,\n },\n // Retired in 1.10.0 (width 0): the icon badge carries tone. Kept so the slot contract stays additive.\n toneMark: { width: 0, radius: \"full\" },\n icon: { glyph: \"sm\", badgeDiameter: 32, badgeRadius: \"full\" },\n // A product media (mascot, avatar) replaces the tone badge in the same leading column. 44 keeps a\n // character legible; it is decorative, so the tone still lives in `data-tone` and the copy.\n media: { size: 44 },\n content: { gap: spacing.xxs },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n },\n // Secondary copy so the title leads; body-on-body read as one grey block.\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n // Step dots of a running task: done and current are brand, upcoming is the divider colour; the current\n // label is bold. Labels sit beside each dot so the row reads without colour alone (WCAG 1.4.1).\n progress: {\n gap: spacing.sm,\n dotSize: 6,\n currentScale: 1.4,\n doneColor: semanticColors.content.brand,\n upcomingColor: semanticColors.border.default,\n labelColor: semanticColors.content.secondary,\n currentLabelColor: semanticColors.content.primary,\n textVariant: \"caption\",\n },\n // 1.10.0: a tinted pill button instead of a bare text link, so the one thing a toast asks for is\n // recognisable as a control. Hit area stays the 44pt touch target. 1.20 panel: it sits under the copy\n // at the start edge, where the eye already is, instead of the far end.\n action: {\n color: semanticColors.content.brand,\n background: semanticColors.surface.brand,\n radius: \"full\",\n align: \"start\",\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n },\n close: {\n color: semanticColors.content.secondary,\n diameter: control.minTouchTarget,\n glyph: \"xs\",\n },\n states: {\n pressedOpacity: opacity.pressed,\n draggedOpacity: opacity.dragged,\n focus: focusIndicatorContract,\n },\n gesture: { dismissThreshold: 50 },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: ToastTone; placement: ToastPlacement; durationMs: number };\n adaptive: { web: \"fixed-viewport\"; native: \"safe-area-overlay\" };\n viewport: {\n layer: number;\n gap: number;\n inset: number;\n maxWidth: number;\n safeAreaMode: \"additive\";\n };\n placements: Record<\n ToastPlacement,\n {\n blockEdge: \"top\" | \"bottom\";\n inlineEdge: \"start\" | \"center\" | \"end\";\n stackFrom: \"top\" | \"bottom\";\n }\n >;\n tones: Record<\n ToastTone,\n { foreground: ColorReference; accent: ColorReference; badge: ColorReference; mark: ToastToneMark }\n >;\n surface: {\n background: ColorReference;\n border: ColorReference;\n borderWidth: number;\n radius: keyof typeof radius;\n shadow: typeof floatingSurfaceContract.shadow;\n minHeight: number;\n padding: number;\n gap: number;\n maxWidth: number;\n };\n toneMark: { width: number; radius: keyof typeof radius };\n icon: { glyph: GlyphSize; badgeDiameter: number; badgeRadius: keyof typeof radius };\n media: { size: number };\n content: { gap: number };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n progress: {\n gap: number;\n dotSize: number;\n currentScale: number;\n doneColor: ColorReference;\n upcomingColor: ColorReference;\n labelColor: ColorReference;\n currentLabelColor: ColorReference;\n textVariant: TextVariant;\n };\n action: {\n color: ColorReference;\n background: ColorReference;\n radius: keyof typeof radius;\n align: \"start\" | \"end\";\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n minHeight: number;\n paddingHorizontal: number;\n };\n close: { color: ColorReference; diameter: number; glyph: GlyphSize };\n states: {\n pressedOpacity: number;\n draggedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n gesture: { dismissThreshold: number };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\nexport const tooltipRecipe = {\n slots: [\"provider\", \"trigger\", \"content\", \"arrow\"] as const,\n defaults: tooltipDescriptorDefaults,\n layer: layer.tooltip,\n surface: {\n ...floatingSurfaceContract,\n background: semanticColors.content.primary,\n border: semanticColors.content.primary,\n radius: \"sm\" as const,\n padding: spacing.xs,\n },\n content: {\n color: semanticColors.canvas,\n textVariant: \"label\",\n maxWidth: 280,\n },\n arrow: {\n width: 10,\n height: 5,\n color: semanticColors.content.primary,\n padding: spacing.xs,\n },\n positioning: {\n sideOffset: spacing.xxs,\n collisionPadding: spacing.sm,\n },\n transition: { enter: motionPreset.micro, exit: motionPreset.exit },\n} as const;\n\nexport const topBarRecipe = {\n slots: [\n \"root\",\n \"leading\",\n \"title\",\n \"titleLeading\",\n \"titleAction\",\n \"trailing\",\n \"action\",\n \"actionLabel\",\n ] as const,\n defaults: { centered: true },\n minHeight: control.buttonHeight.large,\n sideMinWidth: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n largeTextThreshold,\n title: { textVariant: \"bodyLarge\", color: semanticColors.content.primary, fontWeight: fontWeight.bold },\n titleAction: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xs,\n pressedOpacity: opacity.pressed,\n },\n action: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xxs,\n paddingHorizontal: spacing.xxs,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n actionLabel: {\n textVariant: \"caption\",\n color: semanticColors.content.primary,\n fontWeight: fontWeight.medium,\n },\n background: semanticColors.canvas,\n} as const;\n\nexport const bottomCtaRecipe = {\n slots: [\"root\", \"description\", \"secondaryAction\", \"primaryAction\"] as const,\n minHeight: 64,\n paddingHorizontal: layout.pagePadding.regular,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n gap: spacing.sm,\n // A footer painted in the canvas tone left only a 1pt hairline between it\n // and the content scrolling underneath — a product author found that the\n // line cut a glyph in half at whatever scroll position the reader stopped\n // at, reading as a broken card rather than a footer. Layering by surface\n // (one step up from canvas) instead of by shadow alone is how this\n // component builds the separation; `shadow` below is reserved for the one\n // case that still needs it — see its comment.\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n // The cut described above is the scroll viewport's edge, not a spacing\n // problem — content clips mid-glyph, and a hairline between two\n // similarly-light planes can't carry that on its own. The footer casts\n // upward instead: the one case where a shadow, rather than a surface step,\n // is the right tool, because the footer genuinely overlaps the content\n // beneath it.\n shadow: {\n color: \"#000000\",\n opacity: 0.08,\n radius: 8,\n offsetY: -2,\n elevation: 8,\n },\n} as const;\n\nexport const sectionRecipe = {\n slots: [\"root\", \"header\", \"copy\", \"title\", \"description\", \"action\", \"content\"] as const,\n gap: spacing.xs,\n headerGap: spacing.sm,\n copyGap: spacing.xxs,\n title: { textVariant: \"title\", color: semanticColors.content.body, fontWeight: fontWeight.bold },\n description: { textVariant: \"caption\", color: semanticColors.content.secondary },\n} as const;\n\nexport type SegmentedControlSize = keyof typeof segmentedControlRecipe.sizes;\nexport type SwitchPresentation = \"inline\" | \"row\";\nexport type SwitchSize = keyof typeof switchRecipe.sizes;\nexport type SelectionControlSize = keyof typeof selectionControlRecipe.sizes;\nexport type SelectionControlPresentation = keyof typeof selectionControlRecipe.presentations;\nexport type TabSize = keyof typeof tabsRecipe.sizes;\nexport type TabsLayout = keyof typeof tabsRecipe.layouts;\nexport type TabsOverflow = keyof typeof tabsRecipe.overflow;\nexport type SpinnerSize = keyof typeof spinnerRecipe.sizes;\nexport type SpinnerTone = keyof typeof spinnerRecipe.tones;\nexport type AvatarSize = keyof typeof avatarRecipe.sizes;\nexport type AvatarShape = keyof typeof avatarRecipe.shapes;\nexport type DialogSize = keyof typeof dialogRecipe.sizes;\n"]}
1
+ {"version":3,"file":"component-recipes.js","sourceRoot":"","sources":["../src/component-recipes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EACR,UAAU,EACV,OAAO,EACP,KAAK,EACL,KAAK,EACL,kBAAkB,EAClB,MAAM,EACN,UAAU,EACV,MAAM,EACN,YAAY,EACZ,OAAO,EACP,MAAM,EACN,OAAO,EACP,MAAM,GAIP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EACL,gBAAgB,EAChB,6BAA6B,GAK9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GAIxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC;AAkB9B,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,CAAU;IACxB,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;IACnE,KAAK,EAAE;QACL,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACvC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;QACjC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ;QACvC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;QACvC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACnC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;QACrC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;KACxC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,MAAM,EAAE,UAAU,CAAC,QAAQ;QAC3B,MAAM,EAAE,UAAU,CAAC,IAAI;KACxB;CAUF,CAAC;AAcF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,CAAU;IACxB,QAAQ,EAAE;QACR,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,IAAI;KACjB;IACD,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE;QACL,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACvC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAC3C,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;QAC7C,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACnC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;QAC7C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;QACnD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;QACnD,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;QACrC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;KACxC;IACD,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;IACpC,MAAM,EAAE;QACN,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,cAAc;KACxB;CAiBF,CAAC;AAOF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC,MAAM,CAAU;IACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IACvF,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;IACxC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU;IACrD,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU;CAcxD,CAAC;AAKF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAU;IACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9C,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACnC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;KACrC;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,UAAU,CAAC,QAAQ;YAC/B,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;SACf;QACD,wDAAwD;QACxD,UAAU,EAAE;YACV,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,UAAU,CAAC,IAAI;YAC3B,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,OAAO,CAAC,cAAc;YACjC,QAAQ,EAAE,OAAO,CAAC,cAAc;SACjC;KACF;IACD,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;IACzC,MAAM,EAAE;QACN,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,KAAK,EAAE,sBAAsB;KAC9B;CAqBF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAU;IACvF,QAAQ,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE;IAC3D,YAAY,EAAE;QACZ,QAAQ,EAAE;YACR,SAAS,EAAE,QAAQ;YACnB,qEAAqE;YACrE,qEAAqE;YACrE,0EAA0E;YAC1E,qDAAqD;YACrD,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SAC1D;QACD,UAAU,EAAE;YACV,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SACzD;KACF;IACD,KAAK,EAAE,mBAAmB,CAAC,KAAK;IAChC,iBAAiB,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE;IAC3D,WAAW,EAAE,mBAAmB,CAAC,IAAI;IACrC,KAAK,EAAE,mBAAmB,CAAC,KAAK;IAChC,UAAU,EAAE,mBAAmB,CAAC,GAAG;IACnC,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE;CACrC,CAAC;AA0BX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU;IACzC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;IAChE,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,kBAAkB,EAAE,IAAI;YACxB,cAAc,EAAE,IAAI;SACrB;QACD,OAAO,EAAE;YACP,kBAAkB,EAAE,KAAK;YACzB,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;SAC9C;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;YACzC,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;YAChD,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,MAAM,EAAE,IAAI;SACb;QACD,MAAM,EAAE;YACN,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YACvC,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC9C,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC1C,MAAM,EAAE,IAAI;SACb;QACD,KAAK,EAAE;YACL,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;YACrC,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;YAC5C,sDAAsD;YACtD,sEAAsE;YACtE,iEAAiE;YACjE,oEAAoE;YACpE,oEAAoE;YACpE,qBAAqB;YACrB,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,MAAM,EAAE,IAAI;SACb;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;YAChD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;YACvD,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;SAC5C;QACD,OAAO,EAAE;YACP,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YACnD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YAC1D,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe;YAC3D,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;SAC/C;QACD,OAAO,EAAE;YACP,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YACnD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YAC1D,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe;YAC3D,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;SAC/C;QACD,SAAS,EAAE;YACT,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU;YACrD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU;YAC5D,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe;YAC7D,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM;SACjD;QACD,MAAM,EAAE;YACN,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;YAClD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;YACzD,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe;YAC1D,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;SAC9C;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL,SAAS,EAAE,EAAE;YACb,iBAAiB,EAAE,OAAO,CAAC,GAAG;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,WAAW,EAAE,SAAS;SACvB;QACD,MAAM,EAAE;YACN,SAAS,EAAE,EAAE;YACb,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,WAAW,EAAE,SAAS;SACvB;KACF;IACD,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,MAAM,CAAC,OAAO;IAC3B,UAAU,EAAE,UAAU,CAAC,IAAI;CACnB,CAAC;AAIX,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAU;IAC5E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7C,KAAK,EAAE;QACL,MAAM,EAAE;YACN,SAAS,EAAE,OAAO,CAAC,cAAc;YACjC,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,EAAE;YACf,KAAK,EAAE,IAAI;YACX,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,MAAM;SACpB;QACD,KAAK,EAAE;YACL,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK;YACrC,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,EAAE;YACf,KAAK,EAAE,IAAI;YACX,aAAa,EAAE,OAAO,CAAC,cAAc;YACrC,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,WAAW;SACzB;KACF;IACD,MAAM,EAAE;QACN,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACvC,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAC7C,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;QAC1C,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QACrC,KAAK,EAAE,sBAAsB,CAAC,KAAK;QACnC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM;KACtC;IACD;;;;;;;;;;;;OAYG;IACH,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IACnD,WAAW,EAAE,MAAM,CAAC,OAAO;IAC3B,cAAc,EAAE,sBAAsB,CAAC,KAAK;IAC5C,eAAe,EAAE,sBAAsB,CAAC,MAAM;IAC9C,MAAM,EAAE;QACN,eAAe,EAAE,OAAO,CAAC,QAAQ;QACjC,cAAc,EAAE,OAAO,CAAC,OAAO;KAChC;CAyBF,CAAC;AAIF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAU;IACrE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5C;;;;OAIG;IACH,KAAK,EAAE;QACL,KAAK,EAAE;YACL,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK;YAChC,OAAO,EAAE,CAAC;YACV,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,WAAW,EAAE,MAAM;SACpB;QACD,MAAM,EAAE;YACN,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;YACjC,OAAO,EAAE,CAAC;YACV,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,EAAE;YACf,WAAW,EAAE,MAAM;SACpB;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;YACzC,gEAAgE;YAChE,qEAAqE;YACrE,kEAAkE;YAClE,uCAAuC;YACvC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;SACtC;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;YACrC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK;SACpC;QACD,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;IACD,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,MAAM,CAAC,OAAO;IAC3B,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,CAAC,IAAI,EAAE;IAC/E,kBAAkB,EAAE;QAClB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACnC,KAAK,EAAE,IAAI;KACZ;IACD,KAAK,EAAE,sBAAsB;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAU;IACjC,QAAQ,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE;IACtD,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;IACpC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,MAAM,EAAE;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,OAAO,CAAC,EAAE;QACjB,IAAI,EAAE,OAAO,CAAC,EAAE;KACjB;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAU;IAC7C,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;IACnC,UAAU,EAAE;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;QACpC,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;KACvD;IACD,UAAU,EAAE,IAAI;CACR,CAAC;AAMX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAU;IAClF,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;IACtE,0FAA0F;IAC1F,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;IACtH,OAAO,EAAE;QACP,OAAO,EAAE;YACP,gBAAgB,EAAE,OAAO,CAAC,cAAc;YACxC,gBAAgB,EAAE,EAAE;YACpB,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,eAAe,EAAE,OAAO,CAAC,GAAG;SAC7B;QACD,WAAW,EAAE;YACX,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;YAC7C,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;YAC1C,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;SAC5B;QACD;;;;;UAKE;QACF,OAAO,EAAE;YACP,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,OAAO,CAAC,EAAE;YAC1D,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE;YACvD,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;SAC5B;QACD,QAAQ,EAAE;YACR,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,OAAO,CAAC,EAAE;YAC1D,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE;YACvD,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;SAC5B;KACF;IACD,wFAAwF;IACxF,OAAO,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE;IAC3F,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,WAAW,EAAE,EAAE;IACf;;;;OAIG;IACH,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAC/C,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;IACpG,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;IAC7E,QAAQ,EAAE;QACR,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAC3C,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;QAC5C,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,SAAS;KACvB;IACD,MAAM,EAAE;QACN,iBAAiB,EAAE,cAAc,CAAC,MAAM;QACxC,kBAAkB,EAAE,cAAc,CAAC,MAAM;QACzC,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;CAmBF,CAAC;AAIF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAU;IAC/F,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,KAAK,EAAE;IACnE,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,cAAc,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,EAAE;QAClF,WAAW,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,EAAE;KAC5F;IACD,iBAAiB,EAAE,OAAO,CAAC,EAAE;IAC7B,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;IACpG,SAAS,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IACnE,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;QAClC,WAAW,EAAE,MAAM;QACnB,aAAa,EAAE,OAAO,CAAC,EAAE;QACzB,kBAAkB,EAAE,OAAO,CAAC,EAAE;KAC/B;IACD,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;IACtC,MAAM,EAAE;QACN,iBAAiB,EAAE,cAAc,CAAC,MAAM;QACxC,KAAK,EAAE,sBAAsB;QAC7B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;IACD,UAAU,EAAE,YAAY,CAAC,KAAK;CACtB,CAAC;AAIX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE;QACL,SAAS;QACT,SAAS;QACT,UAAU;QACV,SAAS;QACT,cAAc;QACd,MAAM;QACN,SAAS;QACT,MAAM;QACN,OAAO;QACP,aAAa;QACb,UAAU;QACV,UAAU;QACV,WAAW;QACX,iBAAiB;QACjB,WAAW;KACH;IACV,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE;IACzD,OAAO,EAAE,uBAAuB;IAChC,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,GAAG,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE;QACzE,WAAW,EAAE,EAAE,GAAG,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE;KACnF;IACD,KAAK,EAAE;QACL,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK;QAC3C,MAAM,EAAE,sBAAsB,CAAC,MAAM;KACtC;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;KAC5B;IACD,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IACjE,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE;IAC7E,SAAS,EAAE,EAAE,KAAK,EAAE,sBAAsB,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE;IAC3E,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;IACxC,eAAe,EAAE;QACf,KAAK,EAAE,sBAAsB,CAAC,MAAM;QACpC,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,OAAO;KACd;IACD,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,OAAO,CAAC,EAAE;IACtB,gBAAgB,EAAE,OAAO,CAAC,EAAE;IAC5B,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC7C,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;CAgCnE,CAAC;AAOF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,MAAM;QACN,OAAO;QACP,SAAS;QACT,SAAS;QACT,OAAO;QACP,aAAa;QACb,eAAe;QACf,WAAW;QACX,aAAa;QACb,OAAO;QACP,SAAS;QACT,UAAU;QACV,SAAS;QACT,cAAc;QACd,QAAQ;QACR,eAAe;QACf,YAAY;QACZ,aAAa;QACb,mBAAmB;QACnB,oBAAoB;QACpB,cAAc;KACN;IACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE;IACpD,QAAQ,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IAC7C,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE;QACL,MAAM,EAAE;YACN,SAAS,EAAE,kBAAkB,CAAC,SAAS;YACvC,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;YACvD,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE,IAAI;SACZ;QACD,KAAK,EAAE;YACL,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK;YACrC,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,WAAW,EAAE,WAAW;YACxB,KAAK,EAAE,IAAI;SACZ;KACF;IACD,OAAO,EAAE,mBAAmB;IAC5B,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;QAClC,gBAAgB,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAClD,GAAG,EAAE,OAAO,CAAC,EAAE;KAChB;IACD,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE;IACpD,SAAS,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE;IACtD,aAAa,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACnE,OAAO,EAAE;QACP,GAAG,uBAAuB;QAC1B,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,gBAAgB,EAAE,OAAO,CAAC,EAAE;KAC7B;IACD,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,GAAG,sBAAsB,EAAE,kBAAkB,EAAE,cAAc,CAAC,MAAM,EAAE,qBAAqB,EAAE,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE;QAClK,WAAW,EAAE,EAAE,GAAG,sBAAsB,EAAE,kBAAkB,EAAE,cAAc,CAAC,MAAM,EAAE,qBAAqB,EAAE,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE;KAC5K;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;KAC5B;IACD,aAAa,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IACvE,WAAW,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,CAAC,IAAI,EAAE;IACrF,kBAAkB,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACvE,YAAY,EAAE;QACZ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,OAAO,CAAC,cAAc;QACjC,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;KAC5B;IACD,MAAM,EAAE;QACN,eAAe,EAAE,cAAc,CAAC,MAAM;QACtC,iBAAiB,EAAE,cAAc,CAAC,MAAM;QACxC,KAAK,EAAE,sBAAsB;QAC7B,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM;QAC3C,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QAC3D,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;KAC/D;CA0DF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE;QACL,MAAM;QACN,OAAO;QACP,OAAO;QACP,SAAS;QACT,OAAO;QACP,WAAW;QACX,OAAO;QACP,kBAAkB;QAClB,aAAa;QACb,OAAO;QACP,SAAS;QACT,UAAU;QACV,SAAS;QACT,cAAc;QACd,QAAQ;QACR,eAAe;QACf,YAAY;QACZ,aAAa;QACb,mBAAmB;QACnB,oBAAoB;QACpB,cAAc;KACN;IACV,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,SAAS,EAAE,YAAY,CAAC,SAAS;IACjC,KAAK,EAAE;QACL,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK;QACpC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK;QACpC,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;KACxC;IACD,gBAAgB,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACtE,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,YAAY,EAAE,YAAY,CAAC,YAAY;IACvC,aAAa,EAAE,YAAY,CAAC,aAAa;IACzC,WAAW,EAAE,YAAY,CAAC,WAAW;IACrC,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;IACnD,YAAY,EAAE,YAAY,CAAC,YAAY;IACvC,MAAM,EAAE,YAAY,CAAC,MAAM;IAC3B,UAAU,EAAE,YAAY,CAAC,UAAU;CAsBpC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,qFAAqF;IACrF,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI;QAC3F,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,EAAE,MAAM,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,EAAE;IACtI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAU;IACtD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,iGAAiG;IACjG,+FAA+F;IAC/F,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc;QACjG,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,cAAc,CAAC,MAAM;QACvF;;;;;;;WAOG;QACH,eAAe,EAAE,MAAe,EAAE;IACpC,QAAQ,EAAE;QACR,0EAA0E;QAC1E,2EAA2E;QAC3E,oEAAoE;QACpE,kFAAkF;QAClF,eAAe,EAAE,SAAkB;QACnC,gBAAgB,EAAE,kBAAkB;KACrC;IACD,2FAA2F;IAC3F,SAAS,EAAE;QACT,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QACrC,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,OAAO,CAAC,GAAG;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,CAAC;YACV,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,WAAW,EAAE,OAAO;SACrB;QACD,MAAM,EAAE;YACN,SAAS,EAAE,OAAO,CAAC,cAAc;YACjC,OAAO,EAAE,CAAC;YACV,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,WAAW,EAAE,MAAM;SACpB;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAC7C,UAAU,EAAE,UAAU,CAAC,QAAQ;QAC/B,kBAAkB,EAAE,cAAc,CAAC,MAAM;QACzC,eAAe,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QAC7C;;;;WAIG;QACH,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK;QAC3C,mBAAmB,EAAE,MAAM,CAAC,MAAM;QAClC,kBAAkB,EAAE,UAAU,CAAC,IAAI;QACnC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK;QACtC,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,gFAAgF;IAChF,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAU;IAClE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,gFAAgF;IAChF,8EAA8E;IAC9E,oBAAoB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;IACtD,iFAAiF;IACjF,kFAAkF;IAClF,gBAAgB,EAAE,kBAAkB;IACpC,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACrD,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;KACvD;IACD,MAAM,EAAE;QACN,gFAAgF;QAChF,iFAAiF;QACjF,iFAAiF;QACjF,4EAA4E;QAC5E,+EAA+E;QAC/E,mFAAmF;QACnF,6EAA6E;QAC7E,oFAAoF;QACpF,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;QACvC,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAChD,uEAAuE;QACvE,8EAA8E;QAC9E,6EAA6E;QAC7E,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;QAC/C,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK;QAC1C,QAAQ,EAAE,cAAc,CAAC,MAAM;QAC/B,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAChD,OAAO,EAAE,cAAc,CAAC,MAAM;QAC9B,uEAAuE;QACvE,8EAA8E;QAC9E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,sEAAsE;QACtE,0EAA0E;QAC1E,gBAAgB,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QAC/C,sBAAsB,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QACrD,eAAe,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;QAC3E,qBAAqB,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;QACjF,aAAa,EAAE,cAAc,CAAC,MAAM;QACpC,mBAAmB,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;KACvD;IACD,MAAM,EAAE;QACN,eAAe,EAAE,OAAO,CAAC,QAAQ;QACjC,cAAc,EAAE,OAAO,CAAC,OAAO;KAChC;IACD,YAAY,EAAE,OAAO,CAAC,cAAc;IACpC,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,wDAAwD;IACxD,mBAAmB,EAAE,EAAE;CACf,CAAC;AAIX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE;QACL,MAAM;QACN,SAAS;QACT,WAAW;QACX,SAAS;QACT,SAAS;QACT,OAAO;QACP,aAAa;KACL;IACV,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;IACpE,KAAK,EAAE;QACL,KAAK,EAAE;YACL,YAAY,EAAE,OAAO,CAAC,cAAc;YACpC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,OAAO,CAAC,EAAE;YACf,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;YAC3B,YAAY,EAAE,OAAO;YACrB,kBAAkB,EAAE,SAAS;SAC9B;QACD,MAAM,EAAE;YACN,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;YACzC,OAAO,EAAE,OAAO,CAAC,kBAAkB;YACnC,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,OAAO,CAAC,EAAE;YACf,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,eAAe,EAAE,OAAO,CAAC,EAAE;YAC3B,YAAY,EAAE,MAAM;YACpB,kBAAkB,EAAE,OAAO;SAC5B;KACF;IACD,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACzC,aAAa,EAAE;QACb,KAAK,EAAE;YACL,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,KAAK;YACrB,UAAU,EAAE,IAAI;SACjB;QACD,IAAI,EAAE;YACJ,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;YACrC,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,IAAI;SACjB;QACD,6DAA6D;QAC7D,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,sEAAsE;QACtE,oEAAoE;QACpE,oEAAoE;QACpE,iEAAiE;QACjE,OAAO,EAAE;YACP,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;SAC3C;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;QAClC,UAAU,EAAE,UAAU,CAAC,QAAQ;QAC/B,iBAAiB,EAAE,UAAU,CAAC,IAAI;KACnC;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE;IAChE,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE;IACxD,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7C,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;KACvC;IACD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE;QACN,cAAc,EAAE,cAAc,CAAC,MAAM;QACrC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAC5C,iBAAiB,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;QACzD,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK;QAC1C,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;QAC9C,oFAAoF;QACpF,kBAAkB,EAAE,cAAc,CAAC,MAAM;QACzC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK;QAC3C,eAAe,EAAE,cAAc,CAAC,MAAM;QACtC,iBAAiB,EAAE,cAAc,CAAC,MAAM;QACxC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM;QAC3C,KAAK,EAAE,sBAAsB;QAC7B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;CACO,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE;QACL,MAAM;QACN,SAAS;QACT,MAAM;QACN,MAAM;QACN,WAAW;QACX,MAAM;QACN,OAAO;QACP,OAAO;KACC;IACV,QAAQ,EAAE,8BAA8B;IACxC,4FAA4F;IAC5F,aAAa,EAAE;QACb,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACxC,kBAAkB,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;QAC1D,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;QACpD,OAAO,EAAE,OAAO,CAAC,GAAG;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAa;KACtB;IACD;;;;;OAKG;IACH,aAAa,EAAE;QACb,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;QACzC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QACrC,KAAK,EAAE,CAAC;QACR,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK;KACrD;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,wBAAwB;QAC7B,MAAM,EAAE,mBAAmB;KAC5B;IACD,aAAa,EAAE;QACb,OAAO,EAAE;YACP,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC1C,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;YACrC,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,WAAW,EAAE,CAAC,KAAK,CAAU;YAC7B,MAAM,EAAE,MAAe;YACvB,MAAM,EAAE,uBAAuB,CAAC,MAAM;YACtC,QAAQ,EAAE,GAAG;YACb,sBAAsB,EAAE,OAAO,CAAC,EAAE;YAClC,eAAe,EAAE,OAAO,CAAC,EAAE;SAC5B;QACD,GAAG,EAAE;YACH,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;YACrC,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,WAAW,EAAE,CAAC,aAAa,CAAU;YACrC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,sBAAsB,EAAE,CAAC;YACzB,eAAe,EAAE,CAAC;SACnB;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;YACrC,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,WAAW,EAAE,CAAC,KAAK,CAAU;YAC7B,MAAM,EAAE,IAAa;YACrB,MAAM,EAAE,uBAAuB,CAAC,MAAM;YACtC,QAAQ,EAAE,GAAG;YACb,sBAAsB,EAAE,OAAO,CAAC,EAAE;YAClC,eAAe,EAAE,OAAO,CAAC,EAAE;SAC5B;KACF;IACD,aAAa,EAAE;QACb,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,qBAAqB,EAAE,KAAK,EAAE;QACrD,YAAY,EAAE;YACZ,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,EAAE;YAClD,qBAAqB,EAAE,IAAI;SAC5B;KACF;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC,GAAG;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,IAAa;YACnB,KAAK,EAAE,SAAkB;SAC1B;QACD,OAAO,EAAE;YACP,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC,EAAE;YACnB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,IAAa;YACnB,KAAK,EAAE,SAAkB;SAC1B;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACtC,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QAC1C,aAAa,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;KAC5C;IACD;;;OAGG;IACH,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,MAAe;QACvB,MAAM,EAAE,MAAe;QACvB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,CAAC;KACf;IACD,IAAI,EAAE;QACJ;;;WAGG;QACH,gBAAgB,EAAE;YAChB,kBAAkB,EAAE,CAAC;YACrB,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;YACjD,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;SACnC;KACF;IACD,KAAK,EAAE;QACL,UAAU,EAAE,UAAU,CAAC,QAAQ;QAC/B,kBAAkB,EAAE,UAAU,CAAC,IAAI;QACnC,SAAS,EAAE,QAAQ;QACnB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI;KACjB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAgB;QACtB,OAAO,EAAE,UAAmB;QAC5B,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;QAC5D,8BAA8B,EAAE,IAAI;KACrC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,oBAAoB,EAAE,OAAO,CAAC,EAAE;KACjC;IACD,QAAQ,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE;IAChE,SAAS,EAAE;QACT,gBAAgB,EAAE,IAAI;QACtB,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,qDAAqD;QACrD,qBAAqB,EAAE,GAAG;QAC1B,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,IAAI;KACjB;IACD,SAAS,EAAE;QACT,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,YAAY;KAC1B;IACD,MAAM,EAAE;QACN,eAAe,EAAE,cAAc,CAAC,MAAM;QACtC,iBAAiB,EAAE,cAAc,CAAC,MAAM;QACxC,KAAK,EAAE,sBAAsB;QAC7B,eAAe,EAAE,OAAO,CAAC,QAAQ;QACjC,wBAAwB,EAAE;YACxB,MAAM,EAAE,gBAAyB;YACjC,KAAK,EAAE,aAAsB;YAC7B,IAAI,EAAE,UAAmB;SAC1B;QACD,uBAAuB,EAAE;YACvB,cAAc,EAAE,gBAAyB;YACzC,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,sBAAsB,CAAC,MAAM;SAC1C;KACF;IACD,UAAU,EAAE,YAAY,CAAC,KAAK;CACtB,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAU;IACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACnE,KAAK,EAAE;QACL,KAAK,EAAE;YACL,SAAS,EAAE,OAAO,CAAC,cAAc;YACjC,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,WAAW,EAAE,OAAO;SACrB;QACD,MAAM,EAAE;YACN,SAAS,EAAE,EAAE;YACb,iBAAiB,EAAE,OAAO,CAAC,EAAE;YAC7B,WAAW,EAAE,MAAM;SACpB;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACtC,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACxC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK;QACtC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;KACvC;IACD,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;IACrB,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,CAAC,IAAI,EAAE;IAC/E,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1B,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;KACzB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;QACzC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;KACzC;IACD,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,MAAM,EAAE;QACN,iBAAiB,EAAE,cAAc,CAAC,MAAM;QACxC,KAAK,EAAE,sBAAsB;QAC7B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;CACO,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAU;IAC7E,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC1B,KAAK,EAAE;QACL,GAAG,cAAc,CAAC,QAAQ;QAC1B,IAAI,EAAE;YACJ,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI;YAC/B,oEAAoE;YACpE,iEAAiE;YACjE,iEAAiE;YACjE,kEAAkE;YAClE,mEAAmE;YACnE,+DAA+D;YAC/D,mCAAmC;YACnC,UAAU,EAAE,cAAc,CAAC,MAAM;SAClC;KACF;IACD,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,OAAO,CAAC,EAAE;IACnB,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,UAAU,EAAE,OAAO,CAAC,GAAG;IACvB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,MAAM,CAAC,OAAO;IAC3B,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;IAC3D,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;CAChE,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,CAAC,MAAM,CAAU;IACxB,sDAAsD;IACtD,8BAA8B;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,UAAU,EAAE,cAAc,CAAC,MAAM;IACjC,MAAM,EAAE;QACN,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE;QACnD,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,EAAE;QACjD,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE;KACrD;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC;QACzB,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,QAAQ;KACxB;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAU;IAClE,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IAChC,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,EAAE;QACxC,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,IAAI,EAAE;KAC3C;IACD,iBAAiB,EAAE,OAAO,CAAC,EAAE;IAC7B,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE;IAC9D,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;IACtG,WAAW,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE;CACtE,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,MAAM,CAAU;IACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3C,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;IAC7D,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACnC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACzC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;KACxC;IACD,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,SAAS,EAAE;QACT,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,QAAQ;KACxB;CACO,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE;QACL,MAAM;QACN,QAAQ;QACR,SAAS;QACT,SAAS;QACT,OAAO;QACP,OAAO;QACP,KAAK;KACG;IACV,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE;IACnD,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;QACzD,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;KAC1D;IACD,MAAM,EAAE;QACN,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,OAAO;KACrB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;QACpC,WAAW,EAAE,OAAO;KACrB;IACD,GAAG,EAAE;QACH,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,SAAS;KACvB;IACD,OAAO,EAAE;QACP,SAAS,EAAE,OAAO,CAAC,cAAc;QACjC,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAC7B,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACnC,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,UAAU,CAAC,IAAI;KAC5B;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IACzC,MAAM,EAAE;QACN,KAAK,EAAE,sBAAsB;QAC7B,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;CAsBF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAU;IAC/D;;;OAGG;IACH,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7C,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACzC,UAAU,EAAE,cAAc,CAAC,MAAM;IACjC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;IACzC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;CAC7B,CAAC;AAKX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE;QACL,OAAO;QACP,MAAM;QACN,OAAO;QACP,UAAU;QACV,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,OAAO;QACP,WAAW;QACX,MAAM;KACE;IACV,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;IACvE,OAAO,EAAE;QACP,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,EAAE;YACnB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,OAAO;SACtB;QACD,WAAW,EAAE;YACX,OAAO,EAAE,OAAO,CAAC,EAAE;YACnB,GAAG,EAAE,OAAO,CAAC,EAAE;YACf,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,SAAS;SACxB;KACF;IACD,aAAa,EAAE;QACb,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;QACvE,OAAO,EAAE;YACP,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;YACrC,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,MAAM,EAAE,IAAI;SACb;KACF;IACD,KAAK,EAAE;QACL,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU;KAC/B;IACD,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,UAAU,EAAE,UAAU,CAAC,QAAQ;KAChC;IACD,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACrC,UAAU,EAAE,UAAU,CAAC,KAAK;QAC5B,cAAc,EAAE,SAAS;QACzB,QAAQ,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;QAClC,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,UAAU,CAAC,QAAQ;KAChC;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,SAAS;KACvB;IACD,KAAK,EAAE;QACL,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE;YACL,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW;SAClB;QACD,KAAK,EAAE;YACL,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;YACzC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YACnD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YACnD,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;SACtC;KACF;CA+CF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU;IAC7G,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC/C;;;;;OAKG;IACH,KAAK,EAAE;QACL,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,CAAC;KACR;IACD,QAAQ,EAAE,QAAQ,CAAC,KAAK;IACxB,OAAO,EAAE;QACP,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QACrC,WAAW,EAAE,uBAAuB,CAAC,WAAW;QAChD,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,uBAAuB,CAAC,MAAM;QACtC,gHAAgH;QAChH,cAAc,EAAE,GAAG;QACnB,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAC7B,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,aAAa,EAAE,OAAO,CAAC,EAAE;KAC1B;IACD,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;IACtB,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,cAAc,EAAE,OAAO,CAAC,EAAE;KAC3B;IACD,MAAM,EAAE;QACN,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,gBAAgB,EAAE,KAAK;QACvB,QAAQ,EAAE,uBAAuB;KAClC;IACD,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;IAC9D,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACrC,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;QAClC,WAAW,EAAE,MAAM;QACnB,GAAG,EAAE,OAAO,CAAC,EAAE;KAChB;IACD,MAAM,EAAE;QACN,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI;QAClC,WAAW,EAAE,MAAM;QACnB,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,UAAU,EAAE,OAAO,CAAC,EAAE;KACvB;IACD,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;CAC1D,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU;IAClH,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;IAC/C,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;QAC7C,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;QAC9C,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;KAC9C;IACD,QAAQ,EAAE,QAAQ,CAAC,KAAK;IACxB,OAAO,EAAE;QACP,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QACrC,WAAW,EAAE,uBAAuB,CAAC,WAAW;QAChD,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,MAAM,EAAE,uBAAuB,CAAC,MAAM;KACvC;IACD,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;CAC1D,CAAC;AAeX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE;QACL,UAAU;QACV,YAAY;QACZ,SAAS;QACT,MAAM;QACN,OAAO;QACP,aAAa;QACb,QAAQ;QACR,OAAO;QACP,SAAS;QACT,QAAQ;QACR,SAAS;KACD;IACV,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9C,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,KAAK,EAAE;QACL,SAAS,EAAE;YACT,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU;YAClD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU;YAC5D,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;YAC/C,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;SACpD;QACD,MAAM,EAAE;YACN,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;YACnC,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;YACzD,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;YAChD,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;SACrD;QACD,4EAA4E;QAC5E,oEAAoE;QACpE,IAAI,EAAE;YACJ,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;YAC7C,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;YACvD,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;YAC/C,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;SACpD;QACD,OAAO,EAAE;YACP,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YAChD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YAC1D,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;YAC/C,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;SACpD;KACF;IACD,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAC5E,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACrC,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,UAAU,CAAC,IAAI;KAC5B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,MAAM;KACpB;IACD,KAAK,EAAE,mBAAmB,CAAC,KAAK;IAChC,yGAAyG;IACzG,OAAO,EAAE;QACP,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,YAAY,EAAE,eAAe;QAC7B,UAAU,EAAE,UAAU,CAAC,MAAM;QAC7B,cAAc,EAAE,EAAE;KACnB;IACD,UAAU,EAAE,YAAY,CAAC,UAAU;CA4BpC,CAAC;AAiBF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE;QACL,UAAU;QACV,MAAM;QACN,UAAU;QACV,MAAM;QACN,OAAO;QACP,SAAS;QACT,OAAO;QACP,aAAa;QACb,UAAU;QACV,QAAQ;QACR,OAAO;KACC;IACV,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;IACpE,QAAQ,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAChE,QAAQ,EAAE;QACR,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,KAAK,EAAE,OAAO,CAAC,EAAE;QACjB,QAAQ,EAAE,GAAG;QACb,YAAY,EAAE,UAAU;KACzB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;QACjE,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;QACxE,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;QACpE,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE;QAC1E,cAAc,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjF,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE;KAC9E;IACD,0GAA0G;IAC1G,uGAAuG;IACvG,KAAK,EAAE;QACL,OAAO,EAAE;YACP,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC1C,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;YACxC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;YACpC,IAAI,EAAE,eAAe;SACtB;QACD,IAAI,EAAE;YACJ,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC1C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;YAC/C,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe;YACnD,IAAI,EAAE,MAAM;SACb;QACD,OAAO,EAAE;YACP,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC1C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YAClD,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe;YACtD,IAAI,EAAE,SAAS;SAChB;QACD,OAAO,EAAE;YACP,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC1C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;YAClD,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe;YACtD,IAAI,EAAE,SAAS;SAChB;QACD,MAAM,EAAE;YACN,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;YAC1C,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;YACrC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe;YACrD,IAAI,EAAE,OAAO;SACd;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,sGAAsG;QACtG,yGAAyG;QACzG,kEAAkE;QAClE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM;QACpC,WAAW,EAAE,MAAM,CAAC,OAAO;QAC3B,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,uBAAuB,CAAC,MAAM;QACtC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;QACtC,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,QAAQ,EAAE,GAAG;KACd;IACD,sGAAsG;IACtG,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;IACtC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;IAC7D,kGAAkG;IAClG,4FAA4F;IAC5F,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACnB,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAC7B,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACrC,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,UAAU,CAAC,IAAI;KAC5B;IACD,0EAA0E;IAC1E,WAAW,EAAE;QACX,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,WAAW,EAAE,MAAM;KACpB;IACD,uGAAuG;IACvG,gGAAgG;IAChG,QAAQ,EAAE;QACR,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,OAAO,EAAE,CAAC;QACV,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACvC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;QAC5C,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QAC5C,iBAAiB,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACjD,WAAW,EAAE,SAAS;KACvB;IACD,iGAAiG;IACjG,sGAAsG;IACtG,uEAAuE;IACvE,MAAM,EAAE;QACN,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACnC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;QACxC,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,SAAS,EAAE,OAAO,CAAC,cAAc;QACjC,iBAAiB,EAAE,OAAO,CAAC,EAAE;KAC9B;IACD,KAAK,EAAE;QACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;QACvC,QAAQ,EAAE,OAAO,CAAC,cAAc;QAChC,KAAK,EAAE,IAAI;KACZ;IACD,MAAM,EAAE;QACN,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,KAAK,EAAE,sBAAsB;KAC9B;IACD,OAAO,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE;IACjC,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QAC3D,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;KAC/D;CAwEF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAU;IAC3D,QAAQ,EAAE,yBAAyB;IACnC,KAAK,EAAE,KAAK,CAAC,OAAO;IACpB,OAAO,EAAE;QACP,GAAG,uBAAuB;QAC1B,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QAC1C,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACtC,MAAM,EAAE,IAAa;QACrB,OAAO,EAAE,OAAO,CAAC,EAAE;KACpB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,cAAc,CAAC,MAAM;QAC5B,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,GAAG;KACd;IACD,KAAK,EAAE;QACL,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACrC,OAAO,EAAE,OAAO,CAAC,EAAE;KACpB;IACD,WAAW,EAAE;QACX,UAAU,EAAE,OAAO,CAAC,GAAG;QACvB,gBAAgB,EAAE,OAAO,CAAC,EAAE;KAC7B;IACD,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;CAC1D,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,MAAM;QACN,SAAS;QACT,OAAO;QACP,cAAc;QACd,aAAa;QACb,UAAU;QACV,QAAQ;QACR,aAAa;KACL;IACV,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5B,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK;IACrC,YAAY,EAAE,OAAO,CAAC,cAAc;IACpC,iBAAiB,EAAE,OAAO,CAAC,EAAE;IAC7B,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,kBAAkB;IAClB,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;IACvG,WAAW,EAAE;QACX,SAAS,EAAE,OAAO,CAAC,cAAc;QACjC,QAAQ,EAAE,OAAO,CAAC,cAAc;QAChC,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,cAAc,EAAE,OAAO,CAAC,OAAO;KAChC;IACD,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC,cAAc;QACjC,QAAQ,EAAE,OAAO,CAAC,cAAc;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,iBAAiB,EAAE,OAAO,CAAC,GAAG;QAC9B,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC;IACD,WAAW,EAAE;QACX,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;QACrC,UAAU,EAAE,UAAU,CAAC,MAAM;KAC9B;IACD,UAAU,EAAE,cAAc,CAAC,MAAM;CACzB,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,CAAU;IAC3E,SAAS,EAAE,EAAE;IACb,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;IAC7C,UAAU,EAAE,OAAO,CAAC,EAAE;IACtB,aAAa,EAAE,OAAO,CAAC,EAAE;IACzB,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,mEAAmE;IACnE,0EAA0E;IAC1E,8CAA8C;IAC9C,UAAU,EAAE,cAAc,CAAC,MAAM;IACjC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO;IACrC,WAAW,EAAE,MAAM,CAAC,OAAO;IAC3B,uEAAuE;IACvE,gEAAgE;IAChE,uEAAuE;IACvE,2EAA2E;IAC3E,uEAAuE;IACvE,cAAc;IACd,MAAM,EAAE;QACN,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC,CAAC;QACX,SAAS,EAAE,CAAC;KACb;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAU;IACvF,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,SAAS,EAAE,OAAO,CAAC,EAAE;IACrB,OAAO,EAAE,OAAO,CAAC,GAAG;IACpB,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;IAChG,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE;CACxE,CAAC","sourcesContent":["import type { ColorReference } from \"./color-references.js\";\nimport {\n collectionItemContract,\n fieldFrameContract,\n floatingSurfaceContract,\n focusIndicatorContract,\n formSupportContract,\n} from \"./component-contracts.js\";\nimport {\n backdrop,\n breakpoint,\n control,\n glyph,\n layer,\n largeTextThreshold,\n layout,\n fontWeight,\n motion,\n motionPreset,\n opacity,\n radius,\n spacing,\n stroke,\n type FontWeightValue,\n type GlyphSize,\n type TextVariant,\n} from \"./foundations.js\";\nimport { semanticColors } from \"./semantic-colors.js\";\nimport { tooltipDescriptorDefaults } from \"./tooltip.js\";\nimport { bottomNavigationRecipeDefaults } from \"./bottom-navigation-defaults.js\";\n\nexport {\n iconButtonRecipe,\n resolveIconButtonPresentation,\n type IconButtonShape,\n type IconButtonSize,\n type IconButtonTone,\n type ResolvedIconButtonPresentation,\n} from \"./icon-button-recipe.js\";\nexport {\n counterBadgeDefaults,\n counterBadgeRecipe,\n formatCounterBadgeCount,\n type CounterBadgeSize,\n type CounterBadgeTone,\n type CounterBadgeVariant,\n} from \"./counter-badge-recipe.js\";\nexport {\n progressRecipe,\n type ProgressShape,\n type ProgressSize,\n type ProgressTone,\n} from \"./progress-recipe.js\";\nexport type {\n BottomNavigationDensity,\n BottomNavigationDistribution,\n BottomNavigationPresentation,\n} from \"./bottom-navigation-defaults.js\";\n\nexport type TextTone =\n | \"primary\"\n | \"body\"\n | \"muted\"\n | \"subtle\"\n | \"weak\"\n | \"brand\"\n | \"danger\"\n | \"inverse\";\nexport type TextEmphasis = \"regular\" | \"medium\" | \"strong\";\n\nexport const textRecipe = {\n slots: [\"root\"] as const,\n defaults: { variant: \"body\", tone: \"primary\", emphasis: \"regular\" },\n tones: {\n primary: semanticColors.content.primary,\n body: semanticColors.content.body,\n muted: semanticColors.content.secondary,\n subtle: semanticColors.content.tertiary,\n weak: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n emphasis: {\n regular: fontWeight.regular,\n medium: fontWeight.semibold,\n strong: fontWeight.bold,\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n variant: TextVariant;\n tone: TextTone;\n emphasis: TextEmphasis;\n };\n tones: Record<TextTone, ColorReference>;\n emphasis: Record<TextEmphasis, FontWeightValue>;\n};\n\nexport type IconTone =\n | \"primary\"\n | \"secondary\"\n | \"decorative\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"inverse\";\nexport type IconWeight = \"regular\" | \"strong\";\n\nexport const iconRecipe = {\n slots: [\"root\"] as const,\n defaults: {\n size: \"md\",\n tone: \"secondary\",\n weight: \"regular\",\n decorative: true,\n },\n sizes: glyph,\n tones: {\n primary: semanticColors.content.primary,\n secondary: semanticColors.content.secondary,\n decorative: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n info: semanticColors.feedback.info.foreground,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n weights: { regular: 2, strong: 2.5 },\n stroke: {\n lineCap: \"round\",\n lineJoin: \"round\",\n scaling: \"proportional\",\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n size: GlyphSize;\n tone: IconTone;\n weight: IconWeight;\n decorative: boolean;\n };\n sizes: Record<GlyphSize, number>;\n tones: Record<IconTone, ColorReference>;\n weights: Record<IconWeight, number>;\n stroke: {\n lineCap: \"round\";\n lineJoin: \"round\";\n scaling: \"proportional\";\n };\n};\n\nexport type StackAxis = \"block\" | \"inline\";\nexport type StackGap = keyof typeof spacing;\nexport type StackAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\nexport type StackJustify = \"start\" | \"center\" | \"end\" | \"between\";\n\nexport const stackRecipe = {\n slots: [\"root\"] as const,\n defaults: { axis: \"block\", gap: \"md\", align: \"stretch\", justify: \"start\", wrap: false },\n axes: { block: \"column\", inline: \"row\" },\n gaps: spacing,\n align: [\"start\", \"center\", \"end\", \"stretch\"] as const,\n justify: [\"start\", \"center\", \"end\", \"between\"] as const,\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n axis: StackAxis;\n gap: StackGap;\n align: StackAlign;\n justify: StackJustify;\n wrap: boolean;\n };\n axes: Record<StackAxis, \"column\" | \"row\">;\n gaps: Record<StackGap, number>;\n align: readonly StackAlign[];\n justify: readonly StackJustify[];\n};\n\nexport type LinkTone = \"brand\" | \"neutral\";\nexport type LinkVariant = \"inline\" | \"standalone\";\n\nexport const linkRecipe = {\n slots: [\"root\", \"leading\", \"label\", \"trailing\"] as const,\n defaults: { tone: \"brand\", variant: \"inline\" },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.body,\n },\n variants: {\n inline: {\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n underline: \"always\",\n minHeight: null,\n minWidth: null,\n },\n /** 그 자체가 동작이므로 두 축 모두 최소 터치 타깃. 높이만 잡으면 짧은 라벨이 좁아진다. */\n standalone: {\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n underline: \"hover\",\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n },\n },\n gap: spacing.xxs,\n icon: { glyph: \"xs\", inheritsTone: true },\n states: {\n pressedOpacity: opacity.pressed,\n focus: focusIndicatorContract,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"label\", \"trailing\"];\n defaults: { tone: LinkTone; variant: LinkVariant };\n tones: Record<LinkTone, ColorReference>;\n variants: Record<\n LinkVariant,\n {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n underline: \"always\" | \"hover\";\n minHeight: number | null;\n minWidth: number | null;\n }\n >;\n gap: number;\n icon: { glyph: GlyphSize; inheritsTone: true };\n states: {\n pressedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n};\n\nexport const selectionGroupRecipe = {\n slots: [\"root\", \"label\", \"requiredIndicator\", \"description\", \"items\", \"error\"] as const,\n defaults: { orientation: \"vertical\", presentation: \"card\" },\n orientations: {\n vertical: {\n direction: \"column\",\n // `grouped` rows sit flush inside one shared card, so the group owns\n // the only outer radius and the rows share edges instead of floating\n // apart with their own gap — the same shape as `selectionControlRecipe`'s\n // `grouped` presentation, which this gap pairs with.\n gap: { plain: spacing.xxs, card: spacing.xs, grouped: 0 },\n },\n horizontal: {\n direction: \"row\",\n gap: { plain: spacing.sm, card: spacing.md, grouped: 0 },\n },\n },\n label: formSupportContract.label,\n requiredIndicator: { color: semanticColors.content.danger },\n description: formSupportContract.hint,\n error: formSupportContract.error,\n supportGap: formSupportContract.gap,\n states: { disabledOpacity: opacity.disabled },\n} as const;\n\nexport type SelectionGroupOrientation = keyof typeof selectionGroupRecipe.orientations;\nexport type SelectionGroupPresentation = keyof typeof selectionGroupRecipe.orientations.vertical.gap;\n\nexport type BadgeTone =\n | \"neutral\"\n /**\n * One step stronger than `neutral`: solid ink plate instead of a muted\n * label + sunken plate. A product author needed this for a result screen\n * where win/loss is the fact itself, not a side note, and `neutral` plus\n * its `outline` variant read as nearly the same grey — the one place the\n * distinction had to be unmistakable at a glance. Use it where a badge must\n * outrank `neutral` without borrowing an accent or the brand tint (both of\n * which already carry other meanings — see the `brand` tone below).\n */\n | \"strong\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"attention\"\n | \"danger\";\nexport type BadgeSize = \"small\" | \"medium\";\nexport type BadgeVariant = \"filled\" | \"outline\";\n\nexport const badgeRecipe = {\n slots: [\"root\", \"icon\", \"label\"] as const,\n defaults: { tone: \"neutral\", size: \"medium\", variant: \"filled\" },\n variants: {\n filled: {\n usesToneBackground: true,\n borderFallback: null,\n },\n outline: {\n usesToneBackground: false,\n borderFallback: semanticColors.border.default,\n },\n },\n tones: {\n neutral: {\n content: semanticColors.content.secondary,\n outlineContent: semanticColors.content.secondary,\n background: semanticColors.canvas,\n border: null,\n },\n strong: {\n content: semanticColors.content.inverse,\n outlineContent: semanticColors.content.primary,\n background: semanticColors.content.primary,\n border: null,\n },\n brand: {\n content: semanticColors.content.brand,\n outlineContent: semanticColors.content.brand,\n // The brand tint now means \"selected\" everywhere (see\n // `selectionControlRecipe`/`segmentedControlRecipe`), so a badge that\n // only labels something — a season, a grade, a question number —\n // cannot wear it: rows of static badges started reading as a filter\n // with one option switched on. The plate goes neutral and the brand\n // stays in the copy.\n background: semanticColors.canvas,\n border: null,\n },\n info: {\n content: semanticColors.feedback.info.foreground,\n outlineContent: semanticColors.feedback.info.foreground,\n background: semanticColors.canvas,\n border: semanticColors.feedback.info.border,\n },\n success: {\n content: semanticColors.feedback.success.foreground,\n outlineContent: semanticColors.feedback.success.foreground,\n background: semanticColors.feedback.success.badgeBackground,\n border: semanticColors.feedback.success.border,\n },\n warning: {\n content: semanticColors.feedback.warning.foreground,\n outlineContent: semanticColors.feedback.warning.foreground,\n background: semanticColors.feedback.warning.badgeBackground,\n border: semanticColors.feedback.warning.border,\n },\n attention: {\n content: semanticColors.feedback.attention.foreground,\n outlineContent: semanticColors.feedback.attention.foreground,\n background: semanticColors.feedback.attention.badgeBackground,\n border: semanticColors.feedback.attention.border,\n },\n danger: {\n content: semanticColors.feedback.danger.foreground,\n outlineContent: semanticColors.feedback.danger.foreground,\n background: semanticColors.feedback.danger.badgeBackground,\n border: semanticColors.feedback.danger.border,\n },\n },\n sizes: {\n small: {\n minHeight: 20,\n paddingHorizontal: spacing.xxs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n medium: {\n minHeight: 24,\n paddingHorizontal: spacing.xs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n },\n radius: \"full\",\n borderWidth: stroke.default,\n fontWeight: fontWeight.bold,\n} as const;\n\nexport type SearchFieldSize = \"medium\" | \"large\";\n\n/** Search is a field specialization with stable affordance and clear targets. */\nexport const searchFieldRecipe = {\n slots: [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"] as const,\n defaults: { size: \"medium\", shape: \"medium\" },\n sizes: {\n medium: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n gap: spacing.xs,\n glyph: \"sm\",\n clearDiameter: 36,\n clearHitSlop: 4,\n textVariant: \"body\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.md,\n gap: spacing.sm,\n glyph: \"sm\",\n clearDiameter: control.minTouchTarget,\n clearHitSlop: 0,\n textVariant: \"bodyLarge\",\n },\n },\n colors: {\n background: semanticColors.canvas,\n content: semanticColors.content.primary,\n placeholder: semanticColors.content.secondary,\n leading: semanticColors.content.decorative,\n clear: semanticColors.content.secondary,\n border: semanticColors.border.control,\n focus: focusIndicatorContract.color,\n invalid: semanticColors.border.danger,\n },\n /**\n * 모양은 **축이다** — 값 하나로 못 박지 않는다.\n *\n * 원래 여기는 `radius: \"full\"` 하나였다. 그런데 `fieldRecipe`는 같은 결정을\n * `shapes: { medium, large, full }` 축으로 열어 두고 있었고, 그래서 **한 앱 안에서\n * 평범한 입력과 찾기 입력이 서로 다른 모양이 되는 것을 계약이 막지 못했다.** 실제로\n * 갈라졌다 — app-rn은 `\"md\"`로 그리고 있었는데 이 계약은 `\"full\"`이라고 말하고\n * 있었고, 어느 쪽이 옳은지 양쪽 문서 어디에도 없었다.\n *\n * 찾기 입력이 알약이어야 하는지는 **제품이 정할 일**이고(iOS 관례는 알약, 이 앱은\n * 사각), 계약이 할 일은 그 선택지를 `fieldRecipe`와 **같은 이름으로** 주는 것이다.\n * 그러면 두 입력의 모양을 나란히 맞추는 것과 일부러 다르게 하는 것이 둘 다 표현된다.\n */\n shapes: { medium: \"md\", large: \"lg\", full: \"full\" },\n borderWidth: stroke.default,\n focusRingWidth: focusIndicatorContract.width,\n focusRingOffset: focusIndicatorContract.offset,\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"];\n defaults: { size: SearchFieldSize; shape: \"medium\" | \"large\" | \"full\" };\n sizes: Record<\n SearchFieldSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n gap: number;\n glyph: GlyphSize;\n clearDiameter: number;\n clearHitSlop: number;\n textVariant: TextVariant;\n }\n >;\n colors: Record<\n \"background\" | \"content\" | \"placeholder\" | \"leading\" | \"clear\" | \"border\" | \"focus\" | \"invalid\",\n ColorReference\n >;\n shapes: Record<\"medium\" | \"large\" | \"full\", keyof typeof radius>;\n borderWidth: number;\n focusRingWidth: number;\n focusRingOffset: number;\n states: { disabledOpacity: number; pressedOpacity: number };\n};\n\nexport type ChipSize = keyof typeof control.chipHeight;\n\nexport const chipRecipe = {\n slots: [\"root\", \"leading\", \"indicator\", \"label\", \"trailing\"] as const,\n defaults: { size: \"small\", selected: false },\n /**\n * `height` is the minimum visible height; a label taller than it grows the chip (Web `min-block-size`,\n * Native `minHeight` from 1.13.1). Native used it as a fixed height and clipped labels at large text\n * (utilverse 1.13.0 adoption, 2026-10-06), unlike Web and Button.\n */\n sizes: {\n small: {\n height: control.chipHeight.small,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n gap: spacing.xxs,\n textVariant: \"body\",\n },\n medium: {\n height: control.chipHeight.medium,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n textVariant: \"body\",\n },\n },\n states: {\n idle: {\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n // A resting chip wears the shared hairline, not a text-strength\n // outline. Drawing it in `content.secondary` made an unselected chip\n // read heavier than the selected one beside it, inverting the one\n // signal that matters in a filter row.\n border: semanticColors.border.default,\n },\n selected: {\n background: semanticColors.canvas,\n content: semanticColors.content.brand,\n border: semanticColors.border.focus,\n },\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n radius: \"full\",\n borderWidth: stroke.default,\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: {\n color: semanticColors.content.brand,\n glyph: \"xs\",\n },\n focus: focusIndicatorContract,\n} as const;\n\nexport const dividerRecipe = {\n slots: [\"root\", \"label\"] as const,\n defaults: { orientation: \"horizontal\", inset: \"none\" },\n color: semanticColors.border.default,\n thickness: stroke.subtle,\n insets: {\n none: 0,\n start: spacing.md,\n both: spacing.md,\n },\n} as const;\n\nexport const listRecipe = {\n slots: [\"root\", \"item\", \"separator\"] as const,\n defaults: { separator: \"indented\" },\n separators: {\n none: null,\n full: { insetStart: 0, insetEnd: 0 },\n indented: { insetStart: 40 + spacing.sm, insetEnd: 0 },\n },\n background: null,\n} as const;\n\nexport type ListRowDensity = \"compact\" | \"comfortable\" | \"relaxed\" | \"spacious\";\n/** Frame geometry the ListRow paints around its leading slot. */\nexport type ListRowLeadingShape = \"square\" | \"circle\";\n\nexport const listRowRecipe = {\n slots: [\"root\", \"leading\", \"content\", \"title\", \"description\", \"trailing\"] as const,\n defaults: { density: \"comfortable\", selected: false, tone: \"default\" },\n // Destructive destinations keep semantic emphasis without renderer-specific title styles.\n tones: { default: { titleColor: semanticColors.content.body }, danger: { titleColor: semanticColors.content.danger } },\n density: {\n compact: {\n oneLineMinHeight: control.minTouchTarget,\n twoLineMinHeight: 60,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xxs,\n },\n comfortable: {\n oneLineMinHeight: layout.rowHeight.singleLine,\n twoLineMinHeight: layout.rowHeight.twoLine,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xs,\n },\n /*\n 토스 TDS의 ListRow는 세로 여백을 네 단계로 둔다. HJM이 두 단계만 갖고 있던 동안\n 제품은 그 사이 값을 제품 CSS로 만들었다(설정 목록은 넓게, 검색 결과는 좁게).\n 숫자는 이미 있는 spacing 스케일(sm/md)을 그대로 쓰고 새 값을 만들지 않는다.\n 최소 높이는 여백에 맞춰 함께 올라간다 — 여백만 키우면 한 줄 행이 위아래로 치우친다.\n */\n relaxed: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.xs,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.xs,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.sm,\n },\n spacious: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.md,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.md,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.md,\n },\n },\n // Loading uses the same row/line boxes as content; only the copy width is illustrative.\n loading: { titleWidthPercent: 60, descriptionWidthPercent: 40, trailingWidth: spacing.xxl },\n gap: spacing.sm,\n leadingSize: 40,\n /**\n * Frame geometry for the leading slot. The size was already declared here but\n * no renderer bound it, so every consumer re-derived the avatar box (radius,\n * clipping, centering) in product styles.\n */\n leadingShapes: { square: null, circle: \"full\" },\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.secondary, textVariant: \"body\" },\n trailing: {\n textColor: semanticColors.content.secondary,\n iconColor: semanticColors.content.decorative,\n glyph: \"sm\",\n textVariant: \"caption\",\n },\n states: {\n pressedBackground: semanticColors.canvas,\n selectedBackground: semanticColors.canvas,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: ListRowDensity; selected: boolean; tone: \"default\" | \"danger\" };\n tones: Record<\"default\" | \"danger\", { titleColor: ColorReference }>;\n density: Record<ListRowDensity, {\n oneLineMinHeight: number;\n twoLineMinHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n }>;\n loading: { titleWidthPercent: number; descriptionWidthPercent: number; trailingWidth: number };\n gap: number;\n leadingSize: number;\n leadingShapes: Record<ListRowLeadingShape, keyof typeof radius | null>;\n title: unknown;\n description: unknown;\n trailing: unknown;\n states: unknown;\n};\n\nexport type AccordionDensity = \"compact\" | \"comfortable\";\n\nexport const accordionRecipe = {\n slots: [\"root\", \"item\", \"header\", \"trigger\", \"title\", \"indicator\", \"panel\", \"divider\"] as const,\n defaults: { density: \"comfortable\", allowsMultipleExpanded: false },\n density: {\n compact: { triggerMinHeight: control.minTouchTarget, paddingVertical: spacing.xs },\n comfortable: { triggerMinHeight: layout.rowHeight.singleLine, paddingVertical: spacing.sm },\n },\n paddingHorizontal: spacing.xs,\n gap: spacing.sm,\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n indicator: { color: semanticColors.content.secondary, glyph: \"sm\" },\n panel: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n paddingBottom: spacing.md,\n paddingInlineStart: spacing.xs,\n },\n divider: semanticColors.border.default,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n transition: motionPreset.enter,\n} as const;\n\nexport type MenuItemTone = \"neutral\" | \"danger\";\n\nexport const menuRecipe = {\n slots: [\n \"trigger\",\n \"content\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"item\",\n \"leading\",\n \"copy\",\n \"label\",\n \"description\",\n \"trailing\",\n \"shortcut\",\n \"indicator\",\n \"dangerIndicator\",\n \"separator\",\n ] as const,\n defaults: { density: \"comfortable\", itemTone: \"neutral\" },\n surface: floatingSurfaceContract,\n density: {\n compact: { ...collectionItemContract, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, minHeight: layout.rowHeight.singleLine },\n },\n tones: {\n neutral: collectionItemContract.label.color,\n danger: collectionItemContract.danger,\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n leading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n shortcut: { color: semanticColors.content.secondary, textVariant: \"caption\" },\n indicator: { color: collectionItemContract.selectedIndicator, glyph: \"sm\" },\n separator: semanticColors.border.default,\n dangerIndicator: {\n color: collectionItemContract.danger,\n glyph: \"sm\",\n mark: \"alert\",\n },\n minWidth: 220,\n maxWidth: 320,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n states: { disabledOpacity: opacity.disabled },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: \"compact\" | \"comfortable\"; itemTone: MenuItemTone };\n surface: typeof floatingSurfaceContract;\n density: Record<\n \"compact\" | \"comfortable\",\n Omit<typeof collectionItemContract, \"minHeight\"> & { minHeight: number }\n >;\n tones: Record<MenuItemTone, ColorReference>;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n leading: { color: ColorReference; glyph: GlyphSize };\n shortcut: { color: ColorReference; textVariant: TextVariant };\n indicator: { color: ColorReference; glyph: GlyphSize };\n separator: ColorReference;\n dangerIndicator: {\n color: ColorReference;\n glyph: GlyphSize;\n mark: \"alert\";\n };\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n states: { disabledOpacity: number };\n transition: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n};\n\nexport type MenuDensity = keyof typeof menuRecipe.density;\n\nexport type SelectSize = \"medium\" | \"large\";\nexport type SelectDensity = \"compact\" | \"comfortable\";\n\n/**\n * Select is visually one field plus one collection, even though Web renders\n * the collection in a popover and Native renders it in a modal sheet.\n */\nexport const selectRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"trigger\",\n \"leading\",\n \"value\",\n \"placeholder\",\n \"busyIndicator\",\n \"indicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: { size: \"medium\", density: \"comfortable\" },\n adaptive: { web: \"popover\", native: \"sheet\" },\n frame: fieldFrameContract,\n sizes: {\n medium: {\n minHeight: fieldFrameContract.minHeight,\n paddingHorizontal: fieldFrameContract.paddingHorizontal,\n textVariant: \"body\",\n glyph: \"sm\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.lg,\n textVariant: \"bodyLarge\",\n glyph: \"md\",\n },\n },\n support: formSupportContract,\n value: {\n color: semanticColors.content.body,\n placeholderColor: semanticColors.content.secondary,\n gap: spacing.sm,\n },\n leading: { color: semanticColors.content.secondary },\n indicator: { color: semanticColors.content.secondary },\n busyIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: {\n ...floatingSurfaceContract,\n minWidth: 220,\n maxWidth: 420,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n },\n density: {\n compact: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: layout.rowHeight.singleLine },\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n optionLeading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n optionLabel: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: { color: semanticColors.border.focus, glyph: \"sm\" },\n stateMessage: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.sm,\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n invalidBorder: semanticColors.border.danger,\n disabledOpacity: opacity.disabled,\n },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { size: SelectSize; density: SelectDensity };\n adaptive: { web: \"popover\"; native: \"sheet\" };\n frame: typeof fieldFrameContract;\n sizes: Record<\n SelectSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n textVariant: TextVariant;\n glyph: GlyphSize;\n }\n >;\n support: typeof formSupportContract;\n value: { color: ColorReference; placeholderColor: ColorReference; gap: number };\n leading: { color: ColorReference };\n indicator: { color: ColorReference };\n busyIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof floatingSurfaceContract & {\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n };\n density: Record<\n SelectDensity,\n Omit<typeof collectionItemContract, \"minHeight\" | \"selectedBackground\" | \"highlightedBackground\"> & { minHeight: number; selectedBackground: ColorReference; highlightedBackground: ColorReference }\n >;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n optionLeading: { color: ColorReference; glyph: GlyphSize };\n optionLabel: { fontWeight: FontWeightValue; selectedFontWeight: FontWeightValue };\n selectionIndicator: { color: ColorReference; glyph: GlyphSize };\n stateMessage: {\n color: ColorReference;\n textVariant: TextVariant;\n minHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n states: {\n hoverBackground: ColorReference;\n pressedBackground: ColorReference;\n focus: typeof focusIndicatorContract;\n invalidBorder: ColorReference;\n disabledOpacity: number;\n };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\n/** Editable input anatomy layered on the exact same collection grammar. */\nexport const comboboxRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"field\",\n \"leading\",\n \"input\",\n \"indicator\",\n \"clear\",\n \"loadingIndicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: selectRecipe.defaults,\n adaptive: selectRecipe.adaptive,\n frame: selectRecipe.frame,\n sizes: selectRecipe.sizes,\n support: selectRecipe.support,\n input: selectRecipe.value,\n leading: selectRecipe.leading,\n indicator: selectRecipe.indicator,\n clear: {\n diameter: control.buttonHeight.small,\n hitSlop: control.buttonHitSlop.small,\n glyph: \"xs\",\n color: semanticColors.content.secondary,\n },\n loadingIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: selectRecipe.popover,\n density: selectRecipe.density,\n sectionLabel: selectRecipe.sectionLabel,\n optionLeading: selectRecipe.optionLeading,\n optionLabel: selectRecipe.optionLabel,\n selectionIndicator: selectRecipe.selectionIndicator,\n stateMessage: selectRecipe.stateMessage,\n states: selectRecipe.states,\n transition: selectRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: typeof selectRecipe.defaults;\n adaptive: typeof selectRecipe.adaptive;\n frame: typeof selectRecipe.frame;\n sizes: typeof selectRecipe.sizes;\n support: typeof selectRecipe.support;\n input: typeof selectRecipe.value;\n leading: typeof selectRecipe.leading;\n indicator: typeof selectRecipe.indicator;\n clear: { diameter: number; hitSlop: number; glyph: GlyphSize; color: ColorReference };\n loadingIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof selectRecipe.popover;\n density: typeof selectRecipe.density;\n sectionLabel: typeof selectRecipe.sectionLabel;\n optionLeading: typeof selectRecipe.optionLeading;\n optionLabel: typeof selectRecipe.optionLabel;\n selectionIndicator: typeof selectRecipe.selectionIndicator;\n stateMessage: typeof selectRecipe.stateMessage;\n states: typeof selectRecipe.states;\n transition: typeof selectRecipe.transition;\n};\n\nexport const segmentedControlRecipe = {\n // Text navigation reuses radio selection, without cloning a product-only tab engine.\n text: { gap: spacing.md, indicatorWidth: 16, indicatorHeight: 2, indicatorRadius: radius.full,\n minHeight: control.minTouchTarget, labelGap: spacing.xxs, regular: {idle:\"400\",selected:\"600\"}, strong:{idle:\"500\",selected:\"700\"} },\n slots: [\"root\", \"item\", \"label\", \"indicator\"] as const,\n defaults: { size: \"medium\" },\n // Category filters share the single-selection engine, with a compact surface inside a 44 target.\n // See usage/components/segmented-control.md; no separate filter-selection state is introduced.\n pills: { gap: spacing.xs, radius: radius.full, inset: spacing.xs, minHeight: control.minTouchTarget,\n selectedBackground: semanticColors.content.body, selectedContent: semanticColors.canvas,\n /**\n * Pills are content-width, so large text keeps the row: it wraps inside a block and stays one line\n * inside a horizontal scroller (SearchScreen `filtersOverflow=\"scroll\"`, a product rail). `adaptive`\n * stacking is for the equal-width connected track only. Stacking pills too turned a seven-theme\n * filter rail into a ~440pt column at accessibility-large (utilverse 1.13.0 adoption, 2026-10-06),\n * and the product swapped in a Select to escape it. Rejected: a pills-only scroll prop, because\n * the host already owns the rail and a second scroller inside it would nest horizontal scrolling.\n */\n largeTextLayout: \"wrap\" as const },\n adaptive: {\n // Equal-width rows stop being comparable when every short label wraps one\n // Hangul syllable per line. Native renderers stack the options before that\n // point so each choice remains a readable phrase and a 44pt target.\n // Applies to presentation=\"connected\" only; pills follow `pills.largeTextLayout`.\n largeTextLayout: \"stacked\" as const,\n stackAtFontScale: largeTextThreshold,\n },\n // Track and selected segment share the canvas; the blue ring identifies the chosen option.\n container: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.subtle,\n radius: \"lg\",\n padding: spacing.xxs,\n gap: spacing.xxs,\n },\n sizes: {\n small: {\n minHeight: 36,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: control.minTouchTarget,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n item: {\n radius: \"md\",\n gap: spacing.xxs,\n idleContent: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n selectedBackground: semanticColors.canvas,\n selectedContent: semanticColors.content.brand,\n /**\n * The ring stays the selection signal so the control keeps a non-text\n * contrast of at least 3:1; a fill-only thumb cannot reach that against a\n * neutral track.\n */\n selectedBorder: semanticColors.border.focus,\n selectedBorderWidth: stroke.strong,\n selectedFontWeight: fontWeight.bold,\n focusRing: semanticColors.border.focus,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport const switchRecipe = {\n // Settings rows are controls, not prominent reading content. Spint's native row\n // used bodyLarge while Web inherited its parent; one role prevents that drift.\n rowLabelTextVariant: \"body\",\n slots: [\"root\", \"track\", \"thumb\", \"label\", \"description\"] as const,\n defaults: { size: \"medium\" },\n // Preserve existing inline Web and full-row Native layouts. Settings can opt in\n // to one shared row without wrapping a switch in a second interactive target.\n presentationDefaults: { web: \"inline\", native: \"row\" },\n // Descriptions beside a fixed track become a narrow column at larger text sizes.\n // Reuse the provider's large-text boundary so Web CSS and Native reflow together.\n stackedTextScale: largeTextThreshold,\n sizes: {\n small: { width: 44, height: 26, thumb: 22, inset: 2 },\n medium: { width: 52, height: 32, thumb: 28, inset: 2 },\n },\n colors: {\n // The off state is two unsaturated planes — a `surfaceAlt` track holding a `bg`\n // thumb — so on a dark palette both collapse into the card behind them: measured\n // 1.10:1 track-to-surface and 1.20:1 thumb-to-track on the canonical dark theme,\n // where the thumb is actually *darker* than its own track. The `*OffBorder`\n // hairlines are what keep the shape readable, so they are part of the contract\n // rather than a renderer flourish. A consumer settings screen shipped with the web\n // renderer ignoring them and the control was invisible (2026-09-14); the web\n // stylesheet now paints them and `action-contrast.browser.test.tsx` holds the line.\n trackOff: semanticColors.surface.sunken,\n trackOffBorder: semanticColors.content.secondary,\n // A lit track is a filled brand plate, same role as a checked checkbox\n // (`selectionControlRecipe.states.checkedBackground`). Was `content.brand`, a\n // content role; both renderers painted `primary` anyway, so this is a no-op.\n trackOn: semanticColors.action.brand.background,\n trackOnBorder: semanticColors.border.focus,\n thumbOff: semanticColors.canvas,\n thumbOffBorder: semanticColors.content.secondary,\n thumbOn: semanticColors.canvas,\n // A disabled switch still has to report what it is set to, so disabled\n // state changes hue instead of fading uniformly with `states.disabledOpacity`\n // — a product author found that a flat opacity made \"on\" and \"off\" nearly\n // identical, turning a saved setting unreadable while its backing request\n // was in flight. The on track keeps a recognisable (if muted) brand wash,\n // the off track and both thumbs drop to neutral tones, and every part\n // keeps a hairline border so the shape stays legible at reduced contrast.\n trackOffDisabled: semanticColors.border.default,\n trackOffBorderDisabled: semanticColors.border.default,\n trackOnDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n trackOnBorderDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n thumbDisabled: semanticColors.canvas,\n thumbDisabledBorder: semanticColors.content.decorative,\n },\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n rowMinHeight: control.minTouchTarget,\n // A switch with a description is a two-line row like any other list row,\n // and a product author found that letting content decide the height gave\n // neighbouring rows different heights — this pins it to the same value as\n // `listRowRecipe.density.comfortable.twoLineMinHeight`.\n rowTwoLineMinHeight: 68,\n} as const;\n\nexport type SelectionControlKind = \"checkbox\" | \"radio\";\n\nexport const selectionControlRecipe = {\n slots: [\n \"root\",\n \"control\",\n \"indicator\",\n \"leading\",\n \"content\",\n \"label\",\n \"description\",\n ] as const,\n defaults: { kind: \"checkbox\", size: \"medium\", presentation: \"card\" },\n sizes: {\n small: {\n rowMinHeight: control.minTouchTarget,\n control: 20,\n hitSlop: 12,\n glyph: \"xs\",\n gap: spacing.xs,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n labelVariant: \"label\",\n descriptionVariant: \"caption\",\n },\n medium: {\n rowMinHeight: layout.rowHeight.singleLine,\n control: control.selectionIndicator,\n hitSlop: 10,\n glyph: \"sm\",\n gap: spacing.sm,\n paddingHorizontal: spacing.md,\n paddingVertical: spacing.sm,\n labelVariant: \"body\",\n descriptionVariant: \"label\",\n },\n },\n shapes: { checkbox: \"sm\", radio: \"full\" },\n presentations: {\n plain: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"md\",\n useSizePadding: false,\n labelColor: null,\n },\n card: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n useSizePadding: true,\n labelColor: null,\n },\n // A row inside a card shared by the whole group (paired with\n // `selectionGroupRecipe.orientations.*.gap.grouped`). The item owns its\n // own padding so the selected fill runs the full width of the group, and\n // only the first and last rows round — an item-level radius on every row\n // left a visible white sliver in the group's corners. `labelColor` is\n // pinned here (rather than left to the row) because a grouped row's\n // label sits directly on the shared card background, not on its own\n // plate — the row needs to know the label reads correctly there.\n grouped: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"lg\",\n useSizePadding: true,\n labelColor: semanticColors.content.primary,\n },\n },\n label: {\n color: semanticColors.content.body,\n fontWeight: fontWeight.semibold,\n checkedFontWeight: fontWeight.bold,\n },\n leading: { size: \"md\", color: semanticColors.content.secondary },\n description: { color: semanticColors.content.secondary },\n indicators: {\n checkbox: { checked: \"check\", mixed: \"dash\" },\n radio: { checked: \"dot\", mixed: null },\n },\n radioDotRatio: 0.42,\n states: {\n idleBackground: semanticColors.canvas,\n idleBorder: semanticColors.content.secondary,\n checkedBackground: semanticColors.action.brand.background,\n checkedBorder: semanticColors.border.focus,\n indicator: semanticColors.action.brand.content,\n // Keep the entire choice plate white; border and checked indicator carry selection.\n selectedBackground: semanticColors.canvas,\n selectedBorder: semanticColors.border.focus,\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n invalidBorder: semanticColors.border.danger,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\n/**\n * Persistent top-level navigation. The recipe reserves an optional center gap\n * for a sibling primary action but never treats that action as a destination.\n */\nexport const bottomNavigationRecipe = {\n slots: [\n \"root\",\n \"surface\",\n \"list\",\n \"item\",\n \"indicator\",\n \"icon\",\n \"label\",\n \"badge\",\n ] as const,\n defaults: bottomNavigationRecipeDefaults,\n // Selected full-item cards retain the existing navigation state engine (Spint, 2026-10-12).\n selectionTile: {\n background: semanticColors.surface.brand,\n selectedBackground: semanticColors.action.brand.background,\n selectedContent: semanticColors.action.brand.content,\n padding: spacing.xxs,\n gap: spacing.xxs,\n radius: \"lg\" as const,\n },\n /**\n * Opt-in thick plank for tile selection (Spint wooden sign, 2026-10-13). The\n * lower edges replace the floating shadow so the bar reads as one flat object.\n * The selected edge darkens the brand fill with `interaction.depth` because no\n * palette role names a \"pressed brand\" shade.\n */\n raisedSurface: {\n background: semanticColors.surface.sunken,\n border: semanticColors.border.control,\n depth: 4,\n selectedDepth: 3,\n selectedDepthColor: semanticColors.interaction.depth,\n },\n adaptive: {\n web: \"fixed-compact-viewport\",\n native: \"navigator-tab-bar\",\n },\n presentations: {\n capsule: {\n background: semanticColors.surface.default,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"full\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 480,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n bar: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"block-start\"] as const,\n radius: null,\n shadow: null,\n maxWidth: null,\n outerPaddingHorizontal: 0,\n outerPaddingTop: 0,\n },\n floating: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"xl\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 384,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n },\n distributions: {\n equal: { centerGap: 0, requiresEvenItemCount: false },\n \"center-gap\": {\n centerGap: control.buttonHeight.large + spacing.md,\n requiresEvenItemCount: true,\n },\n },\n density: {\n compact: {\n itemMinWidth: 52,\n itemMinHeight: 52,\n padding: spacing.xxs,\n gap: 2,\n icon: \"sm\" as const,\n label: \"caption\" as const,\n },\n regular: {\n itemMinWidth: 56,\n itemMinHeight: 64,\n padding: spacing.xs,\n gap: spacing.xxs,\n icon: \"md\" as const,\n label: \"caption\" as const,\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selectedIcon: semanticColors.content.brand,\n selectedLabel: semanticColors.content.brand,\n },\n /**\n * Stable icon/badge layout anchor. Selection never paints this slot as a\n * pill: the icon and label below own the non-color selected evidence.\n */\n indicator: {\n minWidth: 40,\n minHeight: 28,\n radius: \"full\" as const,\n visual: \"none\" as const,\n background: null,\n border: null,\n borderWidth: 0,\n },\n icon: {\n /**\n * Adapters apply at least one supported emphasis. Stroke-oriented glyphs\n * use strokeWidth; renderers without stroke control use scale instead.\n */\n selectedEmphasis: {\n minimumAdaptations: 1,\n strokeWidth: { idle: stroke.strong, selected: 3 },\n scale: { idle: 1, selected: 1.06 },\n },\n },\n label: {\n fontWeight: fontWeight.semibold,\n selectedFontWeight: fontWeight.bold,\n textAlign: \"center\",\n wrap: true,\n fixedLines: null,\n },\n badge: {\n size: \"small\" as const,\n variant: \"floating\" as const,\n anchor: { blockStart: -spacing.xxs, inlineEnd: -spacing.xs },\n subtreeHiddenFromAccessibility: true,\n },\n safeArea: {\n mode: \"additive\",\n minimumBottomPadding: spacing.xs,\n },\n keyboard: { defaultBehavior: \"hide\", movesAboveKeyboard: false },\n largeText: {\n allowFontScaling: true,\n // Persistent navigation has to keep every destination visible at once.\n // Let labels respond to Dynamic Type, but cap the visual chrome before a\n // three-character destination turns into a three-line column. The full,\n // uncapped label remains the item's accessible name.\n maxFontSizeMultiplier: 1.4,\n fixedItemHeight: false,\n labelWraps: true,\n },\n direction: {\n itemOrder: \"logical\",\n badgeAnchor: \"inline-end\",\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n selectedNonColorEvidence: {\n target: \"icon-and-label\" as const,\n label: \"font-weight\" as const,\n icon: \"emphasis\" as const,\n },\n selectedFocusSeparation: {\n selectedTarget: \"icon-and-label\" as const,\n focusTarget: \"item\",\n minimumGap: focusIndicatorContract.offset,\n },\n },\n transition: motionPreset.micro,\n} as const;\n\nexport const tabsRecipe = {\n slots: [\"root\", \"list\", \"tab\", \"label\", \"indicator\", \"panel\"] as const,\n defaults: { size: \"medium\", layout: \"content\", overflow: \"scroll\" },\n sizes: {\n small: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: 48,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selected: semanticColors.content.primary,\n indicator: semanticColors.border.focus,\n divider: semanticColors.border.default,\n },\n gap: spacing.xs,\n icon: { glyph: \"xs\" },\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n layouts: {\n content: { fitted: false },\n fitted: { fitted: true },\n },\n overflow: {\n scroll: { scrollable: true, wrap: false },\n clip: { scrollable: false, wrap: false },\n },\n indicatorHeight: stroke.strong,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport type NoticeTone = \"info\" | \"success\" | \"warning\" | \"attention\" | \"danger\";\n\nexport const noticeRecipe = {\n slots: [\"root\", \"icon\", \"content\", \"title\", \"description\", \"action\"] as const,\n defaults: { tone: \"info\" },\n tones: {\n ...semanticColors.feedback,\n info: {\n ...semanticColors.feedback.info,\n // The informational wash landed bluer and darker than the selection\n // tint itself over canvas, so a banner outranked the control the\n // reader was supposed to act on. `info` alone goes neutral — its\n // accent stays in the icon, the title, and the border; `success`/\n // `warning`/`attention`/`danger` keep the tinted surface because a\n // product author confirmed those readings didn't have the same\n // conflict with a selection state.\n background: semanticColors.canvas,\n },\n },\n radius: \"md\",\n padding: spacing.md,\n gap: spacing.sm,\n contentGap: spacing.xxs,\n iconSize: \"sm\",\n borderWidth: stroke.default,\n title: { textVariant: \"body\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.body, textVariant: \"body\" },\n} as const;\n\nexport const skeletonRecipe = {\n slots: [\"root\"] as const,\n // animated는 0.9.12까지 false였다. 정지한 블록은 로딩이 아니라 깨진 화면으로\n // 읽힌다. 전환 근거와 소비 측 migration은\n // .changeset/skeleton-pulse-by-default.md에 있다.\n defaults: { shape: \"block\", animated: true },\n background: semanticColors.canvas,\n shapes: {\n block: { radius: \"md\", defaultHeight: spacing.xxl },\n text: { radius: \"sm\", defaultHeight: spacing.md },\n circle: { radius: \"full\", defaultHeight: glyph.xxl },\n },\n animation: {\n duration: motion.slow * 4,\n easing: \"standard\",\n fromOpacity: 0.56,\n toOpacity: 1,\n reducedMotion: \"static\",\n },\n} as const;\n\nexport const emptyStateRecipe = {\n slots: [\"root\", \"icon\", \"title\", \"description\", \"action\"] as const,\n defaults: { density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.xl },\n regular: { paddingVertical: spacing.xxxl },\n },\n paddingHorizontal: spacing.xl,\n gap: spacing.xs,\n icon: { size: \"lg\", color: semanticColors.content.decorative },\n title: { textVariant: \"body\", color: semanticColors.content.primary, fontWeight: fontWeight.semibold },\n description: { textVariant: \"label\", color: semanticColors.content.secondary },\n} as const;\n\nexport const spinnerRecipe = {\n slots: [\"root\"] as const,\n defaults: { size: \"medium\", tone: \"brand\" },\n sizes: { small: glyph.xs, medium: glyph.sm, large: glyph.lg },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.secondary,\n inverse: semanticColors.content.inverse,\n },\n strokeWidth: stroke.strong,\n animation: {\n duration: 800,\n easing: \"standard\",\n reducedMotion: \"static\",\n },\n} as const;\n\nexport type LoadMoreDensity = \"compact\" | \"regular\";\n\nexport const loadMoreRecipe = {\n slots: [\n \"root\",\n \"status\",\n \"spinner\",\n \"trigger\",\n \"error\",\n \"retry\",\n \"end\",\n ] as const,\n defaults: { mode: \"automatic\", density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.sm, gap: spacing.xs },\n regular: { paddingVertical: spacing.lg, gap: spacing.sm },\n },\n status: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n },\n error: {\n color: semanticColors.content.danger,\n textVariant: \"label\",\n },\n end: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trigger: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n radius: \"md\",\n color: semanticColors.content.brand,\n textVariant: \"label\",\n fontWeight: fontWeight.bold,\n },\n spinner: { size: \"small\", tone: \"brand\" },\n states: {\n focus: focusIndicatorContract,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { mode: \"automatic\" | \"manual\"; density: LoadMoreDensity };\n density: Record<LoadMoreDensity, { paddingVertical: number; gap: number }>;\n status: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n end: { color: ColorReference; textVariant: TextVariant };\n trigger: {\n minHeight: number;\n paddingHorizontal: number;\n radius: keyof typeof radius;\n color: ColorReference;\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n };\n spinner: { size: SpinnerSize; tone: SpinnerTone };\n states: {\n focus: typeof focusIndicatorContract;\n pressedOpacity: number;\n disabledOpacity: number;\n };\n};\n\nexport const avatarRecipe = {\n slots: [\"root\", \"image\", \"fallback\", \"badge\", \"group\"] as const,\n /**\n * 겹쳐 쌓은 아바타 묶음이 얼마나 겹치는가. 비율로 두는 이유는 크기 축이 이미 네 단계라\n * 픽셀로 적으면 네 벌이 되기 때문이다. 남은 인원은 제품이 문구로 만든다(\"+3\").\n */\n overlapRatio: 0.3,\n defaults: { size: \"medium\", shape: \"circle\" },\n sizes: { small: 32, medium: 40, large: 48, xlarge: 64 },\n shapes: { rounded: \"md\", circle: \"full\" },\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n border: semanticColors.border.default,\n} as const;\n\nexport type StatisticDensity = \"compact\" | \"comfortable\";\nexport type StatisticPresentation = \"plain\" | \"surface\";\n\nexport const statisticRecipe = {\n slots: [\n \"group\",\n \"root\",\n \"label\",\n \"valueRow\",\n \"prefix\",\n \"value\",\n \"suffix\",\n \"trend\",\n \"trendMark\",\n \"hint\",\n ] as const,\n defaults: { density: \"comfortable\", presentation: \"plain\", columns: 3 },\n density: {\n compact: {\n padding: spacing.sm,\n gap: spacing.xxs,\n labelVariant: \"caption\",\n valueVariant: \"title\",\n },\n comfortable: {\n padding: spacing.md,\n gap: spacing.xs,\n labelVariant: \"label\",\n valueVariant: \"heading\",\n },\n },\n presentations: {\n plain: { background: null, border: null, borderWidth: 0, radius: \"md\" },\n surface: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n },\n },\n group: {\n gap: spacing.xs,\n minItemWidth: 120,\n columns: [1, 2, 3, 4] as const,\n },\n label: {\n color: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n },\n value: {\n color: semanticColors.content.primary,\n fontWeight: fontWeight.heavy,\n numericVariant: \"tabular\",\n maxLines: null,\n },\n affix: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n },\n hint: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trend: {\n textVariant: \"caption\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n marks: {\n up: \"trendUp\",\n down: \"trendDown\",\n flat: \"trendFlat\",\n },\n tones: {\n neutral: semanticColors.content.secondary,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: {\n density: StatisticDensity;\n presentation: StatisticPresentation;\n columns: 1 | 2 | 3 | 4;\n };\n density: Record<\n StatisticDensity,\n {\n padding: number;\n gap: number;\n labelVariant: TextVariant;\n valueVariant: TextVariant;\n }\n >;\n presentations: Record<\n StatisticPresentation,\n {\n background: ColorReference | null;\n border: ColorReference | null;\n borderWidth: number;\n radius: keyof typeof radius;\n }\n >;\n group: {\n gap: number;\n minItemWidth: number;\n columns: readonly (1 | 2 | 3 | 4)[];\n };\n label: { color: ColorReference; fontWeight: FontWeightValue };\n value: {\n color: ColorReference;\n fontWeight: FontWeightValue;\n numericVariant: \"tabular\";\n maxLines: null;\n };\n affix: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n hint: { color: ColorReference; textVariant: TextVariant };\n trend: {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n gap: number;\n marks: Record<\"up\" | \"down\" | \"flat\", string>;\n tones: Record<\"neutral\" | \"success\" | \"warning\" | \"danger\", ColorReference>;\n };\n};\n\nexport const sheetRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"handle\", \"header\", \"title\", \"body\", \"footer\", \"close\"] as const,\n defaults: { placement: \"bottom\", size: \"auto\" },\n /**\n * How tall the sheet opens. `auto` keeps the content-driven height that the\n * recipe already caps with `maxHeightRatio`. The fixed steps exist because\n * consumers otherwise reach for `contentStyle={{ height }}`, which moves a\n * recipe-owned dimension into product code.\n */\n sizes: {\n auto: null,\n medium: 0.6,\n large: 0.85,\n full: 1,\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"xl\",\n shadow: floatingSurfaceContract.shadow,\n /** Caps `size=\"auto\"` only; fixed `sizes` (medium/large/full) are bounded by the safe-area viewport instead. */\n maxHeightRatio: 0.9,\n paddingHorizontal: spacing.lg,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n },\n web: { maxWidth: 640 },\n safeArea: {\n edge: \"bottom\",\n mode: \"additive\",\n minimumPadding: spacing.sm,\n },\n handle: {\n width: 36,\n height: 4,\n radius: \"full\",\n color: semanticColors.content.secondary,\n visibleByDefault: false,\n showWhen: \"swipe-dismiss-enabled\",\n },\n header: { minHeight: control.minTouchTarget, gap: spacing.sm },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n },\n body: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.md,\n },\n footer: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.sm,\n paddingTop: spacing.sm,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\nexport const dialogRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"header\", \"title\", \"description\", \"body\", \"footer\", \"close\"] as const,\n defaults: { size: \"medium\", dismissible: true },\n sizes: {\n small: { maxWidth: 320, padding: spacing.lg },\n medium: { maxWidth: 420, padding: spacing.xl },\n large: { maxWidth: 640, padding: spacing.xl },\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"lg\",\n gap: spacing.md,\n shadow: floatingSurfaceContract.shadow,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\n/**\n * Tone is the dialog's reason for interrupting, not its decoration.\n *\n * `attention` and `danger` covered \"are you sure?\" and \"this destroys\n * something\", but consumers also stop the user to *explain* an action before\n * running it — an intro before a button that copies content into the account,\n * or a confirmation that something finished. Those were shipping with the\n * attention mark, so a neutral explanation read as a warning (reported by a\n * product team on 2026-09-15). `info` and `success` carry the existing feedback\n * accents so the axis stays one token lookup per renderer.\n */\nexport type AlertDialogTone = \"attention\" | \"danger\" | \"info\" | \"success\";\n\nexport const alertDialogRecipe = {\n slots: [\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"icon\",\n \"title\",\n \"description\",\n \"status\",\n \"error\",\n \"actions\",\n \"cancel\",\n \"confirm\",\n ] as const,\n defaults: { tone: \"attention\", size: \"small\" },\n sizes: dialogRecipe.sizes,\n backdrop: dialogRecipe.backdrop,\n content: dialogRecipe.content,\n tones: {\n attention: {\n icon: semanticColors.feedback.attention.foreground,\n iconBackground: semanticColors.feedback.attention.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n danger: {\n icon: semanticColors.content.danger,\n iconBackground: semanticColors.feedback.danger.background,\n confirm: semanticColors.action.danger.background,\n confirmContent: semanticColors.action.danger.content,\n },\n // Explanation and completion keep the brand confirm button: the action they\n // introduce is the ordinary one, only the mark and its wash change.\n info: {\n icon: semanticColors.feedback.info.foreground,\n iconBackground: semanticColors.feedback.info.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n success: {\n icon: semanticColors.feedback.success.foreground,\n iconBackground: semanticColors.feedback.success.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n },\n icon: { containerSize: control.minTouchTarget, glyph: \"md\", radius: \"full\" },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n },\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n error: formSupportContract.error,\n // Stacked: confirm on top, cancel below, tighter gap (reported 2026-09-27). Row stays [cancel][confirm].\n actions: {\n gap: spacing.sm,\n stackedGap: spacing.xs,\n stackedOrder: \"confirm-first\",\n stackBelow: breakpoint.medium,\n minButtonWidth: 96,\n },\n transition: dialogRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: AlertDialogTone; size: DialogSize };\n sizes: typeof dialogRecipe.sizes;\n backdrop: typeof dialogRecipe.backdrop;\n content: typeof dialogRecipe.content;\n tones: Record<\n AlertDialogTone,\n {\n icon: ColorReference;\n iconBackground: ColorReference;\n confirm: ColorReference;\n confirmContent: ColorReference;\n }\n >;\n icon: { containerSize: number; glyph: GlyphSize; radius: keyof typeof radius };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n actions: {\n gap: number;\n stackedGap: number;\n stackedOrder: \"confirm-first\";\n stackBelow: number;\n minButtonWidth: number;\n };\n transition: typeof dialogRecipe.transition;\n};\n\nexport type ToastPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\";\nexport type ToastTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type ToastToneMark =\n | \"notifications\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"alert\";\n\nexport const toastRecipe = {\n slots: [\n \"viewport\",\n \"root\",\n \"toneMark\",\n \"icon\",\n \"media\",\n \"content\",\n \"title\",\n \"description\",\n \"progress\",\n \"action\",\n \"close\",\n ] as const,\n defaults: { tone: \"neutral\", placement: \"bottom\", durationMs: 3000 },\n adaptive: { web: \"fixed-viewport\", native: \"safe-area-overlay\" },\n viewport: {\n layer: layer.toast,\n gap: spacing.sm,\n inset: spacing.md,\n maxWidth: 420,\n safeAreaMode: \"additive\",\n },\n placements: {\n top: { blockEdge: \"top\", inlineEdge: \"center\", stackFrom: \"top\" },\n \"top-start\": { blockEdge: \"top\", inlineEdge: \"start\", stackFrom: \"top\" },\n \"top-end\": { blockEdge: \"top\", inlineEdge: \"end\", stackFrom: \"top\" },\n bottom: { blockEdge: \"bottom\", inlineEdge: \"center\", stackFrom: \"bottom\" },\n \"bottom-start\": { blockEdge: \"bottom\", inlineEdge: \"start\", stackFrom: \"bottom\" },\n \"bottom-end\": { blockEdge: \"bottom\", inlineEdge: \"end\", stackFrom: \"bottom\" },\n },\n // 1.10.0: tone is carried by a tinted icon badge, not a 2px edge strip — the strip plus a bare glyph read\n // as a grey dot on neutral toasts (BurnTok 2026-09-30 feedback \"알림 ui 구려\"). `badge` is the badge fill.\n tones: {\n neutral: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.secondary,\n badge: semanticColors.surface.sunken,\n mark: \"notifications\",\n },\n info: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.info.foreground,\n badge: semanticColors.feedback.info.badgeBackground,\n mark: \"info\",\n },\n success: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.success.foreground,\n badge: semanticColors.feedback.success.badgeBackground,\n mark: \"success\",\n },\n warning: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.warning.foreground,\n badge: semanticColors.feedback.warning.badgeBackground,\n mark: \"warning\",\n },\n danger: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.danger,\n badge: semanticColors.feedback.danger.badgeBackground,\n mark: \"alert\",\n },\n },\n surface: {\n background: semanticColors.canvas,\n // Strong border stays: the card boundary must keep 3:1 against the page (toast.test.ts, WCAG 1.4.11).\n // 1.10.0 softened the shape to lg; 1.20 makes every toast the \"panel\" (xl) that BurnTok designed for its\n // review status, by user request on 2026-10-10 (\"패널이 토스트가 되는거지\").\n border: semanticColors.border.strong,\n borderWidth: stroke.default,\n radius: \"xl\",\n shadow: floatingSurfaceContract.shadow,\n minHeight: layout.rowHeight.singleLine,\n padding: spacing.md,\n gap: spacing.sm,\n maxWidth: 420,\n },\n // Retired in 1.10.0 (width 0): the icon badge carries tone. Kept so the slot contract stays additive.\n toneMark: { width: 0, radius: \"full\" },\n icon: { glyph: \"sm\", badgeDiameter: 32, badgeRadius: \"full\" },\n // A product media (mascot, avatar) replaces the tone badge in the same leading column. 44 keeps a\n // character legible; it is decorative, so the tone still lives in `data-tone` and the copy.\n media: { size: 44 },\n content: { gap: spacing.xxs },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n },\n // Secondary copy so the title leads; body-on-body read as one grey block.\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n // Step dots of a running task: done and current are brand, upcoming is the divider colour; the current\n // label is bold. Labels sit beside each dot so the row reads without colour alone (WCAG 1.4.1).\n progress: {\n gap: spacing.sm,\n dotSize: 6,\n currentScale: 1.4,\n doneColor: semanticColors.content.brand,\n upcomingColor: semanticColors.border.default,\n labelColor: semanticColors.content.secondary,\n currentLabelColor: semanticColors.content.primary,\n textVariant: \"caption\",\n },\n // 1.10.0: a tinted pill button instead of a bare text link, so the one thing a toast asks for is\n // recognisable as a control. Hit area stays the 44pt touch target. 1.20 panel: it sits under the copy\n // at the start edge, where the eye already is, instead of the far end.\n action: {\n color: semanticColors.content.brand,\n background: semanticColors.surface.brand,\n radius: \"full\",\n align: \"start\",\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n },\n close: {\n color: semanticColors.content.secondary,\n diameter: control.minTouchTarget,\n glyph: \"xs\",\n },\n states: {\n pressedOpacity: opacity.pressed,\n draggedOpacity: opacity.dragged,\n focus: focusIndicatorContract,\n },\n gesture: { dismissThreshold: 50 },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: ToastTone; placement: ToastPlacement; durationMs: number };\n adaptive: { web: \"fixed-viewport\"; native: \"safe-area-overlay\" };\n viewport: {\n layer: number;\n gap: number;\n inset: number;\n maxWidth: number;\n safeAreaMode: \"additive\";\n };\n placements: Record<\n ToastPlacement,\n {\n blockEdge: \"top\" | \"bottom\";\n inlineEdge: \"start\" | \"center\" | \"end\";\n stackFrom: \"top\" | \"bottom\";\n }\n >;\n tones: Record<\n ToastTone,\n { foreground: ColorReference; accent: ColorReference; badge: ColorReference; mark: ToastToneMark }\n >;\n surface: {\n background: ColorReference;\n border: ColorReference;\n borderWidth: number;\n radius: keyof typeof radius;\n shadow: typeof floatingSurfaceContract.shadow;\n minHeight: number;\n padding: number;\n gap: number;\n maxWidth: number;\n };\n toneMark: { width: number; radius: keyof typeof radius };\n icon: { glyph: GlyphSize; badgeDiameter: number; badgeRadius: keyof typeof radius };\n media: { size: number };\n content: { gap: number };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n progress: {\n gap: number;\n dotSize: number;\n currentScale: number;\n doneColor: ColorReference;\n upcomingColor: ColorReference;\n labelColor: ColorReference;\n currentLabelColor: ColorReference;\n textVariant: TextVariant;\n };\n action: {\n color: ColorReference;\n background: ColorReference;\n radius: keyof typeof radius;\n align: \"start\" | \"end\";\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n minHeight: number;\n paddingHorizontal: number;\n };\n close: { color: ColorReference; diameter: number; glyph: GlyphSize };\n states: {\n pressedOpacity: number;\n draggedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n gesture: { dismissThreshold: number };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\nexport const tooltipRecipe = {\n slots: [\"provider\", \"trigger\", \"content\", \"arrow\"] as const,\n defaults: tooltipDescriptorDefaults,\n layer: layer.tooltip,\n surface: {\n ...floatingSurfaceContract,\n background: semanticColors.content.primary,\n border: semanticColors.content.primary,\n radius: \"sm\" as const,\n padding: spacing.xs,\n },\n content: {\n color: semanticColors.canvas,\n textVariant: \"label\",\n maxWidth: 280,\n },\n arrow: {\n width: 10,\n height: 5,\n color: semanticColors.content.primary,\n padding: spacing.xs,\n },\n positioning: {\n sideOffset: spacing.xxs,\n collisionPadding: spacing.sm,\n },\n transition: { enter: motionPreset.micro, exit: motionPreset.exit },\n} as const;\n\nexport const topBarRecipe = {\n slots: [\n \"root\",\n \"leading\",\n \"title\",\n \"titleLeading\",\n \"titleAction\",\n \"trailing\",\n \"action\",\n \"actionLabel\",\n ] as const,\n defaults: { centered: true },\n minHeight: control.buttonHeight.large,\n sideMinWidth: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n largeTextThreshold,\n title: { textVariant: \"bodyLarge\", color: semanticColors.content.primary, fontWeight: fontWeight.bold },\n titleAction: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xs,\n pressedOpacity: opacity.pressed,\n },\n action: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xxs,\n paddingHorizontal: spacing.xxs,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n actionLabel: {\n textVariant: \"caption\",\n color: semanticColors.content.primary,\n fontWeight: fontWeight.medium,\n },\n background: semanticColors.canvas,\n} as const;\n\nexport const bottomCtaRecipe = {\n slots: [\"root\", \"description\", \"secondaryAction\", \"primaryAction\"] as const,\n minHeight: 64,\n paddingHorizontal: layout.pagePadding.regular,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n gap: spacing.sm,\n // A footer painted in the canvas tone left only a 1pt hairline between it\n // and the content scrolling underneath — a product author found that the\n // line cut a glyph in half at whatever scroll position the reader stopped\n // at, reading as a broken card rather than a footer. Layering by surface\n // (one step up from canvas) instead of by shadow alone is how this\n // component builds the separation; `shadow` below is reserved for the one\n // case that still needs it — see its comment.\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n // The cut described above is the scroll viewport's edge, not a spacing\n // problem — content clips mid-glyph, and a hairline between two\n // similarly-light planes can't carry that on its own. The footer casts\n // upward instead: the one case where a shadow, rather than a surface step,\n // is the right tool, because the footer genuinely overlaps the content\n // beneath it.\n shadow: {\n color: \"#000000\",\n opacity: 0.08,\n radius: 8,\n offsetY: -2,\n elevation: 8,\n },\n} as const;\n\nexport const sectionRecipe = {\n slots: [\"root\", \"header\", \"copy\", \"title\", \"description\", \"action\", \"content\"] as const,\n gap: spacing.xs,\n headerGap: spacing.sm,\n copyGap: spacing.xxs,\n title: { textVariant: \"title\", color: semanticColors.content.body, fontWeight: fontWeight.bold },\n description: { textVariant: \"caption\", color: semanticColors.content.secondary },\n} as const;\n\nexport type SegmentedControlSize = keyof typeof segmentedControlRecipe.sizes;\nexport type SwitchPresentation = \"inline\" | \"row\";\nexport type SwitchSize = keyof typeof switchRecipe.sizes;\nexport type SelectionControlSize = keyof typeof selectionControlRecipe.sizes;\nexport type SelectionControlPresentation = keyof typeof selectionControlRecipe.presentations;\nexport type TabSize = keyof typeof tabsRecipe.sizes;\nexport type TabsLayout = keyof typeof tabsRecipe.layouts;\nexport type TabsOverflow = keyof typeof tabsRecipe.overflow;\nexport type SpinnerSize = keyof typeof spinnerRecipe.sizes;\nexport type SpinnerTone = keyof typeof spinnerRecipe.tones;\nexport type AvatarSize = keyof typeof avatarRecipe.sizes;\nexport type AvatarShape = keyof typeof avatarRecipe.shapes;\nexport type DialogSize = keyof typeof dialogRecipe.sizes;\n"]}
@@ -0,0 +1,13 @@
1
+ /** Conversation previews reserve metadata and unread status while truncating the message. */
2
+ export declare const conversationRowRecipe: {
3
+ readonly avatarSize: 56;
4
+ readonly unreadSize: 10;
5
+ readonly gap: 12;
6
+ readonly paddingInline: 16;
7
+ readonly paddingBlock: 10;
8
+ readonly contentGap: 2;
9
+ readonly titleWeight: "500";
10
+ readonly unreadTitleWeight: "800";
11
+ readonly unreadPreviewWeight: "700";
12
+ };
13
+ //# sourceMappingURL=conversation-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-row.d.ts","sourceRoot":"","sources":["../src/conversation-row.ts"],"names":[],"mappings":"AAEA,6FAA6F;AAC7F,eAAO,MAAM,qBAAqB;;;;;;;;;;CAUxB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { spacing } from "./foundations.js";
2
+ /** Conversation previews reserve metadata and unread status while truncating the message. */
3
+ export const conversationRowRecipe = {
4
+ avatarSize: 56,
5
+ unreadSize: 10,
6
+ gap: spacing.sm,
7
+ paddingInline: spacing.md,
8
+ paddingBlock: 10,
9
+ contentGap: 2,
10
+ titleWeight: "500",
11
+ unreadTitleWeight: "800",
12
+ unreadPreviewWeight: "700",
13
+ };
14
+ //# sourceMappingURL=conversation-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-row.js","sourceRoot":"","sources":["../src/conversation-row.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,aAAa,EAAE,OAAO,CAAC,EAAE;IACzB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,KAAK;IACxB,mBAAmB,EAAE,KAAK;CAClB,CAAC","sourcesContent":["import { spacing } from \"./foundations.js\";\n\n/** Conversation previews reserve metadata and unread status while truncating the message. */\nexport const conversationRowRecipe = {\n avatarSize: 56,\n unreadSize: 10,\n gap: spacing.sm,\n paddingInline: spacing.md,\n paddingBlock: 10,\n contentGap: 2,\n titleWeight: \"500\",\n unreadTitleWeight: \"800\",\n unreadPreviewWeight: \"700\",\n} as const;\n"]}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Package release shown by documentation surfaces. Kept in sync by a test. */
2
- export declare const designSystemVersion: "1.23.0";
2
+ export declare const designSystemVersion: "1.24.0";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Package release shown by documentation surfaces. Kept in sync by a test. */
2
- export const designSystemVersion = "1.23.0";
2
+ export const designSystemVersion = "1.24.0";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAiB,CAAC","sourcesContent":["/** Package release shown by documentation surfaces. Kept in sync by a test. */\nexport const designSystemVersion = \"1.23.0\" as const;\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAiB,CAAC","sourcesContent":["/** Package release shown by documentation surfaces. Kept in sync by a test. */\nexport const designSystemVersion = \"1.24.0\" as const;\n"]}
@@ -1,6 +1,6 @@
1
1
  # Component maturity and evidence manifest
2
2
 
3
- > Generated from `@hjmds/design-contracts` 1.23.0. Do not edit this file directly; run `pnpm contracts:sync`.
3
+ > Generated from `@hjmds/design-contracts` 1.24.0. Do not edit this file directly; run `pnpm contracts:sync`.
4
4
 
5
5
  This document is the human-readable projection of the same catalog and Showcase manifest consumed by product CI.
6
6
 
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "designSystemVersion": "1.23.0",
3
+ "designSystemVersion": "1.24.0",
4
4
  "source": "packages/design-contracts/docs/generated/showcase-manifest.json",
5
5
  "surfaces": {
6
6
  "web": {
7
7
  "packageName": "@hjmds/react",
8
- "packageVersion": "1.23.0",
8
+ "packageVersion": "1.24.0",
9
9
  "activeComponents": 104,
10
10
  "claimedComponents": 103,
11
11
  "completeScenarioComponents": 103,
@@ -5672,7 +5672,7 @@
5672
5672
  },
5673
5673
  "native": {
5674
5674
  "packageName": "@hjmds/react-native",
5675
- "packageVersion": "1.23.0",
5675
+ "packageVersion": "1.24.0",
5676
5676
  "activeComponents": 85,
5677
5677
  "claimedComponents": 83,
5678
5678
  "completeScenarioComponents": 83,
@@ -1,6 +1,6 @@
1
1
  # Renderer evidence coverage
2
2
 
3
- > Generated for HJM 1.23.0. Do not edit directly; run `pnpm evidence:sync`.
3
+ > Generated for HJM 1.24.0. Do not edit directly; run `pnpm evidence:sync`.
4
4
 
5
5
  This projection joins the canonical surface maturity manifest with first-party renderer claims. Missing scenarios are explicit beta promotion debt; stable surfaces are blocked by CI until none remain.
6
6
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "designSystemVersion": "1.23.0",
3
+ "designSystemVersion": "1.24.0",
4
4
  "packageName": "@hjmds/design-contracts",
5
5
  "components": [
6
6
  {
@@ -23,7 +23,7 @@ Flutter 앱에는 React 컴포넌트를 주입할 수 없다. 화면 역할과
23
23
 
24
24
  ## 선택 기준과 소유권
25
25
 
26
- 모든 화면·구성의 공통 구조는 HJM이 제공한다. [선택 지침](usage/SELECTION.md)의 소유권을 따르며, 제품은 데이터·문구·추가 기능만 연결한다. 전용 구성이 없는 영역은 `CompositionLayout`, 가상화 댓글 행은 `CommentThreadRow`를 사용해 기본 배치를 복제하지 않는다. 두 API는 현재 checkout의 미게시 추가분이다.
26
+ 모든 화면·구성의 공통 구조는 HJM이 제공한다. [선택 지침](usage/SELECTION.md)의 소유권을 따르며, 제품은 데이터·문구·추가 기능만 연결한다. 전용 구성이 없는 영역은 `CompositionLayout`, 가상화 댓글 행은 `CommentThreadRow`를 사용해 기본 배치를 복제하지 않는다. 두 API는 1.23.0부터 제공한다.
27
27
 
28
28
 
29
29
  - 로그인: 기존 `auth-screen`의 `AuthScreenLayout` + `AuthProviderButton`을 그대로 쓴다.
@@ -6,7 +6,7 @@
6
6
  버튼 위치에서 시작해 구성·컴포넌트 지침으로 내려가고, 값은 토큰 지침에서 고른다.
7
7
  [선택 기준](SELECTION.md)으로 그대로 사용·공개 슬롯 확장·제품 전용 구성을 고른다. 설치 버전의 지침을 본다: `node_modules/@hjmds/design-contracts/docs/usage/`.
8
8
  제공 기준은 확인한 기본 API 버전이며 최초 출시 버전이 아니다. 구성·화면은 각 API 지침의 제공 버전을 확인한다.
9
- API 안정성은 1.22.0의 생성 manifest에서 읽은 정규(canonical) API 기준이다. 동반·선택형 확장은 개별 계약을 확인한다.
9
+ API 안정성은 1.24.0의 생성 manifest에서 읽은 정규(canonical) API 기준이다. 동반·선택형 확장은 개별 계약을 확인한다.
10
10
  Storybook 배포/실험은 예제 분류이며 npm 게시·기기 검증·제품 반영을 의미하지 않는다.
11
11
  `분류`는 Storybook 제목 `<배포|실험>/<단계>/<분류>/<항목>`의 셋째 마디이고, 토큰·구성·화면은 Storybook 메뉴와 같은 순서다.
12
12
 
@@ -66,10 +66,11 @@ Storybook 배포/실험은 예제 분류이며 npm 게시·기기 검증·제품
66
66
  | [Combobox](components/combobox.md) | 입력 | 주어진 목록에서 하나를 고르는데 목록이 길어 입력으로 좁혀야 할 때 쓴다. | 1.12.1 | Web · Native | Web stable / Native stable | 배포 |
67
67
  | [CommandPalette](components/command-palette.md) | 오버레이 | ⌘K 스타일로 앱 전체의 **행동**을 검색해 실행하는 모달에 쓴다. | 1.12.1 | Web | Web stable / Native unsupported | 배포 |
68
68
  | [CommentThreadScreen](components/comment-thread-screen.md) | 화면/소통 | 게시물·콘텐츠 아래의 댓글 화면 한 장에 쓴다. | 1.17.1 | Web · Native | 개별 API 계약 참조 | 배포 |
69
- | [CompositionLayout](components/composition-layout.md) | 화면/설정 | 카드·패널·화면 본문 안의 콘텐츠 묶음에 제목·배지·행동·안내·본문·하단 영역이 필요할 때 쓴다. | 미게시(1.22.0 이후) | Web · Native | 개별 API 계약 참조 | 배포 |
69
+ | [CompositionLayout](components/composition-layout.md) | 화면/설정 | 카드·패널·화면 본문 안의 콘텐츠 묶음에 제목·배지·행동·안내·본문·하단 영역이 필요할 때 쓴다. | 1.23.0 | Web · Native | 개별 API 계약 참조 | 배포 |
70
70
  | [Container](components/container.md) | 레이아웃 | 화면 본문의 최대 폭과 좌우(논리 방향) 여백을 맞출 때 쓴다. | 1.12.1 | Web · Native | Web stable / Native stable | 배포 |
71
71
  | [ContentTransition](components/content-transition.md) | 시각 효과 | 같은 자리의 내용이 상태에 따라 바뀔 때(필터 결과 패널, 단계별 본문) 새 내용이 짧게 나타나도록 감싼다. | 1.12.1 | Web · Native | 개별 API 계약 참조 | 배포 |
72
72
  | [ContextMenu](components/context-menu.md) | 탐색 | Web에서 제품이 소유한 영역(카드·목록 행·캔버스)의 우클릭·길게 누르기·Shift+F10에 명령 목록을 띄울 때 쓴다. | 1.12.1 | Web · Native | Web stable / Native unsupported | 배포 |
73
+ | [ConversationRow](components/conversation-row.md) | — | 대화 목록에서 상대, 마지막 메시지, 상대 시각, 안 읽음 점을 표시한다. | 1.24.0 | Web · Native | 개별 API 계약 참조 | 실험 |
73
74
  | [CounterBadge](components/counter-badge.md) | 데이터 표시 | 읽지 않은 알림·메시지·장바구니 수처럼 **셀 수 있는 개수**를 아이콘·행 옆에 작게 보일 때 쓴다. | 1.12.1 | Web · Native | Web stable / Native stable | 배포 |
74
75
  | [DataTable](components/data-table.md) | 데이터 표시 | 여러 행의 데이터를 열로 맞춰 훑고, 열 기준으로 정렬하거나 행을 골라 일괄 작업할 때 쓴다. | 1.12.1 | Web · Native | Web stable / Native beta | 배포 |
75
76
  | [DatePicker](components/date-picker.md) | 입력 | 폼·필터 자리에서 날짜 **하나**를 고를 때 쓴다(생년월일, 방문일, 시작일 필터). 평소에는 필드 트리거만 보이고, 누르면 Web은 필드에 붙은 팝오버, Native는 Sheet 안에 같은 달력 격자를 연다. | 1.12.1 | Web · Native | Web stable / Native stable | 배포 |
@@ -54,6 +54,7 @@ import { CompositionLayout } from "@hjmds/react-native/screens";
54
54
  | title / description | string | 없음 | 제품 지역화 문구 |
55
55
  | leading / badge / actions | ReactNode | 없음 | 앞 콘텐츠·제목 옆 배지·끝 행동. 자리와 간격은 HJM |
56
56
  | notice | ReactNode | 없음 | 초안을 유지하는 비차단 안내 |
57
+ | loadingIndicator | ReactNode | 기본 Spinner | loading 상태의 제품 브랜드 그림. HJM이 제목·설명을 접근성 이름으로 전달하고 중앙 배치를 소유하며 ready/error에는 표시하지 않는다(1.24.0) |
57
58
  | children | ReactNode | 없음 | 제품 도메인 콘텐츠 또는 HJM 전용 구성 |
58
59
  | footer | ReactNode | 없음 | 본문 다음 보조/주 행동; 고정은 바깥 ScreenLayout 소유 |
59
60
  | state | ScreenContentState | ready | 본문 교체; loading은 Spinner만 표시 |
@@ -0,0 +1,93 @@
1
+ # ConversationRow
2
+
3
+ - 단계: 컴포넌트
4
+ - 상태: 실험
5
+ - 지원: Web · Native
6
+ - 적용: 1.24.0
7
+ - 검토일: 2026-10-15
8
+ - 근거: `src/conversation-row.ts`의 `conversationRowRecipe`
9
+ - 스토리북: 별도 예제 미등록
10
+
11
+ ## 언제 쓰나
12
+
13
+ 대화 목록에서 상대, 마지막 메시지, 상대 시각, 안 읽음 점을 표시한다. 2026-10-15 전사 적용 중
14
+ 제품마다 복제한 DM 행의 배치가 달라져 공개 구성으로 분리했다. 일반 설정 행은 `ListRow`를 쓴다.
15
+ 이 구성은 큰 아바타와 한 줄 미리보기·시각, 읽지 않은 대화 강조를 보존한다.
16
+
17
+ ## 쓰지 않을 때
18
+
19
+ | 상황 | 대신 쓸 것 |
20
+ | --- | --- |
21
+ | 본문 메시지 | `ChatMessage` |
22
+ | 일반 목록 | `ListRow` |
23
+ | 댓글 | `CommentThreadRow` |
24
+
25
+ ## 공개 이름과 import
26
+
27
+ | 이름 | 역할 | Web | Native |
28
+ | --- | --- | --- | --- |
29
+ | `ConversationRow` | 대화 미리보기 | `@hjmds/react/conversation-row` | `@hjmds/react-native/conversation-row` |
30
+
31
+ ## 최소 사용 예
32
+
33
+ ```tsx
34
+ // Web
35
+ import { ConversationRow } from "@hjmds/react/conversation-row";
36
+
37
+ <Link href={destination} aria-label={accessibleSummary}>
38
+ <ConversationRow title={name} preview={lastMessage} metadata={relativeTime}
39
+ avatar={avatar} unread={unreadCount > 0} />
40
+ </Link>
41
+ ```
42
+
43
+ ```tsx
44
+ // Native
45
+ import { ConversationRow } from "@hjmds/react-native/conversation-row";
46
+ <Pressable accessibilityRole="link" accessibilityLabel={accessibleSummary} onPress={openConversation}>
47
+ <ConversationRow title={name} preview={lastMessage} metadata={relativeTime}
48
+ avatar={avatar} unread={unreadCount > 0} />
49
+ </Pressable>
50
+ ```
51
+
52
+ ## 축과 기본값
53
+
54
+ | prop | 값 | 기본값 | 설명 |
55
+ | --- | --- | --- | --- |
56
+ | title / preview / metadata | string | 필수 | 상대·미리보기·현지화 시각 |
57
+ | avatar | ReactNode | 필수 | 제품 아바타 |
58
+ | unread | boolean | false | 읽지 않은 대화 강조 |
59
+
60
+ 앱은 라우팅, 접근 가능한 전체 이름, 데이터만 연결한다. 행의 내용은 host 이름과 중복 낭독되지 않는다.
61
+
62
+ ## 배치
63
+
64
+ | 항목 | 값 | 근거 |
65
+ | --- | --- | --- |
66
+ | 크기 | 아바타 56, 읽지 않음 점 10 | conversationRowRecipe |
67
+ | 간격 | 가로 sm, 세로 10 | 같은 recipe |
68
+ | 순서·정렬 | 아바타 → 제목/미리보기·시각 → 읽지 않음 점 | 양 renderer |
69
+ | 고정·스크롤 | 바깥 목록 host 소유 | 별도 scroller 없음 |
70
+ | 좁은 폭·큰 글자 | 가용 폭에서 미리보기 말줄임 | 양 renderer |
71
+
72
+ 메시지가 길어도 시각과 읽지 않음 점은 유지하고 미리보기만 말줄임한다. 앱은 별도 행 padding을 넣지 않는다.
73
+
74
+ ## 꼭 지킬 것
75
+
76
+ 전체 행의 현지화 접근성 이름과 라우팅 host를 함께 제공한다. HJM 내부 색·간격을 제품 CSS로 덮지 않는다.
77
+
78
+ ## 상태와 상호작용
79
+
80
+ 읽지 않음은 제목·미리보기를 강조하고 끝에 점을 표시한다. 클릭·키보드·내부 라우팅은
81
+ Next/Expo Link host에 남긴다. 시각 구성은 별도 button이나 link를 생성하지 않는다.
82
+
83
+ ## 접근성
84
+
85
+ host는 상대·미리보기·시각·읽지 않은 수가 포함된 현지화 이름을 제공한다. 내용은 장식으로 숨겨 중복 낭독을 피한다.
86
+
87
+ ## 제품 연결
88
+
89
+ 앱은 아바타 원본, 미리보기 생성, 시각 형식과 라우팅·읽음 정책을 결정한다. HJM에는 서버 데이터나 제품별 Link를 넣지 않는다.
90
+
91
+ ## 관련 지침
92
+
93
+ [선택 기준](../SELECTION.md), [ListRow](list-row.md), [ChatScreen](chat-screen.md).
@@ -135,3 +135,10 @@ Native 원형 leading의 `full`은 Provider token에서 읽지만 고정 원형
135
135
  예상하면 `description`을 제공한다(자리표시 중 문구 자체는 표시하지 않는다). loading 동안 행과
136
136
  trailingAction은 실행할 수 없으며 실제 슬롯 내용도 마운트하지 않는다. 여러 로딩 행 중 첫 행에만
137
137
  `loadingLabel`을 주고 나머지는 접근성 트리에서 숨긴다. 검색 화면도 임의 Skeleton 조립 대신 이 계약을 쓴다.
138
+
139
+ ### 독립 행동과 라우터 연결 (미게시, 1.23.0 이후)
140
+
141
+ Web도 Native와 같이 `trailingAction`을 지원한다. 이 슬롯은 행의 link/button 바깥에 놓이므로
142
+ 팔로우·삭제 같은 행동을 링크에 중첩하지 않는다. `renderLink`는 HJM이 만든 anchor props를
143
+ 프레임워크 Link에 전달하는 연결점이다. 배치·제목·앞/뒤 슬롯은 HJM이 계속 만든다.
144
+ 예: `renderLink={props => <Link {...props} href={props.href!} />}`.
@@ -79,12 +79,14 @@ import { ScreenLayout } from "@hjmds/react-native/screens";
79
79
  | `state` | `{ kind: "ready" }` · `{ kind: "loading" \| "empty" \| "error" \| "restricted"; title; description? }` | `{ kind: "ready" }` | ready가 아니면 children을 그리지 않고 상태와 `stateAction`을 가운데에 놓는다. 로딩은 Spinner 하나만 보이고 `title`·`description`은 Spinner의 접근성 이름이 된다 |
80
80
  | `stateAction` | `ReactNode` | 없음 | 상태 안내 아래 행동(재시도 등) |
81
81
  | `scroll` | `"screen"` · `"content"` | `"screen"` | `content`는 본문 자식(가상화 목록)이 스크롤을 소유한다. 상태 교체 중에는 `screen`으로 돌아간다 |
82
+ | `contentAlignment` | `"start"` · `"center"` | `"start"` | ready 본문을 사용 영역 중앙에 배치. 긴 본문은 위가 잘리지 않게 스크롤한다. 로그인/제품 안내를 가짜 query state로 바꾸지 않는다(1.24.0) |
83
+ | `surface` | `"default"` · `"transparent"` | `"default"` | 투명은 제품 host의 배경·wallpaper를 보존. 배경색 style 우회 대신 사용(1.24.0) |
82
84
  | `contentInset` | `"default"` · `"none"` | `"default"` | `none`은 헤더·notice·본문·footer padding을 0으로(Native는 footer 위 테두리도 뺀다) |
83
85
  | `presentation` | `"dashboard"` · `"editorial"` · `"landscape"` | 가장 가까운 profile.screens.overview / 없으면 기존 골격 | [디자인 프로필](../../design-profile.md)의 제공 범위를 따른다. 명시값이 프로필을 이긴다. 헤더 배치·읽기 폭만 바꾸고 상태·입력·행동 슬롯은 유지한다 |
84
86
  | `as` (Web) | `"main"` · `"section"` | `"main"` | 제품 셸에 이미 `<main>`이 있으면 `section` |
85
87
  | `layoutStyle` | `HjmCompositionStyleProp` | 없음 | 화면 루트 배치 전용(예: 분할 화면의 `flex`·`width`). ScreenLayout 위에 만든 화면은 모두 이 prop을 루트까지 넘긴다 |
86
88
  | `className` (Web) | `string` | 없음 | 식별·배치 보조. 색·여백을 덮지 않는다 |
87
- | `testID` · `scrollRef` · `scrollProps` (Native) | `string` · `Ref<ScrollView>` · `refreshControl`·`keyboardDismissMode`·스크롤 막대 표시 | 없음 | ScrollView가 있을 때(`scroll="screen"` 또는 상태 교체 중)만 `scrollRef`·`scrollProps`가 연결된다 |
89
+ | `testID` · `scrollRef` · `scrollProps` (Native) | `string` · `Ref<ScrollView>` · `refreshControl`·`keyboardDismissMode`·스크롤 막대 표시·`onScroll`·`onScrollBeginDrag`·`onScrollEndDrag`·`scrollEventThrottle`·`alwaysBounceVertical`·`automaticallyAdjustKeyboardInsets` | 없음 | ScrollView가 있을 때(`scroll="screen"` 또는 상태 교체 중)만 `scrollRef`·`scrollProps`가 연결된다 |
88
90
 
89
91
  ## 배치
90
92
 
@@ -161,3 +161,10 @@ Web은 항목과 바깥 선택 영역의 크기를 함께 관찰한다. 2026-10-
161
161
  - 조작 가능 영역·글자는 움직이거나 확대하지 않는다. 새 사용 예제는 [선택 배경 이동](../compositions/selection-motion.md)이다.
162
162
 
163
163
  2026-10-07 큰 글자 UI 확인에서 Web 2배 글자 줄은 40px인데 pill 배경은 28px였다. Native처럼 세로 padding에도 pills.inset(spacing.xs=8px)을 적용해 배경이 전체 줄을 감싸게 했다. 고정 높이를 늘리는 대신 줄 높이를 따라가므로 3배·줄바꿈도 유지한다.
164
+
165
+ ### Text presentation (미게시, 1.23.0 이후)
166
+
167
+ `presentation="text"`는 캡슐 없이 라디오 항목과 짧은 선택 표시를 그린다. `textEmphasis="strong" | "regular"`
168
+ 기본 strong이며 조용한 관계 목록은 regular다. 기존 `items/value/onValueChange`와 키보드·disabled 계약을 유지한다.
169
+ 글자 탭의 radio 의미를 제품에서 재구현하던 문제를 없애기 위해 추가했다(2026-10-15 BurnTok 전사 이관).
170
+ 선택 표시는 16×2, 목표 높이는 44, 항목 간격은 md이며 text 모드는 slide artwork를 사용하지 않는다.
@@ -72,6 +72,7 @@ import { TopBar, TopBarAction } from "@hjmds/react-native/top-bar";
72
72
  | `headingLevel` | 1~6 | 1 | Web만. 페이지 구조에 맞춘다 |
73
73
  | `onTitleClick`(Web) | `(event: MouseEvent<HTMLButtonElement>) => void` | — | 제목을 버튼으로 만든다 |
74
74
  | `onTitlePress`(Native) | `(event: GestureResponderEvent) => void` | — | 제목을 버튼으로 만든다 |
75
+ | `subtitle` | `string` | — | 제목 아래 보조 문맥. 제목이 필요하며 배치·색·글자 규격은 HJM이 소유(1.24.0) |
75
76
  | `titleLeading` | `ReactNode` | — | 제목 앞 작은 시각 요소 |
76
77
  | `leading` / `actions`(별칭 `trailing`) | `ReactNode` | — | 둘 중 한 이름만 쓴다 |
77
78
  | `layoutStyle` | `HjmCompositionStyleProp` | — | 루트 배치. Web·Native 모두 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hjmds/design-contracts",
3
- "version": "1.23.0",
3
+ "version": "1.24.0",
4
4
  "description": "Renderer-neutral design contracts, tokens, recipes, and behaviors shared by HJM products.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -792,6 +792,11 @@
792
792
  "react-native": "./dist/streaming-answer.js",
793
793
  "import": "./dist/streaming-answer.js",
794
794
  "default": "./dist/streaming-answer.js"
795
+ },
796
+ "./conversation-row": {
797
+ "types": "./dist/conversation-row.d.ts",
798
+ "import": "./dist/conversation-row.js",
799
+ "default": "./dist/conversation-row.js"
795
800
  }
796
801
  },
797
802
  "files": [