You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c50707c
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: apps/sim/platform/AGENTS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ Use `ActivityRow` for a first-line glyph or avatar, title/detail and centered tr
30
30
31
31
Measure the actual scroll viewport with `ScrollArea`, or attach `useScrollEdges` directly to a native or Base UI scroll owner. Use the shared 16px mask only on edges with more content, updating after scroll, resize, input, reset or filtering. Insets establish resting layout; they cannot substitute for an edge fade. Home widgets and notification panels use `--ui-widget-max-size` as a ceiling, not a forced height. Keep the dashboard free to scroll and let each overflowing list or schedule scroll independently. Plain tooltips preview at most three lines; retain the complete accessible text. A structured people popover owns its content and uses the dropdown’s popup padding and row insets.
32
32
33
-
Form dialogs use `Modal` or `MultiStepModal`. Pass a title, content, action labels and handlers. The shared borderless surface positions its title at the logical start and supplies one quiet Cancel/Back. Command search and previews use the same shadow and dismissal layer. Form controls cannot construct or style a form header, footer or Cancel button. Opening a dialog or advancing its step focuses the first available field. Confirmation dialogs focus Cancel, and read-only previews focus Close. A nested dialog handles Escape one layer at a time. While a form is open, the global search shortcut leaves its draft and keyboard focus in place. Closing returns focus to the invoking control. Textareas scroll or grow within their owner and never show a manual resize handle. Recipient fields use the textarea’s height, type and inset. Each email tag occupies one text line with the recent row’s trailing remove action. Comma or Enter commits a draft, pasting a list commits its addresses, and Backspace from an empty draft removes the last tag.
33
+
Form dialogs use `Modal` or `MultiStepModal`. Pass a title, content, action labels and handlers. The shared borderless surface positions its title at the logical start and supplies one quiet Cancel/Back. Command search and previews use the same shadow and dismissal layer. Form controls cannot construct or style a form header, footer or Cancel button. Opening a dialog or advancing its step focuses the first available field. Confirmation dialogs focus Cancel, and read-only previews focus Close. A nested dialog handles Escape one layer at a time. While a form is open, the global search shortcut leaves its draft and keyboard focus in place. Closing returns focus to the invoking control. Textareas scroll or grow within their owner and never show a manual resize handle. Recipient fields use the textarea’s height, draft typography and inset. Committed addresses use compact caption text and an always-visible neutral ×, like a panel tab. The remove button sits inside the tag beside its label; long addresses yield space to the button. Comma or Enter commits a draft, pasting a list commits its addresses, and Backspace from an empty draft removes the last tag.
34
34
35
35
Use `useClipboard` / `CopyButton` for successful copy feedback and `useFeedbackExpiry` for temporary status. Copied indicators and transient notices dwell for four seconds; repeated events restart the timer. Pause an actionable notice during hover or focus and keep its action available in the stack afterward. Icon color changes use `--ui-motion-color` (120ms, zero under reduced motion). Do not put literal timers or CSS durations in product components.
Copy file name to clipboardExpand all lines: apps/sim/platform/docs/component-ownership.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ Start with the interaction. A different label, icon, data source, theme or scree
8
8
| Navigate or select a row | ControlRow renders the actual link, tab or button. Chip, IdentityButton, sidebar, recent-items, destination-tabs, tabs and workspace-list compose it. A trailing ellipsis/close or a leading remove share a sibling action target: never nest a second button inside the first. Workspace choices can wrap to fit their name. |
9
9
| Open a two-line activity or destination | ActivityRow owns the text stack, leading art, hit area and optional trailing content. Home email and attention, the notification inbox and the chat panel launcher supply data. A notification with independent action buttons composes the same noninteractive ActivityBody alongside its actions. Section titles and scroll bounds stay with the containing feature. |
10
10
| Choose a value or run a command | Picker owns Select/Combobox behavior, Menu owns actions, nested menus, popovers and date range choices. These share popup and row recipes; retain their distinct ARIA roles and keyboard behavior. CommandPalette owns multi-group search and navigation inside the shared dialog. |
11
-
| Edit or toggle | Field owns labeled input/textarea chrome and errors. Platform globals disable manual textarea resizing. SearchField/MenuSearchField own clearable search and filtering. WorkspaceFields owns recipient parsing, editing, validation, removal and logo upload. RecipientTag composes the ControlRow remove action at the textarea’s line height. ComposerInput owns draft typing, paste and submission. Switch owns a boolean, SegmentedControl owns mutually exclusive choices. |
11
+
| Edit or toggle | Field owns labeled input/textarea chrome and errors. Platform globals disable manual textarea resizing. SearchField/MenuSearchField own clearable search and filtering. WorkspaceFields owns recipient parsing, editing, validation, removal and logo upload. RecipientTag pairs a bounded address with an always-visible inline IconButton. The field wraps tags as a unit. ComposerInput owns draft typing, paste and submission. Switch owns a boolean, SegmentedControl owns mutually exclusive choices. |
12
12
| Display layers and transient feedback | Modal owns title, body, multi-step progression and footer. OverlayDialog supplies the same surface to search and attachment previews. Tooltip owns bounded plain labels; a structured people panel uses its own measured content. Feedback owns clipboard success and timeout behavior. The notification tray owns history and Undo, with one control shadow outside the scroll viewport. |
13
13
| Show files, people and media | Attachments composes ControlRow with file glyph or thumbnail, an accessible preview target and an independent quiet remove action. Avatar owns image and single-initial fallbacks across profiles, email and people details. Icon owns interface paint and distinguishes branded artwork. Product callers supply media or data. |
14
14
| Read or inspect data | Chart owns shared numerical formatting, point inspection and chart tooltips. DataDisplay owns metrics and table semantics; PropertyList owns labeled values, ExecutionSteps is a noninteractive numbered plan, and EmptyState describes absent data. Calendar hours/events, Home activity chart axes and chat tool payloads remain with the features that interpret them. |
0 commit comments