@hjmds/design-contracts 0.8.2 → 0.9.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/LICENSE +21 -0
- package/README.md +2 -0
- package/dist/aspect-ratio.d.ts +31 -0
- package/dist/aspect-ratio.d.ts.map +1 -0
- package/dist/aspect-ratio.js +42 -0
- package/dist/aspect-ratio.js.map +1 -0
- package/dist/catalog.d.ts +100 -8
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +11 -5
- package/dist/catalog.js.map +1 -1
- package/dist/component-definitions.d.ts +3 -0
- package/dist/component-definitions.d.ts.map +1 -1
- package/dist/component-definitions.js +3 -0
- package/dist/component-definitions.js.map +1 -1
- package/dist/container.d.ts +40 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +43 -0
- package/dist/container.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/recipes.d.ts +3 -0
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +3 -0
- package/dist/recipes.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/visually-hidden.d.ts +21 -0
- package/dist/visually-hidden.d.ts.map +1 -0
- package/dist/visually-hidden.js +20 -0
- package/dist/visually-hidden.js.map +1 -0
- package/docs/aspect-ratio.md +25 -0
- package/docs/container.md +24 -0
- package/docs/generated/component-maturity.md +11 -8
- package/docs/generated/renderer-evidence.json +257 -25
- package/docs/generated/renderer-evidence.md +16 -11
- package/docs/generated/showcase-manifest.json +141 -9
- package/docs/library-gap-analysis.md +65 -0
- package/docs/stable-core.md +26 -0
- package/docs/visually-hidden.md +20 -0
- package/package.json +22 -2
- package/docs/consumer-release-gate.md +0 -90
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 HJM Design System contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -15,6 +15,8 @@ DOM event, focus trap 또는 navigation adapter를 렌더링하지 않고, 두
|
|
|
15
15
|
[`docs/architecture.md`](./docs/architecture.md)에 정리되어 있습니다.
|
|
16
16
|
외부 라이브러리에서 어떤 문제 분해 원칙만 가져오고 무엇을 복제하지 않는지는
|
|
17
17
|
[`docs/library-reference-decisions.md`](./docs/library-reference-decisions.md)에 기록합니다.
|
|
18
|
+
이번 공백 분석에서 추가한 `Container`, `AspectRatio`, `VisuallyHidden`의 선정 근거는
|
|
19
|
+
[`docs/library-gap-analysis.md`](./docs/library-gap-analysis.md)에 기록합니다.
|
|
18
20
|
Toast의 queue·announcement·timer 수명주기는 [`docs/toast.md`](./docs/toast.md)에 별도로
|
|
19
21
|
고정되어 있습니다.
|
|
20
22
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type AspectRatioPreset = "square" | "portrait" | "landscape" | "wide";
|
|
2
|
+
export type AspectRatioValue = AspectRatioPreset | number;
|
|
3
|
+
export type AspectRatioDescriptor = Readonly<{
|
|
4
|
+
ratio?: AspectRatioValue;
|
|
5
|
+
}>;
|
|
6
|
+
export type ResolvedAspectRatioDescriptor = Readonly<{
|
|
7
|
+
ratio: number;
|
|
8
|
+
source: AspectRatioPreset | "custom";
|
|
9
|
+
}>;
|
|
10
|
+
export declare const aspectRatioDefaults: {
|
|
11
|
+
readonly ratio: "wide";
|
|
12
|
+
};
|
|
13
|
+
export declare const aspectRatioRecipe: {
|
|
14
|
+
readonly slots: readonly ["root", "content"];
|
|
15
|
+
readonly defaults: {
|
|
16
|
+
readonly ratio: "wide";
|
|
17
|
+
};
|
|
18
|
+
readonly ratios: {
|
|
19
|
+
readonly square: 1;
|
|
20
|
+
readonly portrait: number;
|
|
21
|
+
readonly landscape: number;
|
|
22
|
+
readonly wide: number;
|
|
23
|
+
};
|
|
24
|
+
readonly sizing: {
|
|
25
|
+
readonly inline: "fill";
|
|
26
|
+
readonly block: "derive-from-ratio";
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export declare function validateAspectRatioValue(value: AspectRatioValue): void;
|
|
30
|
+
export declare function resolveAspectRatioDescriptor(descriptor?: AspectRatioDescriptor): ResolvedAspectRatioDescriptor;
|
|
31
|
+
//# sourceMappingURL=aspect-ratio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../src/aspect-ratio.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,GAAG,QAAQ,CAAC;CACtC,CAAC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;CAEoB,CAAC;AAErD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;CAapB,CAAC;AASX,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAUtE;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,GAAE,qBAA0B,GACrC,6BAA6B,CAK/B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export const aspectRatioDefaults = {
|
|
2
|
+
ratio: "wide",
|
|
3
|
+
};
|
|
4
|
+
export const aspectRatioRecipe = {
|
|
5
|
+
slots: ["root", "content"],
|
|
6
|
+
defaults: aspectRatioDefaults,
|
|
7
|
+
ratios: {
|
|
8
|
+
square: 1,
|
|
9
|
+
portrait: 3 / 4,
|
|
10
|
+
landscape: 4 / 3,
|
|
11
|
+
wide: 16 / 9,
|
|
12
|
+
},
|
|
13
|
+
sizing: {
|
|
14
|
+
inline: "fill",
|
|
15
|
+
block: "derive-from-ratio",
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
const presets = new Set([
|
|
19
|
+
"square",
|
|
20
|
+
"portrait",
|
|
21
|
+
"landscape",
|
|
22
|
+
"wide",
|
|
23
|
+
]);
|
|
24
|
+
export function validateAspectRatioValue(value) {
|
|
25
|
+
if (typeof value === "number") {
|
|
26
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
27
|
+
throw new RangeError("AspectRatio ratio must be a positive finite number");
|
|
28
|
+
}
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (!presets.has(value)) {
|
|
32
|
+
throw new TypeError(`Unsupported AspectRatio preset: ${String(value)}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function resolveAspectRatioDescriptor(descriptor = {}) {
|
|
36
|
+
const value = descriptor.ratio ?? aspectRatioDefaults.ratio;
|
|
37
|
+
validateAspectRatioValue(value);
|
|
38
|
+
if (typeof value === "number")
|
|
39
|
+
return { ratio: value, source: "custom" };
|
|
40
|
+
return { ratio: aspectRatioRecipe.ratios[value], source: value };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=aspect-ratio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../src/aspect-ratio.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,EAAE,MAAM;CACqC,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAU;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC,GAAG,CAAC;QACf,SAAS,EAAE,CAAC,GAAG,CAAC;QAChB,IAAI,EAAE,EAAE,GAAG,CAAC;KACb;IACD,MAAM,EAAE;QACN,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,mBAAmB;KAC3B;CACO,CAAC;AAEX,MAAM,OAAO,GAAG,IAAI,GAAG,CAAoB;IACzC,QAAQ;IACR,UAAU;IACV,WAAW;IACX,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,UAAU,CAAC,oDAAoD,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,mCAAmC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,aAAoC,EAAE;IAEtC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC;IAC5D,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACzE,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACnE,CAAC","sourcesContent":["export type AspectRatioPreset = \"square\" | \"portrait\" | \"landscape\" | \"wide\";\nexport type AspectRatioValue = AspectRatioPreset | number;\n\nexport type AspectRatioDescriptor = Readonly<{\n ratio?: AspectRatioValue;\n}>;\n\nexport type ResolvedAspectRatioDescriptor = Readonly<{\n ratio: number;\n source: AspectRatioPreset | \"custom\";\n}>;\n\nexport const aspectRatioDefaults = {\n ratio: \"wide\",\n} as const satisfies Required<AspectRatioDescriptor>;\n\nexport const aspectRatioRecipe = {\n slots: [\"root\", \"content\"] as const,\n defaults: aspectRatioDefaults,\n ratios: {\n square: 1,\n portrait: 3 / 4,\n landscape: 4 / 3,\n wide: 16 / 9,\n },\n sizing: {\n inline: \"fill\",\n block: \"derive-from-ratio\",\n },\n} as const;\n\nconst presets = new Set<AspectRatioPreset>([\n \"square\",\n \"portrait\",\n \"landscape\",\n \"wide\",\n]);\n\nexport function validateAspectRatioValue(value: AspectRatioValue): void {\n if (typeof value === \"number\") {\n if (!Number.isFinite(value) || value <= 0) {\n throw new RangeError(\"AspectRatio ratio must be a positive finite number\");\n }\n return;\n }\n if (!presets.has(value)) {\n throw new TypeError(`Unsupported AspectRatio preset: ${String(value)}`);\n }\n}\n\nexport function resolveAspectRatioDescriptor(\n descriptor: AspectRatioDescriptor = {},\n): ResolvedAspectRatioDescriptor {\n const value = descriptor.ratio ?? aspectRatioDefaults.ratio;\n validateAspectRatioValue(value);\n if (typeof value === \"number\") return { ratio: value, source: \"custom\" };\n return { ratio: aspectRatioRecipe.ratios[value], source: value };\n}\n"]}
|
package/dist/catalog.d.ts
CHANGED
|
@@ -78,8 +78,8 @@ export declare const componentCatalog: readonly [{
|
|
|
78
78
|
}, {
|
|
79
79
|
readonly recipe: "surfaceRecipe";
|
|
80
80
|
readonly surfaceStatus: {
|
|
81
|
-
readonly web: "
|
|
82
|
-
readonly native: "
|
|
81
|
+
readonly web: "stable";
|
|
82
|
+
readonly native: "stable";
|
|
83
83
|
};
|
|
84
84
|
readonly name: "Surface";
|
|
85
85
|
readonly category: "layout";
|
|
@@ -116,6 +116,34 @@ export declare const componentCatalog: readonly [{
|
|
|
116
116
|
readonly category: "layout";
|
|
117
117
|
readonly platform: "shared";
|
|
118
118
|
readonly status: "beta";
|
|
119
|
+
}, {
|
|
120
|
+
readonly roadmap: {
|
|
121
|
+
readonly state: "evidence-needed";
|
|
122
|
+
readonly summary: string;
|
|
123
|
+
};
|
|
124
|
+
readonly recipe: "containerRecipe";
|
|
125
|
+
readonly surfaceStatus: {
|
|
126
|
+
readonly web: "beta";
|
|
127
|
+
readonly native: "beta";
|
|
128
|
+
};
|
|
129
|
+
readonly name: "Container";
|
|
130
|
+
readonly category: "layout";
|
|
131
|
+
readonly platform: "shared";
|
|
132
|
+
readonly status: "beta";
|
|
133
|
+
}, {
|
|
134
|
+
readonly roadmap: {
|
|
135
|
+
readonly state: "evidence-needed";
|
|
136
|
+
readonly summary: string;
|
|
137
|
+
};
|
|
138
|
+
readonly recipe: "aspectRatioRecipe";
|
|
139
|
+
readonly surfaceStatus: {
|
|
140
|
+
readonly web: "beta";
|
|
141
|
+
readonly native: "beta";
|
|
142
|
+
};
|
|
143
|
+
readonly name: "AspectRatio";
|
|
144
|
+
readonly category: "layout";
|
|
145
|
+
readonly platform: "shared";
|
|
146
|
+
readonly status: "beta";
|
|
119
147
|
}, {
|
|
120
148
|
readonly roadmap: {
|
|
121
149
|
readonly state: "evidence-needed";
|
|
@@ -178,8 +206,8 @@ export declare const componentCatalog: readonly [{
|
|
|
178
206
|
}, {
|
|
179
207
|
readonly recipe: "buttonRecipe";
|
|
180
208
|
readonly surfaceStatus: {
|
|
181
|
-
readonly web: "
|
|
182
|
-
readonly native: "
|
|
209
|
+
readonly web: "stable";
|
|
210
|
+
readonly native: "stable";
|
|
183
211
|
};
|
|
184
212
|
readonly name: "Button";
|
|
185
213
|
readonly category: "action";
|
|
@@ -236,8 +264,8 @@ export declare const componentCatalog: readonly [{
|
|
|
236
264
|
readonly recipe: "fieldRecipe";
|
|
237
265
|
readonly behavior: "field";
|
|
238
266
|
readonly surfaceStatus: {
|
|
239
|
-
readonly web: "
|
|
240
|
-
readonly native: "
|
|
267
|
+
readonly web: "stable";
|
|
268
|
+
readonly native: "stable";
|
|
241
269
|
};
|
|
242
270
|
readonly name: "Field";
|
|
243
271
|
readonly category: "input";
|
|
@@ -257,8 +285,8 @@ export declare const componentCatalog: readonly [{
|
|
|
257
285
|
}, {
|
|
258
286
|
readonly recipe: "fieldRecipe";
|
|
259
287
|
readonly surfaceStatus: {
|
|
260
|
-
readonly web: "
|
|
261
|
-
readonly native: "
|
|
288
|
+
readonly web: "stable";
|
|
289
|
+
readonly native: "stable";
|
|
262
290
|
};
|
|
263
291
|
readonly name: "TextArea";
|
|
264
292
|
readonly category: "input";
|
|
@@ -1207,6 +1235,21 @@ export declare const componentCatalog: readonly [{
|
|
|
1207
1235
|
readonly category: "utility";
|
|
1208
1236
|
readonly platform: "web";
|
|
1209
1237
|
readonly status: "planned";
|
|
1238
|
+
}, {
|
|
1239
|
+
readonly roadmap: {
|
|
1240
|
+
readonly state: "evidence-needed";
|
|
1241
|
+
readonly summary: string;
|
|
1242
|
+
};
|
|
1243
|
+
readonly recipe: "visuallyHiddenRecipe";
|
|
1244
|
+
readonly aliases: readonly ["ScreenReaderOnly", "SrOnly"];
|
|
1245
|
+
readonly surfaceStatus: {
|
|
1246
|
+
readonly web: "beta";
|
|
1247
|
+
readonly native: "unsupported";
|
|
1248
|
+
};
|
|
1249
|
+
readonly name: "VisuallyHidden";
|
|
1250
|
+
readonly category: "utility";
|
|
1251
|
+
readonly platform: "web";
|
|
1252
|
+
readonly status: "beta";
|
|
1210
1253
|
}];
|
|
1211
1254
|
export type ComponentName = (typeof componentCatalog)[number]["name"];
|
|
1212
1255
|
export declare function summarizeComponentRoadmap(entries?: readonly ComponentCatalogEntry[]): Readonly<Record<ComponentRoadmapState, number>>;
|
|
@@ -1922,6 +1965,41 @@ export declare const recipeRegistry: {
|
|
|
1922
1965
|
readonly decorative: true;
|
|
1923
1966
|
};
|
|
1924
1967
|
};
|
|
1968
|
+
readonly aspectRatioRecipe: {
|
|
1969
|
+
readonly slots: readonly ["root", "content"];
|
|
1970
|
+
readonly defaults: {
|
|
1971
|
+
readonly ratio: "wide";
|
|
1972
|
+
};
|
|
1973
|
+
readonly ratios: {
|
|
1974
|
+
readonly square: 1;
|
|
1975
|
+
readonly portrait: number;
|
|
1976
|
+
readonly landscape: number;
|
|
1977
|
+
readonly wide: number;
|
|
1978
|
+
};
|
|
1979
|
+
readonly sizing: {
|
|
1980
|
+
readonly inline: "fill";
|
|
1981
|
+
readonly block: "derive-from-ratio";
|
|
1982
|
+
};
|
|
1983
|
+
};
|
|
1984
|
+
readonly containerRecipe: {
|
|
1985
|
+
readonly slots: readonly ["root"];
|
|
1986
|
+
readonly defaults: {
|
|
1987
|
+
readonly size: "content";
|
|
1988
|
+
readonly gutter: "regular";
|
|
1989
|
+
};
|
|
1990
|
+
readonly maxWidths: {
|
|
1991
|
+
readonly reading: 720;
|
|
1992
|
+
readonly content: 1200;
|
|
1993
|
+
readonly full: null;
|
|
1994
|
+
};
|
|
1995
|
+
readonly gutters: {
|
|
1996
|
+
readonly none: 0;
|
|
1997
|
+
readonly compact: 16;
|
|
1998
|
+
readonly regular: 20;
|
|
1999
|
+
readonly spacious: 24;
|
|
2000
|
+
};
|
|
2001
|
+
readonly alignment: "inline-center";
|
|
2002
|
+
};
|
|
1925
2003
|
readonly calendarRecipe: {
|
|
1926
2004
|
readonly slots: readonly ["root", "header", "monthLabel", "previousMonth", "nextMonth", "weekdayRow", "weekdayLabel", "grid", "week", "day", "dayLabel", "content"];
|
|
1927
2005
|
readonly defaults: {
|
|
@@ -7153,6 +7231,20 @@ export declare const recipeRegistry: {
|
|
|
7153
7231
|
readonly disabledOpacity: 0.5;
|
|
7154
7232
|
};
|
|
7155
7233
|
};
|
|
7234
|
+
readonly visuallyHiddenRecipe: {
|
|
7235
|
+
readonly slots: readonly ["root"];
|
|
7236
|
+
readonly geometry: {
|
|
7237
|
+
readonly width: 1;
|
|
7238
|
+
readonly height: 1;
|
|
7239
|
+
readonly margin: -1;
|
|
7240
|
+
readonly border: 0;
|
|
7241
|
+
readonly padding: 0;
|
|
7242
|
+
};
|
|
7243
|
+
readonly clipping: "inset(50%)";
|
|
7244
|
+
readonly overflow: "hidden";
|
|
7245
|
+
readonly position: "absolute";
|
|
7246
|
+
readonly whiteSpace: "nowrap";
|
|
7247
|
+
};
|
|
7156
7248
|
};
|
|
7157
7249
|
export type RecipeName = keyof typeof recipeRegistry;
|
|
7158
7250
|
//# sourceMappingURL=catalog.d.ts.map
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,cAAc,GACd,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;AAC3E,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAAG,aAAa,CAAC;AACrE,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CACjD,CAAC;AACF,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,UAAU,GACV,iBAAiB,GACjB,cAAc,GACd,UAAU,CAAC;AAEf,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE5D,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,iFAAiF;IACjF,MAAM,EAAE,eAAe,CAAC;IACxB;;;;OAIG;IACH,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,qFAAqF;IACrF,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,kFAAkF;IAClF,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAwBH;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,gBAAgB,GACxB,sBAAsB,CAKxB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2EjB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,cAAc,CAAC"}
|
package/dist/catalog.js
CHANGED
|
@@ -37,22 +37,24 @@ export function getComponentSurfaceStatus(entry, surface) {
|
|
|
37
37
|
export const componentCatalog = [
|
|
38
38
|
{ name: "Text", category: "foundation", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "textRecipe" },
|
|
39
39
|
{ name: "Icon", category: "foundation", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "iconRecipe" },
|
|
40
|
-
{ name: "Surface", category: "layout", platform: "shared", status: "stable", ...surfaceMaturity("
|
|
40
|
+
{ name: "Surface", category: "layout", platform: "shared", status: "stable", ...surfaceMaturity("stable", "stable"), recipe: "surfaceRecipe" },
|
|
41
41
|
{ name: "Divider", category: "layout", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "dividerRecipe" },
|
|
42
42
|
{ name: "Section", category: "layout", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "sectionRecipe" },
|
|
43
43
|
{ name: "Stack", category: "layout", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "stackRecipe", aliases: ["Flex", "Space", "Inline"] },
|
|
44
|
+
{ name: "Container", category: "layout", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "containerRecipe", ...evidenceNeeded("Radix·Chakra·MUI·Mantine의 layout inventory를 비교해 공통 content-width primitive로 채택했습니다. Web/RN renderer와 환경 행렬 증거를 연결했고 실제 제품의 넓은 화면 채택 뒤 stable을 검토합니다.") },
|
|
45
|
+
{ name: "AspectRatio", category: "layout", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "aspectRatioRecipe", ...evidenceNeeded("Radix·Chakra·Mantine·Carbon에서 반복되는 media geometry 문제를 shared primitive로 채택했습니다. 제품이 object-fit을 소유하고 renderer는 비율만 보장합니다.") },
|
|
44
46
|
{ name: "Grid", category: "layout", platform: "adaptive", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "gridRecipe", ...evidenceNeeded("공통 window class·responsive value·row-major geometry 계약과 공식 Web/RN default renderer 증거가 연결됐습니다. 안정화에는 환경별·제품 사용 증거가 더 필요합니다.") },
|
|
45
47
|
{ name: "Layout", category: "layout", platform: "adaptive", status: "beta", ...surfaceMaturity("beta", "beta"), aliases: ["AppShell"], recipe: "layoutRecipe", behavior: "layout", ...evidenceNeeded("공통 descriptor를 소비하는 Web landmark·skip-link renderer와 Native ordered-region renderer가 기본 실행 증거를 제공합니다. 실제 product shell·보조기기 증거가 쌓이면 stable을 검토합니다.") },
|
|
46
48
|
{ name: "Masonry", category: "layout", platform: "adaptive", status: "planned", ...surfaceMaturity("planned", "planned"), ...evidenceNeeded("실제 waterfall 피드가 생기면 측정·패킹의 renderer 경계를 검증합니다.") },
|
|
47
49
|
{ name: "Splitter", category: "layout", platform: "web", status: "planned", ...surfaceMaturity("planned", "unsupported"), aliases: ["SplitPane"], recipe: "splitterRecipe", behavior: "splitter", ...contractReady("분할 크기·키보드 조절 계약은 준비됐고 Web vertical slice를 기다립니다.") },
|
|
48
|
-
{ name: "Button", category: "action", platform: "shared", status: "stable", ...surfaceMaturity("
|
|
50
|
+
{ name: "Button", category: "action", platform: "shared", status: "stable", ...surfaceMaturity("stable", "stable"), recipe: "buttonRecipe" },
|
|
49
51
|
{ name: "IconButton", category: "action", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "iconButtonRecipe" },
|
|
50
52
|
{ name: "Link", category: "action", platform: "adaptive", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "linkRecipe", behavior: "link" },
|
|
51
53
|
{ name: "BottomCTA", category: "action", platform: "native", status: "beta", ...surfaceMaturity("unsupported", "beta"), recipe: "bottomCtaRecipe" },
|
|
52
54
|
{ name: "FloatingActionButton", category: "action", platform: "adaptive", status: "planned", ...surfaceMaturity("planned", "planned"), recipe: "floatingActionButtonRecipe", behavior: "floatingActionButton", aliases: ["FloatButton", "FAB"], ...contractReady("배치·확장 action·안전 영역 계약은 준비됐고 제품 적용을 기다립니다.") },
|
|
53
|
-
{ name: "Field", category: "input", platform: "shared", status: "stable", ...surfaceMaturity("
|
|
55
|
+
{ name: "Field", category: "input", platform: "shared", status: "stable", ...surfaceMaturity("stable", "stable"), recipe: "fieldRecipe", behavior: "field" },
|
|
54
56
|
{ name: "SearchField", category: "input", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "searchFieldRecipe", behavior: "searchField" },
|
|
55
|
-
{ name: "TextArea", category: "input", platform: "shared", status: "stable", ...surfaceMaturity("
|
|
57
|
+
{ name: "TextArea", category: "input", platform: "shared", status: "stable", ...surfaceMaturity("stable", "stable"), recipe: "fieldRecipe" },
|
|
56
58
|
{ name: "PasswordField", category: "input", platform: "adaptive", status: "beta", ...surfaceMaturity("beta", "beta"), aliases: ["Input.Password"], recipe: "passwordFieldRecipe", behavior: "passwordField", ...evidenceNeeded("Web·Native renderer와 기본 실행·Storybook 증거가 연결됐습니다. 실제 로그인·가입 흐름과 암호 관리자 증거가 쌓이면 stable을 검토합니다.") },
|
|
57
59
|
{ name: "OtpField", category: "input", platform: "adaptive", status: "beta", ...surfaceMaturity("beta", "beta"), aliases: ["Input.OTP"], recipe: "otpFieldRecipe", behavior: "otpField", ...evidenceNeeded("하나의 접근 가능한 입력을 유지하는 Web·Native renderer와 기본 실행·Storybook 증거가 연결됐습니다. 실제 인증 흐름과 보조기기 증거가 더 필요합니다.") },
|
|
58
60
|
{ name: "Checkbox", category: "input", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), recipe: "selectionControlRecipe", behavior: "checkbox" },
|
|
@@ -126,6 +128,7 @@ export const componentCatalog = [
|
|
|
126
128
|
{ name: "BorderBeam", category: "utility", platform: "web", status: "planned", ...surfaceMaturity("planned", "unsupported"), ...declined("장식으로 브랜드를 증명하지 않는다는 정체성과 충돌하고, reduced motion에서 남는 것이 없으며, 없어도 화면의 뜻이 같다") },
|
|
127
129
|
{ name: "DesignSystemProvider", category: "provider", platform: "shared", status: "beta", ...surfaceMaturity("beta", "beta"), aliases: ["ConfigProvider"], nonVisualEvidence: "provider-adapter", ...evidenceNeeded("두 실제 제품의 Web/RN Context adapter가 environment+palette와 parent axis 상속을 소비합니다. 추가 제품 릴리스 증거가 쌓이면 stable을 검토합니다.") },
|
|
128
130
|
{ name: "Utility", category: "utility", platform: "web", status: "planned", ...surfaceMaturity("planned", "unsupported"), aliases: ["Util"], ...declined("antd Util은 theme.useToken()으로 토큰을 읽는 법을 설명하는 문서 페이지다. 이 패키지는 토큰을 정적 export로 주므로 그 문제가 발생하지 않는다") },
|
|
131
|
+
{ name: "VisuallyHidden", category: "utility", platform: "web", status: "beta", ...surfaceMaturity("beta", "unsupported"), recipe: "visuallyHiddenRecipe", aliases: ["ScreenReaderOnly", "SrOnly"], ...evidenceNeeded("Chakra와 React Aria가 별도 접근성 primitive로 제공하는 문제를 Web에서 채택했습니다. Native는 중복 invisible node 대신 host accessibilityLabel/accessibilityHint를 사용하므로 의도적으로 지원하지 않습니다.") },
|
|
129
132
|
];
|
|
130
133
|
export function summarizeComponentRoadmap(entries = componentCatalog) {
|
|
131
134
|
return entries.reduce((summary, entry) => {
|
|
@@ -140,7 +143,7 @@ export function summarizeComponentRoadmap(entries = componentCatalog) {
|
|
|
140
143
|
declined: 0,
|
|
141
144
|
});
|
|
142
145
|
}
|
|
143
|
-
import { accordionRecipe, alertDialogRecipe, avatarRecipe, badgeRecipe, bottomNavigationRecipe, bottomCtaRecipe, breadcrumbRecipe, calendarRecipe, cardRecipe, buttonRecipe, carouselRecipe, chipRecipe, comboboxRecipe, descriptionListRecipe, counterBadgeRecipe, dialogRecipe, dataTableRecipe, datePickerRecipe, dividerRecipe, formRecipe, emptyStateRecipe, fieldRecipe, filePickerRecipe, iconButtonRecipe, iconRecipe, imageRecipe, linkRecipe, listRecipe, listRowRecipe, loadMoreRecipe, menuRecipe, noticeRecipe, paginationRecipe, popoverRecipe, numberFieldRecipe, progressRecipe, resultRecipe, searchFieldRecipe, selectRecipe, selectionGroupRecipe, sectionRecipe, segmentedControlRecipe, selectionControlRecipe, sheetRecipe, sidePanelRecipe, commandPaletteRecipe, layoutRecipe, otpFieldRecipe, passwordFieldRecipe, splitterRecipe, tourRecipe, transferListRecipe, skeletonRecipe, sliderRecipe, spinnerRecipe, stackRecipe, statisticRecipe, stepsRecipe, surfaceRecipe, switchRecipe, tabsRecipe, tagRecipe, textRecipe, timelineRecipe, toastRecipe, tooltipRecipe, topBarRecipe, treeRecipe, uploadItemRecipe, } from "./recipes.js";
|
|
146
|
+
import { accordionRecipe, alertDialogRecipe, avatarRecipe, badgeRecipe, bottomNavigationRecipe, bottomCtaRecipe, breadcrumbRecipe, aspectRatioRecipe, containerRecipe, calendarRecipe, cardRecipe, buttonRecipe, carouselRecipe, chipRecipe, comboboxRecipe, descriptionListRecipe, counterBadgeRecipe, dialogRecipe, dataTableRecipe, datePickerRecipe, dividerRecipe, formRecipe, emptyStateRecipe, fieldRecipe, filePickerRecipe, iconButtonRecipe, iconRecipe, imageRecipe, linkRecipe, listRecipe, listRowRecipe, loadMoreRecipe, menuRecipe, noticeRecipe, paginationRecipe, popoverRecipe, numberFieldRecipe, progressRecipe, resultRecipe, searchFieldRecipe, selectRecipe, selectionGroupRecipe, sectionRecipe, segmentedControlRecipe, selectionControlRecipe, sheetRecipe, sidePanelRecipe, commandPaletteRecipe, layoutRecipe, otpFieldRecipe, passwordFieldRecipe, splitterRecipe, tourRecipe, transferListRecipe, skeletonRecipe, sliderRecipe, spinnerRecipe, stackRecipe, statisticRecipe, stepsRecipe, surfaceRecipe, switchRecipe, tabsRecipe, tagRecipe, textRecipe, timelineRecipe, toastRecipe, tooltipRecipe, topBarRecipe, treeRecipe, uploadItemRecipe, visuallyHiddenRecipe, } from "./recipes.js";
|
|
144
147
|
import { floatingActionButtonRecipe } from "./floating-action-button.js";
|
|
145
148
|
import { gridRecipe } from "./grid.js";
|
|
146
149
|
/** One typed registry prevents catalog recipe names from drifting into strings. */
|
|
@@ -152,6 +155,8 @@ export const recipeRegistry = {
|
|
|
152
155
|
bottomNavigationRecipe,
|
|
153
156
|
bottomCtaRecipe,
|
|
154
157
|
breadcrumbRecipe,
|
|
158
|
+
aspectRatioRecipe,
|
|
159
|
+
containerRecipe,
|
|
155
160
|
calendarRecipe,
|
|
156
161
|
cardRecipe,
|
|
157
162
|
buttonRecipe,
|
|
@@ -216,5 +221,6 @@ export const recipeRegistry = {
|
|
|
216
221
|
topBarRecipe,
|
|
217
222
|
treeRecipe,
|
|
218
223
|
uploadItemRecipe,
|
|
224
|
+
visuallyHiddenRecipe,
|
|
219
225
|
};
|
|
220
226
|
//# sourceMappingURL=catalog.js.map
|