Repository navigation
feat(webkit): [ENG-49886] add article and content page sections - #1151
Merged
Merged
Conversation
…vocabulary The marketing site places whole bands on a page from JSON, so each band becomes a webkit component under the new sections category. SECTIONS.md records the convention the blocks follow: props are exactly the site JSON keys, kind changes layout only, one landmark per band, and the data module under _sections/ is the single source for the template story, the component story and the MDX. There is no registry or dispatcher: the site imports each block and maps _id to it itself. Forms are the one exception to props-only: they emit submit with the values and the site posts them, reporting back through loading, submitted and error, so the package never fetches nor fakes a send. imports.md documents sections/ as the only category whose public path keeps a prefix, so the import path matches the section _id. The anchor concept enters the prop vocabulary (rule and engine together), and catalog.json is regenerated because it stamps the vocabulary.
…ory helpers Registers sections in the hook category registry and the spec schema so a block under src/components/sections/<name>/ resolves its spec, testid and story like any other category. build-catalog resolves the spec of a nested export by its last segment, so ./sections/use-cases reads .specs/use-cases.md; with no section exported yet the catalog is unchanged. Two Storybook helpers back the section stories: sectionMarkup turns a section's site-JSON props into concrete markup for a runnable Show code SFC (structured values become script-setup consts, a form's submit wiring can be added), and withStoryAssets swaps the site's /marketing-components/ URLs for the package assets on the canvas only, so the documented JSON keeps the site paths while images render.
Seven page-frame blocks become @aziontech/webkit/sections/* components, each with a spec, a browser-mode test, a component story and a size budget, and their Templates/Marketing stories now render the component from the shared _sections data modules instead of composing the band. hero-band merges the five hero _ids that share one data model and differ only in layout (kind centered, title-band, pixel-floor, copy-beside-art, plus size for the small title band); hero-copy-on-top-art keeps its own topology model. hero-form never posts: it validates on submit only, following the webkit-form pattern (persistent Required tag on the label, amber required state for an empty field and red invalid for a malformed one, both only after a submit), and emits submit with the values by field name. The site posts them using the entry's submission block and sets loading, submitted or error. Its budget is high because the phone field inlines the country-flags sprite.
Thirteen feature and solution blocks become @aziontech/webkit/sections/* components with spec, browser-mode test, component story and size budget; their Templates/Marketing stories render the component from the shared _sections data modules. Variants that share one data model merge into one block: the three code-split _ids become code-split, and media-split-stack-solutions and -alternating become media-split-stack with kind media-end or alternating. architecture-tabs tabs carry their diagram name, and the Platform page is the same block with other data. cli-terminal shows the session through CodeBlock's line entrance instead of typing it live. Blocks that compose Illustration or Diagram are budgeted on the entry chunk only, since those registries split into async chunks.
Eight social-proof blocks become @aziontech/webkit/sections/* components with spec, browser-mode test, component story and size budget; their Templates/Marketing stories render the component from the shared _sections data modules. The two mosaic layouts carry disjoint data, so they are two blocks: client-mosaic derives its bento placement from the data and client-mosaic-columns gets its own _id. Logos and badges keep the site's URLs in the documented JSON and are resolved to the package assets on the Storybook canvas only.
comparison-table, compare-plans, compare-support-tiers and pricing-plans become @aziontech/webkit/sections/* components with spec, browser-mode test, component story and size budget; their Templates/Marketing stories render the component from the shared _sections data modules. Plans and support tiers stay two blocks because their row and closing models differ. The plan or tier picked on small screens and the billing period are local state. Picker and column labels move to the ariaLabel vocabulary, closing links to primaryAction or a per-section action, and anchor replaces the ids the templates hard-coded.
Nine article and content blocks become @aziontech/webkit/sections/* components with spec, browser-mode test, component story and size budget; their Templates/Marketing stories render the component from the shared _sections data modules. The three article-cards _ids share one item model, so they merge into article-cards with kind left or centered. The blog and resource-hub indexes differ in filters and item shape, so article-index splits into article-index-blog and article-index-resource-hub. Filtering, search and tab state are local. faq-section answers accept block markdown (blank-line paragraphs and dash lists) on top of inline links and emphasis, rendered without v-html, so the rich-answers story renders the component instead of a hand-built Faq slot.
guilherme-santana-azion
approved these changes
Nov 6, 2026
guilherme-santana-azion
approved these changes
Nov 6, 2026
robson-junior-azion
approved these changes
Nov 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@aziontech/webkit/sections/*components with spec, browser-mode test, component story and size budget:article-body,article-cards,article-highlight,article-index-blog,article-index-resource-hub,resource-grid,story-library,subject-library,faq-section.article-indexsplits into a blog block and a resource-hub block, because their filters and item shapes differ. Filters, search and tabs are local state.faq-sectionanswers accept block markdown (paragraphs,-lists) with nov-html, soRichAnswersrenders the component.How to test
PNPM_CONFIG_VERIFY_DEPS_BEFORE_RUN=false CI= pnpm --filter @aziontech/webkit exec vitest run src/components/sections→ all pass in Chromium.pnpm storybook:dev, then openTemplates/Marketing/Content/FaqSection → RichAnswers: answers show paragraphs and bullet lists with working links.StoryLibraryand type in the search: the grid filters, andNoResultsshows the EmptyState with a clear action.Notes
@aziontech/webkit. Stacked on feat(webkit): [ENG-49885] add comparison and pricing page sections #1150 (ENG-49886).article-cards:article-cards-articles/-success-cases/-centered→_id: 'article-cards', withkind: 'left'(the first two) orkind: 'centered'.resource-grid: gainseyebrow,descriptionandprimaryAction.article-highlight:anchor: 'articles'is added.article-index-resource-hub:rowKindand the unuseditems[].categoriesare removed.story-library:search.shortPlaceholderis removed;linkLabel,moreLabelandariaLabelare added.article-body:eyebrowis added,share.copyFeedis removed, andarticleis required.subject-library:closing.actions[]→closing.primaryAction/secondaryAction.faq-section:anchor: 'faq'is added.answermay hold blank-line paragraphs and-lists; a single-paragraph answer renders as before.article-bodyrenders block markdown only.article-bodyaxe check withSplitButtonisit.skip(nested-interactive, a known SplitButton defect).