stylegallery 0.1.10 → 0.1.12
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/AGENTS.md +2 -2
- package/GOVERNANCE.md +1 -1
- package/README.md +38 -35
- package/consumer-reference/agent-native/README.md +5 -5
- package/consumer-reference/agent-native/v2/material-registry.json +1 -1
- package/design-engineering/loading-and-feedback.md +1 -0
- package/design-engineering/native-interaction-contracts.md +2 -0
- package/design-engineering/state-management/patterns/latest-request-wins.md +2 -0
- package/design-engineering/state-management/patterns/optimistic-overlay.md +1 -0
- package/design-engineering/state-management/patterns/single-flight.md +2 -0
- package/design-engineering/state-management/patterns/unsaved-navigation.md +2 -0
- package/design-engineering/state-management/patterns/url-state.md +1 -0
- package/design-engineering/state-management/recipes/delete-undo.md +1 -0
- package/design-engineering/text-input-and-internationalization.md +1 -0
- package/expression/directions/nocturne-editorial.md +1 -0
- package/expression/directions/warm-print.md +1 -0
- package/expression/techniques/gradient-atmosphere.md +1 -0
- package/expression/techniques/grain-and-texture.md +1 -0
- package/expression/techniques/webgl-hero.md +1 -0
- package/guides/decision-tree.md +2 -0
- package/guides/webpage-generation-workflow.md +2 -0
- package/log.md +29 -0
- package/motion/accessible-motion.md +2 -0
- package/motion/interruption-and-retargeting.md +2 -0
- package/motion/rendering-and-performance.md +1 -0
- package/motion/techniques/kinetic-type.md +1 -0
- package/motion/techniques/scroll-choreography.md +2 -0
- package/package.json +14 -8
- package/patterns/centering/center.md +1 -0
- package/patterns/centering/super-center.md +2 -0
- package/patterns/containment/box.md +1 -0
- package/patterns/containment/clamped-card.md +1 -0
- package/patterns/containment/content-limiter.md +2 -0
- package/patterns/containment/fluid-styles.md +1 -0
- package/patterns/grid-repetition/card-grid.md +2 -0
- package/patterns/grid-repetition/columns.md +1 -0
- package/patterns/grid-repetition/dense-grid.md +1 -0
- package/patterns/grid-repetition/grid-wrapper.md +1 -0
- package/patterns/grid-repetition/masonry-approx.md +1 -0
- package/patterns/grid-repetition/page-grid.md +1 -0
- package/patterns/grid-repetition/ram-grid.md +2 -0
- package/patterns/grid-repetition/twelve-span-grid.md +1 -0
- package/patterns/in-line-grouping/badge-list.md +1 -0
- package/patterns/in-line-grouping/breadcrumb.md +1 -0
- package/patterns/in-line-grouping/cluster.md +1 -0
- package/patterns/in-line-grouping/deconstructed-pancake.md +1 -0
- package/patterns/in-line-grouping/pagination.md +1 -0
- package/patterns/in-line-grouping/reel.md +2 -0
- package/patterns/in-line-grouping/split-nav.md +1 -0
- package/patterns/in-line-grouping/tab-strip.md +1 -0
- package/patterns/in-line-grouping/wrap-row.md +1 -0
- package/patterns/media-fit/frame.md +2 -0
- package/patterns/media-fit/icon-frame.md +1 -0
- package/patterns/overlay-exception/imposter.md +1 -0
- package/patterns/overlay-exception/overlay-stack.md +1 -0
- package/patterns/split-sidebar/list-detail.md +1 -0
- package/patterns/split-sidebar/main-with-rail.md +1 -0
- package/patterns/split-sidebar/media-object.md +1 -0
- package/patterns/split-sidebar/sidebar.md +2 -0
- package/patterns/split-sidebar/split-screen.md +1 -0
- package/patterns/split-sidebar/sticky-aside.md +2 -0
- package/patterns/split-sidebar/supporting-pane.md +1 -0
- package/patterns/split-sidebar/switcher.md +2 -0
- package/patterns/stacking/feed.md +1 -0
- package/patterns/stacking/line-up.md +2 -0
- package/patterns/stacking/stack.md +1 -0
- package/patterns/stacking/step-nav.md +1 -0
- package/patterns/viewport-shell/cover.md +1 -0
- package/patterns/viewport-shell/fixed-sidenav-shell.md +2 -0
- package/patterns/viewport-shell/holy-grail.md +2 -0
- package/patterns/viewport-shell/panel-layout.md +1 -0
- package/patterns/viewport-shell/scroll-body-shell.md +2 -0
- package/patterns/viewport-shell/sticky-footer.md +2 -0
- package/patterns/viewport-shell/sticky-header.md +2 -0
- package/platform-guides/preferences-and-accessibility.md +1 -0
- package/recipes/article-page.md +1 -0
- package/recipes/command-surface.md +1 -0
- package/recipes/dashboard.md +1 -0
- package/recipes/form-flow.md +1 -0
- package/recipes/homepage.md +2 -0
- package/recipes/list-detail.md +1 -0
- package/recipes/saas-settings.md +1 -0
- package/scripts/agent-native/v2/material-cli-adapter.mjs +7 -5
- package/scripts/agent-native/v2/material-queries.mjs +21 -0
- package/scripts/agent-native/v2/material-search-v3.mjs +409 -0
- package/scripts/compiler/README.md +16 -16
- package/scripts/compiler/mcp.mjs +38 -2
- package/scripts/legacy-sg-material-mcp.mjs +9 -0
- package/scripts/legacy-sg-material.mjs +4 -0
- package/scripts/pattern-data.mjs +409 -0
- package/scripts/sg-entry.mjs +2 -2
- package/scripts/sg-material-mcp.mjs +1 -1
- package/scripts/stylegallery-cli.mjs +130 -0
- package/skills/stylegallery-search/SKILL.md +34 -0
|
@@ -4,6 +4,7 @@ name: supporting-pane
|
|
|
4
4
|
title: supporting-pane
|
|
5
5
|
category: Split / Sidebar
|
|
6
6
|
description: Keep supplemental information beside a primary task.
|
|
7
|
+
aliases: ["supporting panel","보조 패널"]
|
|
7
8
|
primary_spatial_problem: Keep supplemental information beside a primary task.
|
|
8
9
|
secondary_spatial_problems: none
|
|
9
10
|
layout_axis: inline
|
|
@@ -4,6 +4,8 @@ name: switcher
|
|
|
4
4
|
title: switcher
|
|
5
5
|
category: Split / Sidebar
|
|
6
6
|
description: Switch equal regions from row to stack without a viewport breakpoint.
|
|
7
|
+
aliases: ["row to stack without media query","flex switcher","가로 세로 전환"]
|
|
8
|
+
questions: ["How do I switch equal regions from a row to a stack without a breakpoint?"]
|
|
7
9
|
primary_spatial_problem: Switch equal regions from row to stack without a viewport breakpoint.
|
|
8
10
|
secondary_spatial_problems: none
|
|
9
11
|
layout_axis: inline
|
|
@@ -4,6 +4,7 @@ name: feed
|
|
|
4
4
|
title: feed
|
|
5
5
|
category: Stacking
|
|
6
6
|
description: Stack repeated content items with stable rhythm.
|
|
7
|
+
aliases: ["content feed","activity feed","피드"]
|
|
7
8
|
primary_spatial_problem: Stack repeated content items with stable rhythm.
|
|
8
9
|
secondary_spatial_problems: none
|
|
9
10
|
layout_axis: block
|
|
@@ -4,6 +4,8 @@ name: line-up
|
|
|
4
4
|
title: line-up
|
|
5
5
|
category: Stacking
|
|
6
6
|
description: Keep card footer actions aligned at the bottom.
|
|
7
|
+
aliases: ["equal height cards","buttons aligned at bottom","card footer alignment","카드 버튼 하단 정렬"]
|
|
8
|
+
questions: ["How do I align card footer actions at the bottom?"]
|
|
7
9
|
primary_spatial_problem: Keep card footer actions aligned at the bottom.
|
|
8
10
|
secondary_spatial_problems: none
|
|
9
11
|
layout_axis: block
|
|
@@ -4,6 +4,7 @@ name: stack
|
|
|
4
4
|
title: stack
|
|
5
5
|
category: Stacking
|
|
6
6
|
description: Create consistent vertical rhythm between direct children.
|
|
7
|
+
aliases: ["vertical rhythm","vertical spacing between children","스택","세로 간격"]
|
|
7
8
|
primary_spatial_problem: Create consistent vertical rhythm between direct children.
|
|
8
9
|
secondary_spatial_problems: none
|
|
9
10
|
layout_axis: block
|
|
@@ -4,6 +4,7 @@ name: step-nav
|
|
|
4
4
|
title: step-nav
|
|
5
5
|
category: Stacking
|
|
6
6
|
description: Present sequential steps with consistent vertical rhythm.
|
|
7
|
+
aliases: ["stepper","steps list","단계 표시","스텝 내비게이션"]
|
|
7
8
|
primary_spatial_problem: Present sequential steps with consistent vertical rhythm.
|
|
8
9
|
secondary_spatial_problems: none
|
|
9
10
|
layout_axis: block
|
|
@@ -4,6 +4,7 @@ name: cover
|
|
|
4
4
|
title: cover
|
|
5
5
|
category: Viewport / Shell
|
|
6
6
|
description: Keep a central region balanced between optional header and footer.
|
|
7
|
+
aliases: ["full height hero","vertically centered hero","커버 레이아웃","전체 높이 히어로"]
|
|
7
8
|
primary_spatial_problem: Keep a central region balanced between optional header and footer.
|
|
8
9
|
secondary_spatial_problems: none
|
|
9
10
|
layout_axis: block
|
|
@@ -4,6 +4,8 @@ name: fixed-sidenav-shell
|
|
|
4
4
|
title: fixed-sidenav-shell
|
|
5
5
|
category: Viewport / Shell
|
|
6
6
|
description: Keep side navigation stable while main content scrolls.
|
|
7
|
+
aliases: ["fixed side navigation","sidenav shell","고정 사이드 내비게이션","사이드바 레이아웃","고정 사이드바"]
|
|
8
|
+
questions: ["How do I keep side navigation fixed while the main content scrolls?"]
|
|
7
9
|
primary_spatial_problem: Keep side navigation stable while main content scrolls.
|
|
8
10
|
secondary_spatial_problems: none
|
|
9
11
|
layout_axis: both
|
|
@@ -4,6 +4,8 @@ name: holy-grail
|
|
|
4
4
|
title: holy-grail
|
|
5
5
|
category: Viewport / Shell
|
|
6
6
|
description: Place header, footer, sidebars, and main content in a resilient shell.
|
|
7
|
+
aliases: ["header footer two sidebars","three column page layout","홀리 그레일 레이아웃","3단 레이아웃"]
|
|
8
|
+
questions: ["How do I lay out a header, footer, two sidebars, and main content?"]
|
|
7
9
|
primary_spatial_problem: Place header, footer, sidebars, and main content in a resilient shell.
|
|
8
10
|
secondary_spatial_problems: none
|
|
9
11
|
layout_axis: both
|
|
@@ -4,6 +4,7 @@ name: panel-layout
|
|
|
4
4
|
title: panel-layout
|
|
5
5
|
category: Viewport / Shell
|
|
6
6
|
description: Create predictable main and utility panels.
|
|
7
|
+
aliases: ["main and utility panels","패널 레이아웃"]
|
|
7
8
|
primary_spatial_problem: Create predictable main and utility panels.
|
|
8
9
|
secondary_spatial_problems: none
|
|
9
10
|
layout_axis: inline
|
|
@@ -4,6 +4,8 @@ name: scroll-body-shell
|
|
|
4
4
|
title: scroll-body-shell
|
|
5
5
|
category: Viewport / Shell
|
|
6
6
|
description: Keep shell regions fixed while only the body scrolls.
|
|
7
|
+
aliases: ["fixed header and footer with scrolling body","app shell","스크롤 영역","본문만 스크롤"]
|
|
8
|
+
questions: ["How do I make only the body scroll between a fixed header and footer?"]
|
|
7
9
|
primary_spatial_problem: Keep shell regions fixed while only the body scrolls.
|
|
8
10
|
secondary_spatial_problems: none
|
|
9
11
|
layout_axis: block
|
|
@@ -4,6 +4,8 @@ name: sticky-footer
|
|
|
4
4
|
title: sticky-footer
|
|
5
5
|
category: Viewport / Shell
|
|
6
6
|
description: Keep footer at the bottom when content is short.
|
|
7
|
+
aliases: ["footer at bottom","push footer down","푸터 고정","하단 푸터","푸터를 화면 아래에 붙이기"]
|
|
8
|
+
questions: ["How do I keep the footer at the bottom when content is short?"]
|
|
7
9
|
primary_spatial_problem: Keep footer at the bottom when content is short.
|
|
8
10
|
secondary_spatial_problems: none
|
|
9
11
|
layout_axis: block
|
|
@@ -4,6 +4,8 @@ name: sticky-header
|
|
|
4
4
|
title: sticky-header
|
|
5
5
|
category: Viewport / Shell
|
|
6
6
|
description: Keep a header visible above a scrolling content region.
|
|
7
|
+
aliases: ["pinned top bar","sticky top navigation","헤더 고정","고정 헤더","상단 고정 메뉴"]
|
|
8
|
+
questions: ["How do I keep the header visible while the page scrolls?"]
|
|
7
9
|
primary_spatial_problem: Keep a header visible above a scrolling content region.
|
|
8
10
|
secondary_spatial_problems: none
|
|
9
11
|
layout_axis: block
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
type: Domain Guide
|
|
3
3
|
title: Preferences And Accessibility Across Platforms
|
|
4
4
|
description: Compare text scaling, motion, contrast, transparency, and accessibility semantics without collapsing distinct user preferences.
|
|
5
|
+
aliases: ["text scaling","reduced motion","high contrast","글자 크기","고대비"]
|
|
5
6
|
domain: platform-guides
|
|
6
7
|
lifecycle: experimental
|
|
7
8
|
provenance_kind: local
|
package/recipes/article-page.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
type: Layout Recipe
|
|
3
3
|
title: Article Page
|
|
4
4
|
description: Compose readable prose with optional supporting aside content.
|
|
5
|
+
aliases: ["blog post layout","long-form article","블로그 글 레이아웃","아티클 페이지"]
|
|
5
6
|
screen_type: Article page
|
|
6
7
|
primary_user_task: Read a long document while referencing supporting material.
|
|
7
8
|
spatial_model: Constrained reading column with nearby supplemental content.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
type: Layout Recipe
|
|
3
3
|
title: Command Surface
|
|
4
4
|
description: Compose a tool-heavy shell with stable command and content regions.
|
|
5
|
+
aliases: ["editor shell","tool-heavy app shell","toolbar app","툴 화면","에디터 레이아웃"]
|
|
5
6
|
screen_type: Command surface
|
|
6
7
|
primary_user_task: Repeatedly execute commands while inspecting or editing content.
|
|
7
8
|
spatial_model: Stable shell regions with wrapping or scrolling command rows.
|
package/recipes/dashboard.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
type: Layout Recipe
|
|
3
3
|
title: Dashboard
|
|
4
4
|
description: Compose repeated panels and action clusters on a page grid.
|
|
5
|
+
aliases: ["admin dashboard","panel dashboard","대시보드","대시보드 레이아웃"]
|
|
5
6
|
screen_type: Dashboard
|
|
6
7
|
primary_user_task: Scan and compare repeated status, metric, or workflow panels.
|
|
7
8
|
spatial_model: Page grid containing repeated local grids and action groups.
|
package/recipes/form-flow.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
type: Layout Recipe
|
|
3
3
|
title: Form Flow
|
|
4
4
|
description: Compose sequential form content with constrained width and reachable actions.
|
|
5
|
+
aliases: ["form layout","checkout form","폼 레이아웃","입력 폼"]
|
|
5
6
|
screen_type: Form flow
|
|
6
7
|
primary_user_task: Complete a sequence of related inputs.
|
|
7
8
|
spatial_model: Single primary column with grouped fields and action placement.
|
package/recipes/homepage.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
type: Layout Recipe
|
|
3
3
|
title: Homepage
|
|
4
4
|
description: Compose raw content into a homepage or ordinary webpage before product-level visual styling.
|
|
5
|
+
aliases: ["landing page","marketing homepage","랜딩 페이지","홈페이지 레이아웃","랜딩 페이지 만들기"]
|
|
6
|
+
questions: ["How do I compose raw content into a homepage layout?"]
|
|
5
7
|
screen_type: Homepage
|
|
6
8
|
primary_user_task: Understand the offer, find the right next path, and decide whether to act.
|
|
7
9
|
spatial_model: First-viewport hook followed by stacked explanation, proof, comparison, conversion, and navigation sections.
|
package/recipes/list-detail.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
type: Layout Recipe
|
|
3
3
|
title: List Detail
|
|
4
4
|
description: Compose an explorable list beside its selected detail region.
|
|
5
|
+
aliases: ["master detail screen","inbox layout","목록 상세 화면"]
|
|
5
6
|
screen_type: List detail
|
|
6
7
|
primary_user_task: Browse a collection and inspect one selected item.
|
|
7
8
|
spatial_model: Peer list and detail regions with explicit scroll ownership.
|
package/recipes/saas-settings.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
type: Layout Recipe
|
|
3
3
|
title: SaaS Settings
|
|
4
4
|
description: Compose a fixed side navigation with a constrained settings flow.
|
|
5
|
+
aliases: ["settings page","account settings layout","설정 페이지","설정 화면 레이아웃"]
|
|
5
6
|
screen_type: SaaS settings
|
|
6
7
|
primary_user_task: Review and edit account or workspace settings.
|
|
7
8
|
spatial_model: Fixed navigation plus constrained primary content.
|
|
@@ -115,12 +115,14 @@ function packagedInventoryRunner(root) {
|
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
/** Repository root plus the packaged inventory runner when installed without Git metadata. */
|
|
119
|
+
export function materialRuntimeOptions() {
|
|
119
120
|
const hasGitMetadata = fs.existsSync(path.join(repositoryRoot, ".git"));
|
|
120
|
-
return
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
return { repositoryRoot, ...(hasGitMetadata ? {} : { gitRunner: packagedInventoryRunner(repositoryRoot) }) };
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function runtimeRegistry() {
|
|
125
|
+
return createMaterialOperationRegistry(materialRuntimeOptions());
|
|
124
126
|
}
|
|
125
127
|
|
|
126
128
|
export function executeMaterialCli(args, registry = runtimeRegistry()) {
|
|
@@ -415,6 +415,27 @@ export function materialSearch({ repositoryRoot, input, fileSystem = fs, sourceR
|
|
|
415
415
|
return deepFreeze({ ...envelope, results: selected.map(({ result }) => result), total_matches: ranked.length });
|
|
416
416
|
}
|
|
417
417
|
|
|
418
|
+
/**
|
|
419
|
+
* Read every admitted material under the same manifest, tracking, and hash
|
|
420
|
+
* checks as material-search. Ranking layers (search v3) build on this.
|
|
421
|
+
*/
|
|
422
|
+
export function materialCorpus({ repositoryRoot, fileSystem = fs, sourceReader, gitRunner }) {
|
|
423
|
+
const { root, manifest } = loadMetadata(repositoryRoot, fileSystem);
|
|
424
|
+
const beforeInventory = trackedInventory(repositoryRoot, gitRunner);
|
|
425
|
+
const documents = manifest.materials.map((record) => {
|
|
426
|
+
const bytes = readRecord({ repositoryRoot, root, record, fileSystem, sourceReader, gitRunner, inventory: beforeInventory });
|
|
427
|
+
let text;
|
|
428
|
+
try { text = utf8Fatal.decode(bytes); } catch { fail("material_source_utf8_invalid", "material source is not valid UTF-8"); }
|
|
429
|
+
return { record, identity: materialIdentityForRecord(record), text };
|
|
430
|
+
});
|
|
431
|
+
const afterInventory = trackedInventory(repositoryRoot, gitRunner);
|
|
432
|
+
for (const record of manifest.materials) {
|
|
433
|
+
assertTracked(record, afterInventory);
|
|
434
|
+
if (canonicalize(beforeInventory.get(record.repository_path)) !== canonicalize(afterInventory.get(record.repository_path))) fail("material_source_race", "material source tracking changed during read");
|
|
435
|
+
}
|
|
436
|
+
return { manifestVersionId: manifest.version_id, documents };
|
|
437
|
+
}
|
|
438
|
+
|
|
418
439
|
function validateGetInput(input) {
|
|
419
440
|
assertObject(input);
|
|
420
441
|
assertOnly(input, new Set(["reference", "offset", "length"]));
|