@notis_ai/cli 0.2.0-beta.1793038587372.1 → 0.2.0-beta.1793098247207.1

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.
@@ -27,6 +27,10 @@ export interface MultiSelectActionBarProps {
27
27
  actions: MultiSelectAction[];
28
28
  /** Override the "{count} selected" label units. Default: "selected" with no item word. */
29
29
  itemLabel?: { singular: string; plural: string };
30
+ /** Complete count text in the caller's language, including plural agreement. */
31
+ selectionLabel?: string;
32
+ /** Accessible toolbar name in the caller's language. */
33
+ toolbarLabel?: string;
30
34
  /** Optional extra class on the outer container (composed alongside the inline styles). */
31
35
  className?: string;
32
36
  /** Optional override for the bar's positioning style. Defaults to bottom-center floating. */
@@ -125,6 +129,8 @@ export function MultiSelectActionBar({
125
129
  selectedCount,
126
130
  actions,
127
131
  itemLabel,
132
+ selectionLabel,
133
+ toolbarLabel,
128
134
  className,
129
135
  style,
130
136
  shortcutsEnabled = true,
@@ -196,9 +202,9 @@ export function MultiSelectActionBar({
196
202
  ? itemLabel.singular
197
203
  : itemLabel.plural
198
204
  : 'selected';
199
- const countLabel = itemLabel
205
+ const countLabel = selectionLabel ?? (itemLabel
200
206
  ? `${selectedCount} ${countWord} selected`
201
- : `${selectedCount} selected`;
207
+ : `${selectedCount} selected`);
202
208
 
203
209
  const composedStyle: CSSProperties = { ...containerBaseStyle, ...(style || {}) };
204
210
 
@@ -215,7 +221,7 @@ export function MultiSelectActionBar({
215
221
  onClearSelection();
216
222
  }}
217
223
  role="toolbar"
218
- aria-label={`Bulk actions for ${selectedCount} selected ${countWord}`}
224
+ aria-label={toolbarLabel ?? `Bulk actions for ${selectedCount} selected ${countWord}`}
219
225
  className={className}
220
226
  style={composedStyle}
221
227
  >
@@ -225,8 +231,13 @@ export function MultiSelectActionBar({
225
231
  [data-notis-bulk-actions] { flex-wrap: wrap; width: calc(100% - 2rem) !important; }
226
232
  [data-notis-bulk-count] { flex-basis: 100%; padding: 0.375rem 0.5rem !important; font-size: 14px !important; }
227
233
  [data-notis-bulk-divider] { display: none; }
228
- [data-notis-bulk-action-list] { width: 100%; }
229
- [data-notis-bulk-actions] button { min-height: 48px; font-size: 16px !important; }
234
+ /* Every action gets an equal column, icon over label, so none is cut off at the edge
235
+ (longer labels such as French ones wrap inside their column instead). */
236
+ [data-notis-bulk-action-list] { display: grid !important; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); width: 100%; overflow: visible !important; }
237
+ [data-notis-bulk-actions] button { flex-direction: column; justify-content: flex-start; gap: 4px !important; min-width: 0; min-height: 56px; padding: 8px 4px 6px !important; font-size: 12px !important; line-height: 1.25; white-space: normal !important; text-align: center; }
238
+ [data-notis-bulk-actions] kbd { display: none !important; }
239
+ [data-notis-bulk-action-icon][data-has-shortcut] { display: inline-flex !important; }
240
+ [data-notis-bulk-action-icon] svg { width: 18px; height: 18px; }
230
241
  }
231
242
  @media (hover: none) and (pointer: coarse) {
232
243
  [data-notis-bulk-actions] kbd { display: none !important; }