@stackone/malachite 0.65.1 → 0.67.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/dist/index.d.ts CHANGED
@@ -164,6 +164,11 @@ declare interface BaseFormComponentProps {
164
164
  formControl?: Control<FieldValues, unknown>;
165
165
  loadingComponent: default_2.ReactNode;
166
166
  children?: default_2.ReactNode;
167
+ /** Accessibility wiring, from `useFormFieldIds` — see `FormFieldIds`. */
168
+ controlId?: string;
169
+ labelId?: string;
170
+ descriptionId?: string;
171
+ hintId?: string;
167
172
  }
168
173
 
169
174
  declare interface BaseSkeletonProps {
@@ -256,6 +261,46 @@ declare interface CardProps {
256
261
  };
257
262
  }
258
263
 
264
+ /** A horizontally scrolling radiogroup of cards — the "pick one of these" strip. */
265
+ export declare const CardStrip: default_2.FC<CardStripProps> & {
266
+ AddTile: default_2.FC<CardStripAddTileProps>;
267
+ };
268
+
269
+ export declare interface CardStripAddTileProps {
270
+ /** Visible label, e.g. "Add Profile". Also names the button for assistive tech. */
271
+ label: string;
272
+ /** Defaults to a plus. */
273
+ icon?: default_2.ReactNode;
274
+ onClick: () => void;
275
+ disabled?: boolean;
276
+ className?: string;
277
+ }
278
+
279
+ export declare interface CardStripProps {
280
+ /** The selected card's value, matched against each radio child's `data-value`. */
281
+ value: string;
282
+ onChange: (value: string) => void;
283
+ /** Cards. Any element with `role="radio"` and a `data-value` joins the group; a
284
+ * `CardStrip.AddTile` must be a direct child or it scrolls with the cards. */
285
+ children: default_2.ReactNode;
286
+ /** Pinned, non-scrolling slot before the cards (the Library card in the profile picker). */
287
+ leading?: default_2.ReactNode;
288
+ /** Circular scroll affordances, shown only on an edge that can actually scroll. */
289
+ arrows?: boolean;
290
+ /** Fade the cards out at any edge they scroll past. */
291
+ fadeEdges?: boolean;
292
+ /** Snap cards to the leading edge as the strip scrolls. */
293
+ snap?: boolean;
294
+ /** Whether a selection change scrolls the selected card into view. Set `false` when the
295
+ * value comes from a URL: `scrollIntoView` walks every scrollable ancestor, so a
296
+ * deep-linked strip below the fold jumps the page on load. */
297
+ scrollSelectedIntoView?: boolean;
298
+ 'aria-label'?: string;
299
+ 'aria-labelledby'?: string;
300
+ className?: string;
301
+ style?: default_2.CSSProperties;
302
+ }
303
+
259
304
  export declare const Checkbox: default_2.FC<CheckboxProps>;
260
305
 
261
306
  export declare interface CheckboxProps {
@@ -429,6 +474,7 @@ export declare const CustomIcons: {
429
474
  InfoCircleFilled: FC<IconProps>;
430
475
  IntegrationsIcon: FC<IconProps>;
431
476
  KeyIcon: FC<IconProps>;
477
+ LibraryIcon: FC<IconProps>;
432
478
  LogsIcon: FC<IconProps>;
433
479
  MagicWandIcon: FC<IconProps>;
434
480
  ManageTeamIcon: FC<IconProps>;
@@ -504,7 +550,7 @@ export declare enum DividerVariant {
504
550
  Emphasis = "emphasis"
505
551
  }
506
552
 
507
- export declare const Dropdown: ({ items, onItemSelected, defaultValue, disabled, error, label, hint, tooltip, name, required, loading, menuLoading, formControl, description, helperText, placeholder, search, size, }: DropdownProps) => JSX_2.Element;
553
+ export declare const Dropdown: ({ items, onItemSelected, defaultValue, disabled, error, label, hint, tooltip, name, required, loading, menuLoading, formControl, description, helperText, placeholder, search, size, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }: DropdownProps) => JSX_2.Element;
508
554
 
509
555
  export declare interface DropdownItem {
510
556
  id: string;
@@ -543,6 +589,10 @@ export declare interface DropdownProps {
543
589
  search?: boolean;
544
590
  /** 'medium' (42px) for form inputs; 'small' (32px) for toolbar chips. */
545
591
  size?: DropdownSize;
592
+ /** Names the trigger from the light DOM, where `htmlFor` cannot reach into the shadow root. */
593
+ id?: string;
594
+ 'aria-label'?: string;
595
+ 'aria-labelledby'?: string;
546
596
  }
547
597
 
548
598
  export declare type DropdownSize = 'small' | 'medium';
@@ -602,7 +652,10 @@ declare interface FlexProps {
602
652
  className?: string;
603
653
  }
604
654
 
605
- export declare type FontSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
655
+ /** Which of the three theme typefaces to render in. Defaults to the sans body face. */
656
+ declare type FontFamily = 'sans' | 'heading' | 'body';
657
+
658
+ export declare type FontSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge';
606
659
 
607
660
  export declare type FontWeight = 'normal' | 'semi-bold' | 'bold';
608
661
 
@@ -702,6 +755,9 @@ declare interface InputProps {
702
755
  onBlur?: () => void;
703
756
  helperText?: string;
704
757
  showPasswordToggle?: boolean;
758
+ id?: string;
759
+ 'aria-label'?: string;
760
+ 'aria-labelledby'?: string;
705
761
  }
706
762
 
707
763
  declare type InputSize = 'small' | 'medium' | 'large';
@@ -803,6 +859,7 @@ export declare interface MalachiteTheme {
803
859
  medium: string;
804
860
  large: string;
805
861
  xlarge: string;
862
+ xxlarge: string;
806
863
  };
807
864
  iconSizes: {
808
865
  xsmall: string;
@@ -815,6 +872,8 @@ export declare interface MalachiteTheme {
815
872
  md: string;
816
873
  lg: string;
817
874
  xl: string;
875
+ xxl: string;
876
+ xxxl: string;
818
877
  };
819
878
  shadows: {
820
879
  sm: string;
@@ -962,6 +1021,23 @@ export declare interface MalachiteTheme {
962
1021
  selectedForeground: string;
963
1022
  selectedShadow: string;
964
1023
  };
1024
+ selectableCard: {
1025
+ selectedBackground: string;
1026
+ selectedShadow: string;
1027
+ accent: string;
1028
+ mutedForeground: string;
1029
+ hoverBackground: string;
1030
+ hoverRule: string;
1031
+ pendingForeground: string;
1032
+ };
1033
+ cardStrip: {
1034
+ background: string;
1035
+ divider: string;
1036
+ fade: string;
1037
+ bottomRule: string;
1038
+ arrowBackground: string;
1039
+ arrowBorder: string;
1040
+ };
965
1041
  dropdown: {
966
1042
  border: string;
967
1043
  borderActive: string;
@@ -1150,6 +1226,10 @@ declare interface MultiSelectBaseProps {
1150
1226
  inlineSearch?: boolean;
1151
1227
  className?: string;
1152
1228
  style?: default_2.CSSProperties;
1229
+ /** Names the trigger from the light DOM, where `htmlFor` cannot reach into the shadow root. */
1230
+ id?: string;
1231
+ 'aria-label'?: string;
1232
+ 'aria-labelledby'?: string;
1153
1233
  }
1154
1234
 
1155
1235
  export declare interface MultiSelectOption {
@@ -1252,6 +1332,8 @@ export declare interface PartialMalachiteTheme {
1252
1332
  pillButton?: Partial<MalachiteTheme['colors']['pillButton']>;
1253
1333
  toggle?: Partial<MalachiteTheme['colors']['toggle']>;
1254
1334
  segmentedControl?: Partial<MalachiteTheme['colors']['segmentedControl']>;
1335
+ selectableCard?: Partial<MalachiteTheme['colors']['selectableCard']>;
1336
+ cardStrip?: Partial<MalachiteTheme['colors']['cardStrip']>;
1255
1337
  dropdown?: Partial<MalachiteTheme['colors']['dropdown']>;
1256
1338
  tag?: Partial<MalachiteTheme['colors']['tag']>;
1257
1339
  numberTag?: Partial<MalachiteTheme['colors']['numberTag']>;
@@ -1418,6 +1500,55 @@ export declare interface SegmentedControlProps<T extends string = string> {
1418
1500
 
1419
1501
  export declare type SegmentedControlSize = 'small' | 'medium';
1420
1502
 
1503
+ /** A fixed-size card that behaves as one option in a radio group: a card-shaped `Surface.Row`. */
1504
+ export declare const SelectableCard: default_2.FC<SelectableCardProps>;
1505
+
1506
+ export declare interface SelectableCardProps {
1507
+ /** Identifies the card inside its group; handed back to `onSelect`. */
1508
+ value: string;
1509
+ title: string;
1510
+ /** Leading glyph on the title line, e.g. a library/book icon. */
1511
+ titleIcon?: default_2.ReactNode;
1512
+ /** `display` is the larger, lighter treatment the design gives the browse card; profile… */
1513
+ titleSize?: 'default' | 'display';
1514
+ /** Small label above the title ("Profile", "Explore"). */
1515
+ eyebrow?: string;
1516
+ /** Status pill rendered next to the eyebrow — or in its place when there is no eyebrow. */
1517
+ status?: SelectableCardStatus;
1518
+ /** Supporting copy under the title, clamped to two lines. */
1519
+ description?: string;
1520
+ /** Bottom-left summary ("16 Actions", "10 Selected"). */
1521
+ countLabel?: string;
1522
+ /** Bottom-right cluster (markers, an ActionMenu…). */
1523
+ footerActions?: default_2.ReactNode;
1524
+ selected?: boolean;
1525
+ /** Wording shown beside the radio when selected. */
1526
+ selectedLabel?: string;
1527
+ /** Wording shown in the same slot on hover, inviting the click. */
1528
+ hoverLabel?: string;
1529
+ /** Replaces the card's content with a centred in-progress message and an amber rule, for a… */
1530
+ loading?: boolean;
1531
+ loadingLabel?: string;
1532
+ loadingHint?: string;
1533
+ /** Dims the card and blocks selection. */
1534
+ disabled?: boolean;
1535
+ /** Dims the card without blocking selection. */
1536
+ dimmed?: boolean;
1537
+ onSelect?: (value: string) => void;
1538
+ /** Tab stop for the card. */
1539
+ tabIndex?: number;
1540
+ /** Replaces the generated accessible name (eyebrow + title + status). */
1541
+ 'aria-label'?: string;
1542
+ className?: string;
1543
+ style?: default_2.CSSProperties;
1544
+ }
1545
+
1546
+ export declare interface SelectableCardStatus {
1547
+ label: string;
1548
+ /** Maps to Tag's palette — `default` (grey) for "Disabled", `warning` (amber) for "Draft". */
1549
+ type?: TagType;
1550
+ }
1551
+
1421
1552
  /**
1422
1553
  * ShadowEscape renders its children OUTSIDE the Shadow DOM to avoid React hook issues.
1423
1554
  * This is used internally by form components to escape Shadow DOM boundaries.
@@ -1619,6 +1750,7 @@ export declare interface StepperProps {
1619
1750
  onChange?: (index: number) => void;
1620
1751
  className?: string;
1621
1752
  'aria-label'?: string;
1753
+ 'aria-labelledby'?: string;
1622
1754
  }
1623
1755
 
1624
1756
  export declare const Surface: SurfaceComponent;
@@ -1907,6 +2039,9 @@ declare interface TextAreaProps {
1907
2039
  * content like URLs. Defaults to true.
1908
2040
  */
1909
2041
  wrap?: boolean;
2042
+ id?: string;
2043
+ 'aria-label'?: string;
2044
+ 'aria-labelledby'?: string;
1910
2045
  }
1911
2046
 
1912
2047
  declare type TextAreaSize = 'small' | 'medium' | 'large';
@@ -1916,6 +2051,11 @@ export declare type TextColor = 'primary' | 'secondary' | 'dimmed' | 'placeholde
1916
2051
  export declare interface TextProps {
1917
2052
  color?: TextColor;
1918
2053
  size?: FontSize;
2054
+ /**
2055
+ * Typeface. Defaults to `sans` (Inter), the library's body face. `heading` is Stack Sans
2056
+ * Text and `body` is Geist — both are loaded on mount and declared in the theme.
2057
+ */
2058
+ font?: FontFamily;
1919
2059
  underline?: boolean;
1920
2060
  fontWeight?: FontWeight;
1921
2061
  children: default_2.ReactNode;
package/dist/index.js CHANGED
@@ -1,87 +1,89 @@
1
- import { A as s, c as t, d as o, e as i, B as r, f as n, g as l, h as p, i as T, j as d, k as m, l as S, m as c, n as h, o as u, D as g, p as C, q as w, r as y, F, s as x, t as f, u as v, v as k, w as B, x as L, y as P, z as b, I as A, K as D, L as z, E as R, M, G as I, N, O as V, P as j, H as q, J as E, Q as G, R as H, S as J, T as K, U as O, V as W, W as Q, X as U, Y as X, Z as Y, $ as Z, a0 as $, a1 as _, a2 as aa, a3 as ea, a4 as sa, a5 as ta, a6 as oa, a7 as ia, a8 as ra, a9 as na, aa as la, ab as pa, ac as Ta, ad as da, ae as ma, af as Sa, ag as ca, ah as ha, ai as ua, aj as ga, ak as Ca, al as wa, am as ya, an as Fa, ao as xa, ap as fa, aq as va, ar as ka, as as Ba, at as La, au as Pa, av as ba, aw as Aa } from "./index-C7oEKZwO.js";
1
+ import { A as s, c as t, d as o, e as r, B as i, f as l, g as n, h as p, i as d, j as T, k as S, l as m, m as c, n as h, o as u, p as g, D as C, q as y, r as w, s as x, F, t as f, u as v, v as k, w as B, x as L, y as P, z as b, E as A, I as D, K as z, L as R, G as M, M as I, H as N, N as V, O as j, P as q, J as E, Q as G, R as H, S as J, T as K, U as O, V as W, W as Q, X as U, Y as X, Z as Y, $ as Z, a0 as $, a1 as _, a2 as aa, a3 as ea, a4 as sa, a5 as ta, a6 as oa, a7 as ra, a8 as ia, a9 as la, aa as na, ab as pa, ac as da, ad as Ta, ae as Sa, af as ma, ag as ca, ah as ha, ai as ua, aj as ga, ak as Ca, al as ya, am as wa, an as xa, ao as Fa, ap as fa, aq as va, ar as ka, as as Ba, at as La, au as Pa, av as ba, aw as Aa, ax as Da, ay as za } from "./index-DP5h64uw.js";
2
2
  export {
3
3
  s as Accordion,
4
4
  t as ActionMenu,
5
5
  o as Alert,
6
- i as Avatar,
7
- r as BaseFormComponent,
8
- n as Button,
9
- l as ButtonList,
6
+ r as Avatar,
7
+ i as BaseFormComponent,
8
+ l as Button,
9
+ n as ButtonList,
10
10
  p as Card,
11
+ d as CardStrip,
11
12
  T as Checkbox,
12
- d as ClampText,
13
+ S as ClampText,
13
14
  m as CodeBlock,
14
- S as CollapsibleSection,
15
- c as Confetti,
16
- h as ConnectionHeader,
17
- u as CustomIcons,
18
- g as DefinitionRow,
19
- C as Divider,
15
+ c as CollapsibleSection,
16
+ h as Confetti,
17
+ u as ConnectionHeader,
18
+ g as CustomIcons,
19
+ C as DefinitionRow,
20
+ y as Divider,
20
21
  w as DividerVariant,
21
- y as Dropdown,
22
+ x as Dropdown,
22
23
  F as Flex,
23
- x as FlexAlign,
24
- f as FlexDirection,
25
- v as FlexGapSize,
26
- k as FlexJustify,
27
- B as FooterLinks,
28
- L as FooterNav,
29
- P as Form,
30
- b as FormItem,
31
- A as Input,
32
- D as KeyValueList,
33
- z as Link,
34
- R as LoadingBar,
35
- M as MalachiteContext,
36
- I as MultiSelect,
37
- N as NumberTag,
38
- V as OverflowRow,
39
- j as Padded,
40
- q as PaddingSize,
41
- E as PillButton,
42
- G as PreviewTree,
43
- H as PreviewTreeRow,
44
- J as Progress,
45
- K as Radio,
46
- O as Search,
47
- W as SegmentedControl,
48
- Q as ShadowEscape,
49
- U as SidePanel,
50
- X as SidePanelNavFooter,
51
- Y as Skeleton,
52
- Z as Spacer,
53
- $ as SpacingSize,
54
- _ as Spinner,
55
- aa as SplitScreenLayout,
56
- ea as StatBadge,
57
- sa as Statistic,
58
- ta as StatusBadge,
59
- oa as Stepper,
60
- ia as Surface,
61
- ra as SurfaceRow,
62
- na as Swatch,
63
- la as Table,
64
- pa as Tabs,
65
- Ta as Tag,
66
- da as TextArea,
67
- ma as ThemeScope,
68
- Sa as Toggle,
69
- ca as Toolbar,
70
- ha as Tooltip,
71
- ua as TruncatedTooltip,
72
- ga as Typography,
73
- Ca as WizardLayout,
74
- wa as applyCustomTheme,
75
- ya as applyDarkTheme,
76
- Fa as applyLightTheme,
77
- xa as applyTheme,
78
- fa as applyThemeVars,
79
- va as darkTheme,
80
- ka as defaultTheme,
81
- Ba as getCurrentTheme,
82
- La as getCurrentThemeMode,
83
- Pa as initializeTheme,
84
- ba as resetTheme,
85
- Aa as toggleTheme
24
+ f as FlexAlign,
25
+ v as FlexDirection,
26
+ k as FlexGapSize,
27
+ B as FlexJustify,
28
+ L as FooterLinks,
29
+ P as FooterNav,
30
+ b as Form,
31
+ A as FormItem,
32
+ D as Input,
33
+ z as KeyValueList,
34
+ R as Link,
35
+ M as LoadingBar,
36
+ I as MalachiteContext,
37
+ N as MultiSelect,
38
+ V as NumberTag,
39
+ j as OverflowRow,
40
+ q as Padded,
41
+ E as PaddingSize,
42
+ G as PillButton,
43
+ H as PreviewTree,
44
+ J as PreviewTreeRow,
45
+ K as Progress,
46
+ O as Radio,
47
+ W as Search,
48
+ Q as SegmentedControl,
49
+ U as SelectableCard,
50
+ X as ShadowEscape,
51
+ Y as SidePanel,
52
+ Z as SidePanelNavFooter,
53
+ $ as Skeleton,
54
+ _ as Spacer,
55
+ aa as SpacingSize,
56
+ ea as Spinner,
57
+ sa as SplitScreenLayout,
58
+ ta as StatBadge,
59
+ oa as Statistic,
60
+ ra as StatusBadge,
61
+ ia as Stepper,
62
+ la as Surface,
63
+ na as SurfaceRow,
64
+ pa as Swatch,
65
+ da as Table,
66
+ Ta as Tabs,
67
+ Sa as Tag,
68
+ ma as TextArea,
69
+ ca as ThemeScope,
70
+ ha as Toggle,
71
+ ua as Toolbar,
72
+ ga as Tooltip,
73
+ Ca as TruncatedTooltip,
74
+ ya as Typography,
75
+ wa as WizardLayout,
76
+ xa as applyCustomTheme,
77
+ Fa as applyDarkTheme,
78
+ fa as applyLightTheme,
79
+ va as applyTheme,
80
+ ka as applyThemeVars,
81
+ Ba as darkTheme,
82
+ La as defaultTheme,
83
+ Pa as getCurrentTheme,
84
+ ba as getCurrentThemeMode,
85
+ Aa as initializeTheme,
86
+ Da as resetTheme,
87
+ za as toggleTheme
86
88
  };
87
89
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackone/malachite",
3
- "version": "0.65.1",
3
+ "version": "0.67.0",
4
4
  "description": "StackOne's themeable React component library — Shadow DOM isolated, scoped Tailwind, theme-token driven.",
5
5
  "license": "MIT",
6
6
  "author": "StackOne",