@gtivr4/a1-design-system-react 0.15.0 → 0.19.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.
Files changed (43) hide show
  1. package/package.json +3 -2
  2. package/src/color-scheme.css +2 -0
  3. package/src/components/accordion/accordion.css +6 -0
  4. package/src/components/autocomplete/Autocomplete.d.ts +53 -0
  5. package/src/components/autocomplete/Autocomplete.jsx +380 -0
  6. package/src/components/autocomplete/autocomplete.css +346 -0
  7. package/src/components/banner/Banner.d.ts +9 -2
  8. package/src/components/banner/Banner.jsx +32 -6
  9. package/src/components/banner/banner.css +81 -0
  10. package/src/components/bottom-sheet/BottomSheet.d.ts +22 -0
  11. package/src/components/bottom-sheet/BottomSheet.jsx +154 -0
  12. package/src/components/bottom-sheet/bottom-sheet.css +113 -0
  13. package/src/components/code/Code.d.ts +4 -0
  14. package/src/components/code/Code.jsx +45 -2
  15. package/src/components/code/code.css +23 -0
  16. package/src/components/data-table/DataTable.jsx +11 -1
  17. package/src/components/data-table/data-table.css +19 -0
  18. package/src/components/figure/Figure.d.ts +7 -0
  19. package/src/components/figure/Figure.jsx +23 -2
  20. package/src/components/figure/figure.css +25 -0
  21. package/src/components/grid/Grid.d.ts +3 -1
  22. package/src/components/grid/Grid.jsx +10 -0
  23. package/src/components/grid/grid.css +11 -0
  24. package/src/components/page-layout/page-layout.css +10 -4
  25. package/src/components/page-nav/PageNav.jsx +29 -8
  26. package/src/components/page-nav/page-nav.css +13 -0
  27. package/src/components/paragraph/Paragraph.d.ts +2 -0
  28. package/src/components/paragraph/Paragraph.jsx +4 -0
  29. package/src/components/paragraph/paragraph.css +6 -6
  30. package/src/components/segmented-control/SegmentedControl.d.ts +8 -0
  31. package/src/components/segmented-control/SegmentedControl.jsx +16 -3
  32. package/src/components/segmented-control/segmented.css +31 -1
  33. package/src/components/slider/slider.css +10 -2
  34. package/src/components/split-button/SplitButton.jsx +3 -1
  35. package/src/components/tabs/tabs.css +3 -0
  36. package/src/components/toolbar/Toolbar.d.ts +7 -0
  37. package/src/components/toolbar/Toolbar.jsx +13 -5
  38. package/src/components/top-header/top-header.css +2 -0
  39. package/src/components/tree-menu/TreeMenu.jsx +11 -7
  40. package/src/index.d.ts +71 -0
  41. package/src/index.js +2 -0
  42. package/src/themes.css +293 -0
  43. package/src/tokens.css +22 -1
@@ -5,6 +5,7 @@ const colors = ["default", "muted"];
5
5
  const breakpoints = ["xs", "sm", "md", "lg", "xl"];
6
6
  const textWraps = ["balance"];
7
7
  const aligns = ["left", "center", "right", "start", "end"];
8
+ const weights = ["regular", "medium", "semibold", "bold"];
8
9
 
9
10
  function isResponsiveSize(size) {
10
11
  return size && typeof size === "object" && !Array.isArray(size);
@@ -31,6 +32,7 @@ export function Paragraph({
31
32
  color = "default",
32
33
  textWrap,
33
34
  align,
35
+ weight,
34
36
  className = "",
35
37
  style,
36
38
  ...props
@@ -39,6 +41,7 @@ export function Paragraph({
39
41
  const resolvedColor = colors.includes(color) ? color : "default";
40
42
  const resolvedTextWrap = textWraps.includes(textWrap) ? textWrap : null;
41
43
  const resolvedAlign = aligns.includes(align) ? align : null;
44
+ const resolvedWeight = weights.includes(weight) ? weight : null;
42
45
  const responsiveStyle = getResponsiveSizeStyle(size);
43
46
  const resolvedStyle = Object.keys(responsiveStyle).length
44
47
  ? { ...responsiveStyle, ...style }
@@ -50,6 +53,7 @@ export function Paragraph({
50
53
  resolvedColor !== "default" && `a1-paragraph--${resolvedColor}`,
51
54
  resolvedTextWrap && `a1-paragraph--wrap-${resolvedTextWrap}`,
52
55
  resolvedAlign && `a1-paragraph--align-${resolvedAlign}`,
56
+ resolvedWeight && `a1-paragraph--weight-${resolvedWeight}`,
53
57
  className
54
58
  ]
55
59
  .filter(Boolean)
@@ -2,7 +2,7 @@
2
2
  margin: 0;
3
3
  font-family: var(--component-paragraph-font-family);
4
4
  font-size: var(--a1-paragraph-responsive-size, var(--a1-paragraph-size));
5
- font-weight: var(--component-paragraph-font-weight);
5
+ font-weight: var(--a1-paragraph-weight, var(--component-paragraph-font-weight));
6
6
  line-height: var(--component-paragraph-font-line-height);
7
7
  color: var(--a1-paragraph-color, var(--semantic-color-text-default));
8
8
  }
@@ -39,6 +39,11 @@
39
39
 
40
40
  .a1-paragraph--muted { --a1-paragraph-color: var(--semantic-color-text-muted); }
41
41
 
42
+ .a1-paragraph--weight-regular { --a1-paragraph-weight: var(--base-font-weight-regular); }
43
+ .a1-paragraph--weight-medium { --a1-paragraph-weight: var(--base-font-weight-medium); }
44
+ .a1-paragraph--weight-semibold { --a1-paragraph-weight: var(--base-font-weight-semibold); }
45
+ .a1-paragraph--weight-bold { --a1-paragraph-weight: var(--base-font-weight-bold); }
46
+
42
47
  /* Text wrap */
43
48
  .a1-paragraph--wrap-balance { text-wrap: balance; }
44
49
 
@@ -48,8 +53,3 @@
48
53
  .a1-paragraph--align-right { text-align: end; }
49
54
  .a1-paragraph--align-start { text-align: start; }
50
55
  .a1-paragraph--align-end { text-align: end; }
51
-
52
- .a1-paragraph + .a1-paragraph,
53
- .a1-paragraph + .a1-heading {
54
- margin-top: 1.5em;
55
- }
@@ -18,6 +18,14 @@ export interface SegmentedControlProps extends React.HTMLAttributes<HTMLDivEleme
18
18
  fullWidth?: boolean;
19
19
  /** Height scale. Default: "md" */
20
20
  size?: "sm" | "md" | "lg";
21
+ /**
22
+ * Label display. `"all"` (default) shows every option's label. `"selected"`
23
+ * shows the label only on the selected option; the rest render icon-only
24
+ * (using each option's `ariaLabel`/`label` for its accessible name). Options
25
+ * without an icon always show their label so they never render blank.
26
+ * "none" hides every label (fully icon-only).
27
+ */
28
+ labelMode?: "all" | "selected" | "none";
21
29
  }
22
30
 
23
31
  export declare function SegmentedControl(props: SegmentedControlProps): React.ReactElement;
@@ -11,6 +11,7 @@ export function SegmentedControl({
11
11
  onChange,
12
12
  fullWidth = false,
13
13
  size,
14
+ labelMode = "all",
14
15
  ...props
15
16
  }) {
16
17
  const items = options.map(normalize);
@@ -52,8 +53,20 @@ export function SegmentedControl({
52
53
  onKeyDown={handleKeyDown}
53
54
  >
54
55
  {items.map((opt) => {
55
- const iconOnly = Boolean(opt.icon) && !opt.label;
56
56
  const isSelected = value === opt.value;
57
+ // labelMode controls which segments show their text label:
58
+ // "all" (default) — every segment.
59
+ // "selected" — only the selected segment.
60
+ // "none" — none of them (fully icon-only).
61
+ // An option with no icon always shows its label so it never goes blank.
62
+ const wantsLabel =
63
+ Boolean(opt.label) &&
64
+ (labelMode === "none"
65
+ ? !opt.icon
66
+ : labelMode === "selected"
67
+ ? (isSelected || !opt.icon)
68
+ : true);
69
+ const iconOnly = Boolean(opt.icon) && !wantsLabel;
57
70
 
58
71
  return (
59
72
  <button
@@ -61,7 +74,7 @@ export function SegmentedControl({
61
74
  role="radio"
62
75
  type="button"
63
76
  aria-checked={isSelected}
64
- aria-label={iconOnly ? (opt.ariaLabel ?? opt.value) : undefined}
77
+ aria-label={iconOnly ? (opt.ariaLabel ?? opt.label ?? opt.value) : undefined}
65
78
  tabIndex={isSelected ? 0 : -1}
66
79
  className={[
67
80
  "a1-segment",
@@ -72,7 +85,7 @@ export function SegmentedControl({
72
85
  onClick={() => onChange?.(opt.value)}
73
86
  >
74
87
  {opt.icon && <Icon name={opt.icon} className="a1-segment__icon" />}
75
- {opt.label}
88
+ {wantsLabel ? opt.label : null}
76
89
  </button>
77
90
  );
78
91
  })}
@@ -13,6 +13,9 @@
13
13
 
14
14
  .a1-segmented--full-width {
15
15
  display: flex;
16
+ /* Fill the container so the equal-width segments actually stretch — `display:
17
+ flex` alone leaves it content-width inside a centering flex/grid parent. */
18
+ inline-size: 100%;
16
19
  }
17
20
 
18
21
  /* ─── Segment button ──────────────────────────────────────────────────────── */
@@ -58,10 +61,27 @@
58
61
  font-size: var(--semantic-font-size-body-sm);
59
62
  }
60
63
 
64
+ /* Small: tighter padding and a font size one step down from the default. */
65
+ .a1-segmented--sm .a1-segment {
66
+ padding: var(--component-segmented-segment-padding-block-sm)
67
+ var(--component-segmented-segment-padding-inline-sm);
68
+ font-size: var(--semantic-font-size-body-xs);
69
+ /* Tighter icon↔label gap at sm. */
70
+ gap: var(--base-spacing-4);
71
+ }
72
+
73
+ /* Large: roomier padding and a font size one step up. */
74
+ .a1-segmented--lg .a1-segment {
75
+ padding: var(--component-segmented-segment-padding-block-lg)
76
+ var(--component-segmented-segment-padding-inline-lg);
77
+ font-size: var(--semantic-font-size-body-md);
78
+ }
79
+
61
80
  /* ─── Icon ────────────────────────────────────────────────────────────────── */
62
81
 
63
82
  .a1-segment__icon {
64
- font-size: 1em;
83
+ /* One step larger than the label so the glyph reads clearly at the md/lg sizes. */
84
+ font-size: 1.25em;
65
85
  }
66
86
 
67
87
  /* Icon-only: match inline padding to block padding so the segment is square */
@@ -69,6 +89,16 @@
69
89
  padding-inline: var(--component-segmented-segment-padding-block);
70
90
  }
71
91
 
92
+ /* Small: a larger icon and tighter horizontal padding per segment (so an
93
+ icon-only sm strip stays compact). */
94
+ .a1-segmented--sm .a1-segment__icon {
95
+ font-size: 1.5em;
96
+ }
97
+
98
+ .a1-segmented--sm .a1-segment--icon-only {
99
+ padding-inline: var(--component-segmented-segment-padding-block-sm);
100
+ }
101
+
72
102
  /* ─── Dark mode ───────────────────────────────────────────────────────────── */
73
103
 
74
104
  .a1-theme-dark .a1-segment:not([aria-checked="true"]),
@@ -25,8 +25,10 @@
25
25
  /* ── Sizes (match the field family: compact / default / comfortable) ─────────── */
26
26
 
27
27
  .a1-slider--compact {
28
- --a1-slider-track-height: var(--base-spacing-6);
29
- --a1-slider-thumb-size: var(--base-spacing-16);
28
+ /* Track + thumb are one step up from the smallest scale so the compact slider
29
+ stays grabbable; the label/detent text keeps the compact field-family size. */
30
+ --a1-slider-track-height: var(--base-spacing-8);
31
+ --a1-slider-thumb-size: var(--base-spacing-20);
30
32
  --a1-slider-label-size: var(--semantic-font-size-form-label-compact);
31
33
  --a1-slider-label-weight: var(--component-field-compact-label-font-weight);
32
34
  --a1-slider-detent-size: var(--semantic-font-size-body-xs);
@@ -222,6 +224,12 @@
222
224
  .a1-slider--disabled {
223
225
  --a1-slider-fill-color: var(--semantic-color-border-default);
224
226
  --a1-slider-thumb-color: var(--semantic-color-border-default);
227
+ --a1-slider-active-color: var(--semantic-color-text-muted);
228
+ }
229
+
230
+ .a1-slider--disabled .a1-slider__input,
231
+ .a1-slider--disabled .a1-slider__track,
232
+ .a1-slider--disabled .a1-slider__ticks {
225
233
  opacity: 0.6;
226
234
  }
227
235
 
@@ -32,6 +32,7 @@ export function SplitButton({
32
32
  }) {
33
33
  const [open, setOpen] = useState(false);
34
34
  const toggleRef = useRef(null);
35
+ const rootRef = useRef(null);
35
36
 
36
37
  const resolvedVariant = variants.includes(variant) ? variant : "primary";
37
38
  const resolvedSize = sizes.includes(size) ? size : "md";
@@ -48,6 +49,7 @@ export function SplitButton({
48
49
 
49
50
  return (
50
51
  <div
52
+ ref={rootRef}
51
53
  className={["a1-split-button", isInert && "a1-split-button--disabled", className].filter(Boolean).join(" ")}
52
54
  {...rest}
53
55
  >
@@ -75,7 +77,7 @@ export function SplitButton({
75
77
  >
76
78
  <Icon name="arrow_drop_down" className="a1-split-button__caret" aria-hidden="true" />
77
79
  </button>
78
- <Menu open={open} onClose={() => setOpen(false)} anchorRef={toggleRef} aria-label={menuLabel}>
80
+ <Menu open={open} onClose={() => setOpen(false)} anchorRef={rootRef} aria-label={menuLabel}>
79
81
  {actions.map((action) => (
80
82
  <MenuItem
81
83
  key={action.id}
@@ -64,6 +64,9 @@
64
64
  .a1-tab-list--scrollable {
65
65
  flex: 1;
66
66
  overflow-x: auto;
67
+ /* Setting overflow-x alone makes the browser compute overflow-y to `auto`,
68
+ which lets a sub-pixel of height add a stray vertical scroll. Pin it. */
69
+ overflow-y: hidden;
67
70
  scrollbar-width: none;
68
71
  }
69
72
 
@@ -116,6 +116,13 @@ export interface ToolbarGroupProps {
116
116
  columns?: number;
117
117
  /** Show option labels as text; boolean or a responsive breakpoint object. Default: false (icon-only) */
118
118
  showLabels?: ToolbarShowLabel;
119
+ /**
120
+ * `"all"` (default) honours `showLabels` for every option. `"selected"` shows
121
+ * the label only on the currently selected option; the rest render icon/swatch-only
122
+ * and a `"none"`/empty value falls back to the standard none icon. Use it for a
123
+ * swatch picker where only the chosen swatch is named (e.g. Section surface/gradient).
124
+ */
125
+ labelMode?: "all" | "selected";
119
126
  "aria-label"?: string;
120
127
  disabled?: boolean;
121
128
  className?: string;
@@ -108,8 +108,8 @@ export function Toolbar({
108
108
  }
109
109
 
110
110
  /** Visual separator between tools within a Toolbar. */
111
- export function ToolbarDivider() {
112
- return <span className="a1-toolbar__divider" role="separator" aria-orientation="vertical" />;
111
+ export function ToolbarDivider({ className = "", ...rest }) {
112
+ return <span className={cx("a1-toolbar__divider", className)} role="separator" aria-orientation="vertical" {...rest} />;
113
113
  }
114
114
 
115
115
  function ToolButtonContent({ icon, label, showLabel, swatch }) {
@@ -196,6 +196,7 @@ export function ToolbarMenu({
196
196
  disabled = false,
197
197
  "aria-label": ariaLabel,
198
198
  className = "",
199
+ ...rest
199
200
  }) {
200
201
  const [open, setOpen] = useState(false);
201
202
  const btnRef = useRef(null);
@@ -215,6 +216,7 @@ export function ToolbarMenu({
215
216
  title={label}
216
217
  disabled={disabled}
217
218
  onClick={() => setOpen((o) => !o)}
219
+ {...rest}
218
220
  >
219
221
  <ToolButtonContent icon={buttonIcon} label={label} showLabel={showLabel} />
220
222
  <Icon name="arrow_drop_down" size="sm" className="a1-toolbar__caret" />
@@ -248,9 +250,11 @@ export function ToolbarGroup({
248
250
  options = [],
249
251
  columns,
250
252
  showLabels = false,
253
+ labelMode = "all",
251
254
  "aria-label": ariaLabel,
252
255
  disabled = false,
253
256
  className = "",
257
+ ...rest
254
258
  }) {
255
259
  const btnRefs = useRef([]);
256
260
  const grid = typeof columns === "number" && columns > 0;
@@ -295,6 +299,7 @@ export function ToolbarGroup({
295
299
  aria-label={ariaLabel}
296
300
  className={cx("a1-toolbar__group", grid && "a1-toolbar__group--grid", className)}
297
301
  style={style}
302
+ {...rest}
298
303
  >
299
304
  {options.map((opt, i) => {
300
305
  const selected = i === selectedIndex;
@@ -302,7 +307,10 @@ export function ToolbarGroup({
302
307
  // selected) is the single tab stop for the group.
303
308
  const tabIndex = selected || (selectedIndex === -1 && i === 0) ? 0 : -1;
304
309
  const optLabel = opt.label ?? String(opt.value);
305
- const icon = opt.icon ?? (!labelAlwaysShown(showLabels) && isNoneValue(opt.value) ? TOOLBAR_NONE_ICON : undefined);
310
+ // `labelMode="selected"` shows the label only on the selected option;
311
+ // the rest fall back to icon/swatch-only (and "none" to its icon).
312
+ const optShowLabel = labelMode === "selected" ? selected : showLabels;
313
+ const icon = opt.icon ?? (!labelAlwaysShown(optShowLabel) && isNoneValue(opt.value) ? TOOLBAR_NONE_ICON : undefined);
306
314
  return (
307
315
  <button
308
316
  key={String(opt.value)}
@@ -310,7 +318,7 @@ export function ToolbarGroup({
310
318
  type="button"
311
319
  role="radio"
312
320
  aria-checked={selected}
313
- aria-label={toolAriaLabel(showLabels, optLabel)}
321
+ aria-label={toolAriaLabel(optShowLabel, optLabel)}
314
322
  title={optLabel}
315
323
  tabIndex={tabIndex}
316
324
  disabled={disabled || opt.disabled}
@@ -318,7 +326,7 @@ export function ToolbarGroup({
318
326
  onClick={() => onChange?.(opt.value)}
319
327
  onKeyDown={(e) => handleKeyDown(e, i)}
320
328
  >
321
- <ToolButtonContent icon={icon} label={opt.label} showLabel={showLabels} swatch={opt.swatch} />
329
+ <ToolButtonContent icon={icon} label={opt.label} showLabel={optShowLabel} swatch={opt.swatch} />
322
330
  </button>
323
331
  );
324
332
  })}
@@ -144,6 +144,8 @@
144
144
  }
145
145
 
146
146
  .a1-top-header__nav-submenu-trigger {
147
+ min-inline-size: 24px;
148
+ min-block-size: 24px;
147
149
  padding-inline: var(--base-spacing-8);
148
150
  }
149
151
 
@@ -482,16 +482,20 @@ export function TreeMenu({
482
482
 
483
483
  if (!showExpandControls) return tree;
484
484
 
485
+ // One toggle: if anything is expanded, collapse everything; otherwise expand all.
486
+ const anyExpanded = expandedIds.size > 0;
487
+
485
488
  return (
486
489
  <div className="a1-tree-menu-root">
487
490
  <div className="a1-tree-menu__controls">
488
- <button type="button" className="a1-tree-menu__control-btn" onClick={handleExpandAll}>
489
- <Icon name="unfold_more" />
490
- Expand all
491
- </button>
492
- <button type="button" className="a1-tree-menu__control-btn" onClick={handleCollapseAll}>
493
- <Icon name="unfold_less" />
494
- Collapse all
491
+ <button
492
+ type="button"
493
+ className="a1-tree-menu__control-btn"
494
+ aria-expanded={anyExpanded}
495
+ onClick={anyExpanded ? handleCollapseAll : handleExpandAll}
496
+ >
497
+ <Icon name={anyExpanded ? 'unfold_less' : 'unfold_more'} />
498
+ {anyExpanded ? 'Collapse all' : 'Expand all'}
495
499
  </button>
496
500
  </div>
497
501
  {tree}
package/src/index.d.ts ADDED
@@ -0,0 +1,71 @@
1
+ // Aggregated type entry — generated to mirror index.js so TS consumers (and
2
+ // design-sync) see the component exports. Regenerate if index.js changes.
3
+
4
+ export { Accordion } from "./components/accordion/Accordion";
5
+ export { ContextMenu } from "./components/context-menu/ContextMenu";
6
+ export { TreeMenu } from "./components/tree-menu/TreeMenu";
7
+ export { Calendar } from "./components/calendar/Calendar";
8
+ export { PageNav } from "./components/page-nav/PageNav";
9
+ export { Blockquote } from "./components/blockquote/Blockquote";
10
+ export { Breadcrumb } from "./components/breadcrumb/Breadcrumb";
11
+ export { Notification } from "./components/notification/Notification";
12
+ export { Snackbar } from "./components/snackbar/Snackbar";
13
+ export { StatusBar } from "./components/status-bar/StatusBar";
14
+ export { CircularProgress } from "./components/circular-progress/CircularProgress";
15
+ export { StepTracker } from "./components/step-tracker/StepTracker";
16
+ export { Bleed } from "./components/bleed/Bleed";
17
+ export { IconButton } from "./components/icon-button/IconButton";
18
+ export { Button } from "./components/button/Button";
19
+ export { SplitButton } from "./components/split-button/SplitButton";
20
+ export { ButtonContainer } from "./components/button-container/ButtonContainer";
21
+ export { Card } from "./components/card/Card";
22
+ export { Cluster } from "./components/cluster/Cluster";
23
+ export { Code } from "./components/code/Code";
24
+ export { DefinitionList } from "./components/definition-list/DefinitionList";
25
+ export { Dialog } from "./components/dialog/Dialog";
26
+ export { Divider } from "./components/divider/Divider";
27
+ export { InlineEditable } from "./components/inline-editable/InlineEditable";
28
+ export { Heading, HeadingMark } from "./components/heading/Heading";
29
+ export { List, ListItem } from "./components/list/List";
30
+ export { Inset } from "./components/inset/Inset";
31
+ export { Icon } from "./components/icon/Icon";
32
+ export { Link } from "./components/link/Link";
33
+ export { Paragraph } from "./components/paragraph/Paragraph";
34
+ export { Banner } from "./components/banner/Banner";
35
+ export { Fieldset } from "./components/fieldset/Fieldset";
36
+ export { FieldRow } from "./components/field-row/FieldRow";
37
+ export { TextField } from "./components/field/TextField";
38
+ export { SelectField } from "./components/field/SelectField";
39
+ export { Autocomplete } from "./components/autocomplete/Autocomplete";
40
+ export { NumberField } from "./components/field/NumberField";
41
+ export { TextareaField } from "./components/field/TextareaField";
42
+ export { CheckboxGroup } from "./components/checkbox-group/CheckboxGroup";
43
+ export { ChoiceGroup } from "./components/choice-group/ChoiceGroup";
44
+ export { RadioGroup } from "./components/radio-group/RadioGroup";
45
+ export { Switch } from "./components/switch/Switch";
46
+ export { MessageBadge, MessageEmptyState } from "./components/message/Message";
47
+ export { Pagination } from "./components/pagination/Pagination";
48
+ export { SegmentedControl } from "./components/segmented-control/SegmentedControl";
49
+ export { Slider } from "./components/slider/Slider";
50
+ export {
51
+ Toolbar,
52
+ ToolbarToggle,
53
+ ToolbarButton,
54
+ ToolbarGroup,
55
+ ToolbarMenu,
56
+ ToolbarDivider,
57
+ TOOLBAR_NONE_ICON,
58
+ } from "./components/toolbar/Toolbar.jsx";
59
+ export { Tabs, TabList, Tab, TabPanel } from "./components/tabs/Tabs";
60
+ export { Grid, GridItem } from "./components/grid/Grid";
61
+ export { Inverse } from "./components/inverse/Inverse";
62
+ export { Section } from "./components/section/Section";
63
+ export { Stack } from "./components/stack/Stack";
64
+ export { PageLayout } from "./components/page-layout/PageLayout";
65
+ export { Menu, MenuSection, MenuItem } from "./components/menu/Menu";
66
+ export { SideNav, SideNavItem, SideNavGroup } from "./components/side-nav/SideNav";
67
+ export { BottomDrawer } from "./components/bottom-drawer/BottomDrawer";
68
+ export { DataTable } from "./components/data-table/DataTable";
69
+ export { Figure } from "./components/figure/Figure";
70
+ export { Spacer } from "./components/spacer/Spacer";
71
+ export { StickyActions } from "./components/sticky-actions/StickyActions";
package/src/index.js CHANGED
@@ -33,6 +33,7 @@ export { Fieldset } from "./components/fieldset/Fieldset.jsx";
33
33
  export { FieldRow } from "./components/field-row/FieldRow.jsx";
34
34
  export { TextField } from "./components/field/TextField.jsx";
35
35
  export { SelectField } from "./components/field/SelectField.jsx";
36
+ export { Autocomplete } from "./components/autocomplete/Autocomplete.jsx";
36
37
  export { DateField } from "./components/field/DateField.jsx";
37
38
  export { PhoneField } from "./components/field/PhoneField.jsx";
38
39
  export { ZipField, ZIP_MASKS } from "./components/field/ZipField.jsx";
@@ -69,6 +70,7 @@ export { Menu, MenuSection, MenuItem } from "./components/menu/Menu.jsx";
69
70
  export { SideNav, SideNavItem, SideNavGroup } from "./components/side-nav/SideNav.jsx";
70
71
  export { TokenSelect } from "./components/token-select/TokenSelect.jsx";
71
72
  export { BottomDrawer } from "./components/bottom-drawer/BottomDrawer.jsx";
73
+ export { BottomSheet } from "./components/bottom-sheet/BottomSheet.jsx";
72
74
  export { TopHeader } from "./components/top-header/TopHeader.jsx";
73
75
  export { DataTable } from "./components/data-table/DataTable.jsx";
74
76
  export { DataTableFilters } from "./components/data-table/DataTableFilters.jsx";