Skip to content

Commit b41da6d

Browse files
refactor(ui): rename Settings to Section
1 parent 3349410 commit b41da6d

17 files changed

Lines changed: 703 additions & 696 deletions

.changeset/section-component.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
---

packages/swingset/src/components/DocsViewer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const docModules: Record<string, Record<string, React.ComponentType>> = {
4242
icon: dynamic(() => import('../stories/icon.mdx')),
4343
menu: dynamic(() => import('../stories/menu.component.mdx')),
4444
popover: dynamic(() => import('../stories/popover.component.mdx')),
45-
settings: dynamic(() => import('../stories/settings.mdx')),
45+
section: dynamic(() => import('../stories/section.mdx')),
4646
tabs: dynamic(() => import('../stories/tabs.component.mdx')),
4747
text: dynamic(() => import('../stories/text.mdx')),
4848
field: dynamic(() => import('../stories/field.component.mdx')),

packages/swingset/src/lib/registry.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,14 @@ import {
106106
ShadowIndicators as ScrollAreaShadowIndicators,
107107
ThemedScrollbar as ScrollAreaThemedScrollbar,
108108
} from '../stories/scroll-area.stories';
109-
import { meta as selectMeta } from '../stories/select.stories';
110109
import {
111-
ConnectedAccounts as SettingsConnectedAccounts,
112-
Default as SettingsDefault,
113-
Destructive as SettingsDestructive,
114-
meta as settingsMeta,
115-
MultipleEmailAndPhoneNumbers as SettingsMultipleEmailAndPhoneNumbers,
116-
} from '../stories/settings.stories';
110+
ConnectedAccounts as SectionConnectedAccounts,
111+
Default as SectionDefault,
112+
Destructive as SectionDestructive,
113+
meta as sectionMeta,
114+
MultipleEmailAndPhoneNumbers as SectionMultipleEmailAndPhoneNumbers,
115+
} from '../stories/section.stories';
116+
import { meta as selectMeta } from '../stories/select.stories';
117117
import { Default as TabsComponentDefault, meta as tabsComponentMeta } from '../stories/tabs.component.stories';
118118
import { meta as tabsMeta } from '../stories/tabs.stories';
119119
import {
@@ -134,12 +134,12 @@ import { toSlug } from './slug';
134134
import type { StoryModule } from './types';
135135

136136
const destructiveModule: StoryModule = { meta: destructiveMeta, Default: DestructiveDefault };
137-
const settingsModule: StoryModule = {
138-
meta: settingsMeta,
139-
Default: SettingsDefault,
140-
MultipleEmailAndPhoneNumbers: SettingsMultipleEmailAndPhoneNumbers,
141-
ConnectedAccounts: SettingsConnectedAccounts,
142-
Destructive: SettingsDestructive,
137+
const sectionModule: StoryModule = {
138+
meta: sectionMeta,
139+
Default: SectionDefault,
140+
MultipleEmailAndPhoneNumbers: SectionMultipleEmailAndPhoneNumbers,
141+
ConnectedAccounts: SectionConnectedAccounts,
142+
Destructive: SectionDestructive,
143143
};
144144
const organizationProfileLeaveSectionModule: StoryModule = {
145145
meta: organizationProfileLeaveSectionMeta,
@@ -297,7 +297,7 @@ export const registry: StoryModule[] = [
297297
iconModule,
298298
menuComponentModule,
299299
popoverComponentModule,
300-
settingsModule,
300+
sectionModule,
301301
tabsComponentModule,
302302
textModule,
303303
fieldModule,
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import * as SectionStories from './section.stories';
2+
3+
# Section
4+
5+
A section component that carries the canonical heading, surface, row grouping, and item layout. Use it for product sections while composing each item's media, content, and actions as needed.
6+
7+
## Usage
8+
9+
```tsx
10+
import { Section } from '@clerk/ui/mosaic/components/section';
11+
12+
<Section.Root>
13+
<Section.Title>Account</Section.Title>
14+
<Section.Group>
15+
<Section.Row>
16+
<Section.Item>
17+
<Section.Media>{icon}</Section.Media>
18+
<Section.Content>
19+
<Section.Label>Name</Section.Label>
20+
<Section.Description>Shown throughout the application.</Section.Description>
21+
</Section.Content>
22+
<Section.Actions>{control}</Section.Actions>
23+
</Section.Item>
24+
</Section.Row>
25+
</Section.Group>
26+
</Section.Root>
27+
```
28+
29+
`Section.Group` owns the outlined surface. Its direct `Section.Row` children own separation and may stack one or more `Section.Item` entries. Each item lays out optional media, flexible content, and trailing actions. `Section.Media` accepts `sm`, `md`, `lg`, and `xl` sizes.
30+
31+
Use `Section.Items` for a nested value list beneath a row's header item. The row keeps an 8px header-to-list gap, nested items stack without gaps at a 44px minimum height, and their content receives 12px vertical padding.
32+
33+
## Examples
34+
35+
<Story
36+
name='Default'
37+
storyModule={SectionStories}
38+
composition={[
39+
{ name: 'Avatar', href: '/components/avatar', layer: 'Components' },
40+
{ name: 'Button', href: '/components/button', layer: 'Components' },
41+
]}
42+
/>
43+
44+
### Multiple email addresses and phone numbers
45+
46+
<Story
47+
name='MultipleEmailAndPhoneNumbers'
48+
storyModule={SectionStories}
49+
composition={[
50+
{ name: 'Badge', href: '/components/badge', layer: 'Components' },
51+
{ name: 'Button', href: '/components/button', layer: 'Components' },
52+
{ name: 'Icon', href: '/components/icon', layer: 'Components' },
53+
]}
54+
/>
55+
56+
### Connected accounts
57+
58+
<Story
59+
name='ConnectedAccounts'
60+
storyModule={SectionStories}
61+
composition={[
62+
{ name: 'Button', href: '/components/button', layer: 'Components' },
63+
{ name: 'Icon', href: '/components/icon', layer: 'Components' },
64+
]}
65+
/>
66+
67+
### Destructive section
68+
69+
<Story
70+
name='Destructive'
71+
storyModule={SectionStories}
72+
/>

0 commit comments

Comments
 (0)