@lotics/ui 6.3.0 → 6.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -1
- package/package.json +1 -1
- package/src/stepper.tsx +26 -4
package/AGENTS.md
CHANGED
|
@@ -761,7 +761,7 @@ list · list_item · menu_button · menu_list_item · detail_row · pressable_ro
|
|
|
761
761
|
check_circle (CheckCircle — the completion ring: an empty ring that springs to a filled check when done, distinct from the square checkbox; the task/to-do/checklist toggle. Compose task rows directly, no Task component) · action_menu ·
|
|
762
762
|
floating_action_bar · filter_chip · column_filter (ColumnFilter — the typed per-column filter pill +
|
|
763
763
|
columnFilterToConditions; for a register filtering on several columns) · chip_group · search_input ·
|
|
764
|
-
sort_header · table · data_grid (DataGrid — the inline-managed grouped table: a grouped, sortable grid of LIVE inline-editor cells (`columns[].cell` → ANY field) + optional per-row `leading` (a CheckCircle) + `renderGroupFooter` (per-group add, align with the exported `gridRowStyle`) + `labels` (localize the sort-header a11y via `SortHeaderLabels`). Owns header/sections/rows; consumer owns data + sort/group/filter/collapse state + toolbar. Renders ALL rows — MODERATE data; 10k+ → the paginated `Table` register. Examples: `tpl_task_board`, `tpl_pipeline`) · pagination · accordion · stepper (Stepper + Step — done/current/upcoming/warning/complete progress on a track (horizontal) or spine (vertical); compound `<Step status>children` OR data `steps[]`+`current`; the guided-run / agent-feed primitive — subsumes the old StepList) ·
|
|
764
|
+
sort_header · table · data_grid (DataGrid — the inline-managed grouped table: a grouped, sortable grid of LIVE inline-editor cells (`columns[].cell` → ANY field) + optional per-row `leading` (a CheckCircle) + `renderGroupFooter` (per-group add, align with the exported `gridRowStyle`) + `labels` (localize the sort-header a11y via `SortHeaderLabels`). Owns header/sections/rows; consumer owns data + sort/group/filter/collapse state + toolbar. Renders ALL rows — MODERATE data; 10k+ → the paginated `Table` register. Examples: `tpl_task_board`, `tpl_pipeline`) · pagination · accordion · stepper (Stepper + Step — done/current/upcoming/warning/complete progress on a track (horizontal) or spine (vertical); compound `<Step status>children` OR data `steps[]`+`current`; **navigable** via `Step.onPress` (both orientations — the whole step is the tap target) + `active` to wash the selected one, so it doubles as a section/phase switcher; the guided-run / agent-feed primitive — subsumes the old StepList) ·
|
|
765
765
|
step_progress · timeline (heterogeneous event LOG — per-row icon + expandable details, models the past; NOT progress) · drawer (+ DrawerFooter) · dialog · popover · tooltip ·
|
|
766
766
|
alert · peek · empty_state · completion_state · callout (Callout · CalloutTitle ·
|
|
767
767
|
CalloutText · CalloutActions) · kpi_card · kpi_strip · metric · trend_chip · sparkline ·
|
package/package.json
CHANGED
package/src/stepper.tsx
CHANGED
|
@@ -56,7 +56,8 @@ interface StepPositional {
|
|
|
56
56
|
export interface StepProps extends StepPositional {
|
|
57
57
|
status: StepStatus;
|
|
58
58
|
children: ReactNode;
|
|
59
|
-
/** Make the step navigable
|
|
59
|
+
/** Make the step navigable (both orientations) — the whole step is the tap target.
|
|
60
|
+
* `active` washes the selected one (a panel can also sit beside it in vertical). */
|
|
60
61
|
onPress?: () => void;
|
|
61
62
|
active?: boolean;
|
|
62
63
|
accessibilityLabel?: string;
|
|
@@ -116,16 +117,34 @@ export function Step(props: StepProps) {
|
|
|
116
117
|
const { orientation, color, live } = useContext(StepperContext);
|
|
117
118
|
|
|
118
119
|
if (orientation === "horizontal") {
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
const inner = (
|
|
121
|
+
<>
|
|
121
122
|
<View style={styles.hTrackRow}>
|
|
122
123
|
<View style={[styles.hTrack, { backgroundColor: _leftFilled ? color : colors.zinc[200] }]} />
|
|
123
124
|
<Marker status={status} color={color} live={live} />
|
|
124
125
|
<View style={[styles.hTrack, { backgroundColor: _rightFilled ? color : colors.zinc[200] }]} />
|
|
125
126
|
</View>
|
|
126
127
|
<View style={styles.hLabel}>{children}</View>
|
|
127
|
-
|
|
128
|
+
</>
|
|
128
129
|
);
|
|
130
|
+
// Navigable: the whole step (marker + label + its track halves) is the tap
|
|
131
|
+
// target — generous, no dead zones; `active` washes the selected one.
|
|
132
|
+
if (onPress) {
|
|
133
|
+
return (
|
|
134
|
+
<View style={styles.hStepSlot}>
|
|
135
|
+
<PressableHighlight
|
|
136
|
+
focusRing
|
|
137
|
+
onPress={onPress}
|
|
138
|
+
accessibilityRole="button"
|
|
139
|
+
accessibilityLabel={accessibilityLabel}
|
|
140
|
+
style={[styles.hPress, active ? styles.hActive : null]}
|
|
141
|
+
>
|
|
142
|
+
{inner}
|
|
143
|
+
</PressableHighlight>
|
|
144
|
+
</View>
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
return <View style={styles.hStep}>{inner}</View>;
|
|
129
148
|
}
|
|
130
149
|
|
|
131
150
|
const body = <View style={[styles.vRowBox, active ? styles.vActive : null]}>{children}</View>;
|
|
@@ -210,6 +229,9 @@ const NODE = 18;
|
|
|
210
229
|
const styles = StyleSheet.create({
|
|
211
230
|
hRow: { flexDirection: "row" },
|
|
212
231
|
hStep: { flex: 1, alignItems: "center", gap: 8 },
|
|
232
|
+
hStepSlot: { flex: 1 },
|
|
233
|
+
hPress: { width: "100%", alignItems: "center", gap: 8, borderRadius: 8, paddingVertical: 4 },
|
|
234
|
+
hActive: { backgroundColor: colors.zinc[100] },
|
|
213
235
|
hTrackRow: { flexDirection: "row", alignItems: "center", width: "100%" },
|
|
214
236
|
hTrack: { flex: 1, height: 2 },
|
|
215
237
|
hLabel: { alignItems: "center" },
|