feat(examples): Chat/Channel Detail Panel layout example (#45)#46
Conversation
|
Review note (cross-PR consistency) — there's a problem with the 1. Guaranteed merge conflict with #47. Both this PR and #47 add an 2. The two PRs implement the group inconsistently — this is the thing to settle together:
Current repo practice keeps everything under Good here: this PR correctly registers Minor: Suggested resolution: coordinate one convention with #47, land one PR first, rebase the other. Generated by Claude Code |
- Add FormTaskFormExample to form.vue in both playgrounds (follows existing pages/components/* convention, resolves conflict with #46) - Remove pages/examples/ tree and TaskFormWidget standalone components - Remove examples nav group from useNavigation.ts in both playgrounds - Register task-form recipe in skills/index.json https://claude.ai/code/session_01EyoVAehvtYFhFwAtkBSafs
…ygrounds Demonstrates how to compose a Bitrix24-style chat/channel detail side panel using standard b24ui components (B24Avatar, B24AvatarGroup, B24Switch, B24Badge, B24Empty, B24Button, B24Card) with minimal custom styling. Closes #45
- fix: move channel-panel from components to examples group in useNavigation (both playgrounds) - fix: add LayersIcon import for examples navigation group - fix: correct B24Card body class — add missing `flex` before `flex-col` - fix: replace B24Switch icon-as-span pattern with `label` prop + b24ui flex-row-reverse override for proper a11y - fix: replace invisible spacer `ms-8` with size-5 shrink-0 spacer matching icon width for sub-label alignment - fix: change section headings from `<p>` to semantic `<h3>` - fix: remove redundant `md:justify-center` (justify-center already applies at all breakpoints) - fix: replace `<Component :is="Icon">` with direct icon component usage - feat(skill): add detail-panel recipe to b24-ui-nuxt skill (detail-panel.md + skills/index.json) https://claude.ai/code/session_01S5G1dH1Cnmq6va2XJkj7ga
Add the channel-panel layout to the Card docs Examples section and place a ::prompt block next to it. The prompt instructs the AI assistant to ask clarifying questions about the entity type and required sections before generating the layout. https://claude.ai/code/session_01S5G1dH1Cnmq6va2XJkj7ga
- a11y: mark decorative row icons aria-hidden in all three copies and the recipe - fix(docs): register channel-panel icons in optimizeDeps.include - fix(skill): correct non-existent avatar paths in detail-panel recipe - fix(skill): align toggle-row comment with the .vue example - chore(skill): order recipes alphabetically in index.json - style: pass numeric Badge counters via :label instead of string https://claude.ai/code/session_01S5G1dH1Cnmq6va2XJkj7ga
Break single-line <p> elements with attributes onto multiple lines so they pass the lint rule (only attribute-less single-line elements are ignored). Fixes the red CI lint step. https://claude.ai/code/session_01S5G1dH1Cnmq6va2XJkj7ga
Follow the established playground convention (SalesDynamicsWidget): extract the channel detail panel into a reusable DetailPanelWidget component embedded at the bottom of the Card playground page, instead of a standalone page and a separate Examples navigation group. - add DetailPanelWidget.vue (demo + nuxt, identical; avatar path via prop) - embed <DetailPanelWidget> in card.vue (demo + nuxt) - remove standalone pages/components/channel-panel.vue (demo + nuxt) - revert the Examples navigation group in useNavigation (demo + nuxt) https://claude.ai/code/session_01S5G1dH1Cnmq6va2XJkj7ga
1e3f6f5 to
21e3a27
Compare
- Add FormTaskFormExample to form.vue in both playgrounds (follows existing pages/components/* convention, resolves conflict with #46) - Remove pages/examples/ tree and TaskFormWidget standalone components - Remove examples nav group from useNavigation.ts in both playgrounds - Register task-form recipe in skills/index.json https://claude.ai/code/session_01EyoVAehvtYFhFwAtkBSafs
The ::prompt block for the Sales dynamics widget was placed in a separate top-level ## Prompt section instead of directly below the ::component-example it belongs to. Move it into the ### Sales dynamics widget subsection to match the pattern used by ### Channel detail panel. https://claude.ai/code/session_01S5G1dH1Cnmq6va2XJkj7ga
::prompt blocks must always be placed directly below their ::component-example, never in a separate top-level ## Prompt section. https://claude.ai/code/session_01S5G1dH1Cnmq6va2XJkj7ga
- Add FormTaskFormExample to form.vue in both playgrounds (follows existing pages/components/* convention, resolves conflict with #46) - Remove pages/examples/ tree and TaskFormWidget standalone components - Remove examples nav group from useNavigation.ts in both playgrounds - Register task-form recipe in skills/index.json https://claude.ai/code/session_01EyoVAehvtYFhFwAtkBSafs
$(cat <<'EOF'
Summary
channel-panelexample page to bothplaygrounds/demoandplaygrounds/nuxtchannel-panelinuseNavigationcomposable in both playgroundsComponents used
B24Avatarwithsize="3xl"+b24ui.root: 'rounded-xl'B24AvatarGroup+B24ButtonB24Switchin flex row with iconB24BadgeB24EmptyB24Buttondivide-y divide-defaultviaB24Cardb24ui propTest plan
channel-panelin demo playground — panel renders centeredchannel-panelin nuxt playground — panel renders centeredCloses #45
EOF
)
Generated by Claude Code