Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ import 'package:design_system_gallery/components/button.dart'
as _design_system_gallery_components_button;
import 'package:design_system_gallery/components/stream_avatar.dart'
as _design_system_gallery_components_stream_avatar;
import 'package:design_system_gallery/components/stream_avatar_group.dart'
as _design_system_gallery_components_stream_avatar_group;
import 'package:design_system_gallery/components/stream_avatar_stack.dart'
as _design_system_gallery_components_stream_avatar_stack;
import 'package:design_system_gallery/components/stream_badge_count.dart'
as _design_system_gallery_components_stream_badge_count;
import 'package:design_system_gallery/components/stream_online_indicator.dart'
as _design_system_gallery_components_stream_online_indicator;
import 'package:design_system_gallery/primitives/colors.dart'
Expand All @@ -35,7 +39,6 @@ import 'package:widgetbook/widgetbook.dart' as _widgetbook;
final directories = <_widgetbook.WidgetbookNode>[
_widgetbook.WidgetbookCategory(
name: 'App Foundation',
isInitiallyExpanded: false,
children: [
_widgetbook.WidgetbookFolder(
name: 'Primitives',
Expand Down Expand Up @@ -144,7 +147,6 @@ final directories = <_widgetbook.WidgetbookNode>[
children: [
_widgetbook.WidgetbookFolder(
name: 'Avatar',
isInitiallyExpanded: false,
children: [
_widgetbook.WidgetbookComponent(
name: 'StreamAvatar',
Expand All @@ -161,6 +163,21 @@ final directories = <_widgetbook.WidgetbookNode>[
),
],
),
_widgetbook.WidgetbookComponent(
name: 'StreamAvatarGroup',
useCases: [
_widgetbook.WidgetbookUseCase(
name: 'Playground',
builder: _design_system_gallery_components_stream_avatar_group
.buildStreamAvatarGroupPlayground,
),
_widgetbook.WidgetbookUseCase(
name: 'Showcase',
builder: _design_system_gallery_components_stream_avatar_group
.buildStreamAvatarGroupShowcase,
),
],
),
_widgetbook.WidgetbookComponent(
name: 'StreamAvatarStack',
useCases: [
Expand All @@ -178,9 +195,28 @@ final directories = <_widgetbook.WidgetbookNode>[
),
],
),
_widgetbook.WidgetbookFolder(
name: 'Badge',
children: [
_widgetbook.WidgetbookComponent(
name: 'StreamBadgeCount',
useCases: [
_widgetbook.WidgetbookUseCase(
name: 'Playground',
builder: _design_system_gallery_components_stream_badge_count
.buildStreamBadgeCountPlayground,
),
_widgetbook.WidgetbookUseCase(
name: 'Showcase',
builder: _design_system_gallery_components_stream_badge_count
.buildStreamBadgeCountShowcase,
),
],
),
],
),
_widgetbook.WidgetbookFolder(
name: 'Button',
isInitiallyExpanded: false,
children: [
_widgetbook.WidgetbookComponent(
name: 'StreamButton',
Expand Down Expand Up @@ -216,7 +252,6 @@ final directories = <_widgetbook.WidgetbookNode>[
),
_widgetbook.WidgetbookFolder(
name: 'Indicator',
isInitiallyExpanded: false,
children: [
_widgetbook.WidgetbookComponent(
name: 'StreamOnlineIndicator',
Expand Down
51 changes: 50 additions & 1 deletion apps/design_system_gallery/lib/app/gallery_shell.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class GalleryShell extends StatelessWidget {
lightTheme: materialTheme,
darkTheme: materialTheme,
themeMode: isDark ? .dark : .light,
directories: directories,
directories: _collapseDirectories(directories),
home: const GalleryHomePage(),
appBuilder: (context, child) => PreviewWrapper(child: child),
),
Expand All @@ -68,3 +68,52 @@ class GalleryShell extends StatelessWidget {
);
}
}

// Transforms a list of [WidgetbookNode]s to have their children collapsed
// by default.
//
// This recursively processes all nodes and creates new instances with
// `isInitiallyExpanded: false` for nodes that have children.
List<WidgetbookNode> _collapseDirectories(
List<WidgetbookNode> nodes,
) => nodes.map(_collapseNode).toList();

WidgetbookNode _collapseNode(
WidgetbookNode node,
) {
if (node is WidgetbookCategory) {
// Keep the category expanded by default, but collapse its children
return WidgetbookCategory(
name: node.name,
children: node.children?.map(_collapseNode).toList(),
);
}

if (node is WidgetbookFolder) {
// Keep the folder and its children collapsed by default
return WidgetbookFolder(
name: node.name,
isInitiallyExpanded: false,
children: node.children?.map(_collapseNode).toList(),
);
}

if (node is WidgetbookComponent) {
// Keep the component and its use cases collapsed by default
return WidgetbookComponent(
name: node.name,
isInitiallyExpanded: false,
useCases: [
...node.useCases.map(
(useCase) => WidgetbookUseCase(
name: useCase.name,
builder: useCase.builder,
designLink: useCase.designLink,
),
),
],
);
}

return node;
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ class _SizeCard extends StatelessWidget {
StreamAvatarSize.sm => 'Chat list items, notifications',
StreamAvatarSize.md => 'Message bubbles, comments',
StreamAvatarSize.lg => 'Profile headers, user cards',
StreamAvatarSize.xl => 'Hero sections, large profile displays',
};
}

Expand Down
Loading