Skip to content

feat(examples): Chat/Channel Detail Panel layout example (#45)#46

Merged
IgorShevchik merged 8 commits into
mainfrom
claude/create-responsive-layout-UOQl1
May 22, 2026
Merged

feat(examples): Chat/Channel Detail Panel layout example (#45)#46
IgorShevchik merged 8 commits into
mainfrom
claude/create-responsive-layout-UOQl1

Conversation

@IgorShevchik
Copy link
Copy Markdown
Collaborator

$(cat <<'EOF'

Summary

  • Adds channel-panel example page to both playgrounds/demo and playgrounds/nuxt
  • Registers channel-panel in useNavigation composable in both playgrounds
  • Demonstrates composition of a Bitrix24-style chat/channel detail sidebar using standard b24ui components with minimal custom styling

Components used

UI element Component
Square channel avatar B24Avatar with size="3xl" + b24ui.root: 'rounded-xl'
Grouped member avatars B24AvatarGroup + B24Button
Sound / Auto-delete toggles B24Switch in flex row with icon
Favorites / Links counters B24Badge
Media, Tasks, Meetings empty states B24Empty
Section "+ Add" actions B24Button
Section dividers divide-y divide-default via B24Card b24ui prop

Test plan

  • Open channel-panel in demo playground — panel renders centered
  • Open channel-panel in nuxt playground — panel renders centered
  • Toggle Sound switch — state changes
  • Toggle Auto-delete switch — sub-label updates
  • Verify responsive layout on mobile (narrow viewport) and desktop

Closes #45
EOF
)


Generated by Claude Code

@IgorShevchik
Copy link
Copy Markdown
Collaborator Author

Review note (cross-PR consistency) — there's a problem with the examples navigation that needs resolving before merge. Flagging on both this PR and #47, since they collide.

1. Guaranteed merge conflict with #47. Both this PR and #47 add an examples const and a { id: 'examples', label: 'Examples' } group to the same lines of playgrounds/nuxt/app/composables/useNavigation.ts and playgrounds/demo/app/composables/useNavigation.ts (plus an icon import at the same location). Whichever merges second will conflict in four files.

2. The two PRs implement the group inconsistently — this is the thing to settle together:

Current repo practice keeps everything under pages/components/*/components/* (no /examples/ tree exists yet), and surfaces composed examples through the relevant component docs page via ::component-example (your card.md change does this correctly). If a dedicated top-level examples group/route is genuinely wanted, please align it with #47 rather than shipping two variants.

Good here: this PR correctly registers references/recipes/detail-panel.md in skills/index.json — that's the pattern #47 is currently missing.

Minor: label: upperName(example) here vs upperName(example.split('/').pop() as string) used by the components/#47 mapping — pick one for consistency.

Suggested resolution: coordinate one convention with #47, land one PR first, rebase the other.


Generated by Claude Code

IgorShevchik pushed a commit that referenced this pull request May 21, 2026
- 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
claude added 6 commits May 22, 2026 07:54
…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
@IgorShevchik IgorShevchik force-pushed the claude/create-responsive-layout-UOQl1 branch from 1e3f6f5 to 21e3a27 Compare May 22, 2026 07:54
IgorShevchik pushed a commit that referenced this pull request May 22, 2026
- 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
claude added 2 commits May 22, 2026 11:55
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
@IgorShevchik IgorShevchik merged commit 017d317 into main May 22, 2026
1 check passed
IgorShevchik pushed a commit that referenced this pull request May 22, 2026
- 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Example: Chat / Channel Detail Panel Layout Using Standard Components

2 participants