@bettercms-ai/types 1.25.0 → 1.27.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
@@ -48,7 +48,7 @@ interface ContentModel {
48
48
  * by the API but normalized to `array` + zones on write, so stored/delivered
49
49
  * content never contains them.
50
50
  */
51
- type ContentModelFieldType = "text" | "richtext" | "document" | "image" | "boolean" | "number" | "select" | "reference" | "multi-reference" | "multiReference" | "array" | "date" | "datetime" | "longtext" | "slug" | "email" | "phone" | "link" | "color" | "json" | "file" | "component-ref" | "modular" | "sections" | "location";
51
+ type ContentModelFieldType = "text" | "richtext" | "document" | "image" | "boolean" | "number" | "select" | "reference" | "multi-reference" | "multiReference" | "array" | "date" | "datetime" | "longtext" | "slug" | "email" | "phone" | "link" | "color" | "json" | "file" | "component-ref" | "modular" | "sections" | "location" | "button";
52
52
  type ContentModelKind = "model" | "block";
53
53
  /**
54
54
  * How a fieldset renders in the dock. ABSENT ≡ today's flat list (V2): a legacy `{id, name}`
@@ -326,6 +326,71 @@ declare const SPACE_BOTTOM_TOKENS: ("section-space-none" | "section-space-small"
326
326
  /** `var(--bcms-<token>,<px>)`, or "" for anything that is not a known token (closed set). */
327
327
  declare function spaceTokenCss(token: unknown): string;
328
328
 
329
+ declare const BUTTON_VARIANTS: readonly ["primary", "secondary", "tertiary", "brand", "dark", "light", "outline", "link"];
330
+ type ButtonVariant = (typeof BUTTON_VARIANTS)[number];
331
+ /** Each icon's inner SVG markup (viewBox `0 0 25 25`), by name. */
332
+ declare const BUTTON_ICONS: Readonly<Record<DockIconName, string>>;
333
+ type ButtonIcon = DockIconName;
334
+ declare const BUTTON_ICON_NAMES: readonly ["access-denied", "activity", "add", "add-circle", "add-comment", "add-document", "add-user", "api", "archive", "arrow-down", "arrow-left", "arrow-right", "arrow-top-right", "arrow-up", "asterisk", "bar-chart", "basket", "bell", "bill", "binary-document", "block-content", "block-element", "blockquote", "bold", "bolt", "book", "bookmark", "bookmark-filled", "bottle", "bug", "bulb-filled", "bulb-outline", "calendar", "case", "chart-upward", "checkmark", "checkmark-circle", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "circle", "clipboard", "clipboard-image", "clock", "close", "close-circle", "code", "code-block", "cog", "collapse", "color-wheel", "comment", "component", "compose", "compose-sparkles", "confetti", "controls", "copy", "credit-card", "crop", "cube", "dashboard", "database", "desktop", "diamond", "document", "document-pdf", "document-remove", "document-sheet", "document-text", "document-video", "document-word", "document-zip", "documents", "dot", "double-chevron-down", "double-chevron-left", "double-chevron-right", "double-chevron-up", "double-quote", "download", "drag-handle", "drop", "earth-americas", "earth-globe", "edit", "ellipsis-horizontal", "ellipsis-vertical", "empty", "enter", "enter-right", "envelope", "equal", "error-filled", "error-outline", "error-screen", "expand", "eye-closed", "eye-open", "face-happy", "face-indifferent", "face-sad", "feedback", "filter", "folder", "generate", "github", "groq", "hash", "heart", "heart-filled", "help-circle", "highlight", "home", "ice-cream", "image", "image-remove", "images", "inbox", "info-filled", "info-outline", "inline", "inline-element", "insert-above", "insert-below", "italic", "joystick", "json", "launch", "leave", "lemon", "link", "link-removed", "linkedin", "list", "lock", "logo-js", "logo-ts", "marker", "marker-removed", "master-detail", "menu", "microphone", "microphone-slash", "mobile-device", "moon", "number", "ok-hand", "olist", "overage", "package", "panel-left", "panel-right", "pause", "pin", "pin-filled", "pin-removed", "play", "plug", "presentation", "progress-50", "progress-75", "projects", "publish", "read-only", "redo", "refresh", "remove", "remove-circle", "reset", "restore", "retrieve", "retry", "revert", "robot", "rocket", "schema", "search", "select", "share", "sort", "sparkle", "sparkles", "spinner", "split-horizontal", "split-vertical", "square", "stack", "stack-compact", "star", "star-filled", "stop", "strikethrough", "string", "sun", "sync", "tablet-device", "tag", "tags", "target", "task", "terminal", "text", "th-large", "th-list", "thumbs-down", "thumbs-up", "tiers", "timeline", "toggle-arrow-right", "token", "transfer", "translate", "trash", "trend-upward", "triangle-outline", "trolley", "truncate", "twitter", "ulist", "unarchive", "underline", "undo", "unknown", "unlink", "unlock", "unpublish", "upload", "user", "users", "versions", "video", "warning-filled", "warning-outline", "wrench"];
335
+ /** A stored variant as it renders: anything off the list is Primary. */
336
+ declare function buttonVariantOf(value: unknown): ButtonVariant;
337
+ /** A stored icon as it renders: anything off the list is no icon. */
338
+ declare function buttonIconOf(value: unknown): ButtonIcon | null;
339
+ /** One icon as inline SVG sized to the button's text, hidden from assistive tech (the label names the button). */
340
+ declare function buttonIconSvg(name: ButtonIcon, cls: "bcms-btn-icon" | "bcms-btn-arrow"): string;
341
+ declare const BUTTON_SIZES: readonly ["sm", "md", "lg"];
342
+ type ButtonSizeName = (typeof BUTTON_SIZES)[number];
343
+ /**
344
+ * The value a `button` field stores: the words, the link and the look, as Sanity stores a button
345
+ * object. Only `label` and `href` are required; every look key is optional and absent reads as
346
+ * today's default (Primary, medium, no arrow, no icon, same tab).
347
+ */
348
+ interface ButtonValue {
349
+ label: string;
350
+ href: string;
351
+ variant?: ButtonVariant;
352
+ size?: ButtonSizeName;
353
+ arrow?: boolean;
354
+ icon?: ButtonIcon | null;
355
+ newTab?: boolean;
356
+ }
357
+ /** A stored button value as it renders: every key read through the same allow-lists as a block. */
358
+ declare function readButtonValue(value: unknown): Required<ButtonValue>;
359
+ /** Why a value is not a button, or null when it is. Look keys are checked only when present. */
360
+ declare function buttonValueProblem(value: unknown): string | null;
361
+ /** The look keys an instance of a Button component may override, beside its label and link. */
362
+ declare const BUTTON_LOOK_KEYS: readonly ["variant", "size", "arrow", "icon", "newTab"];
363
+ type ButtonLookKey = (typeof BUTTON_LOOK_KEYS)[number];
364
+ interface PropDefLike {
365
+ key: string;
366
+ label?: string;
367
+ type?: string;
368
+ target: {
369
+ blockId: string;
370
+ path: string;
371
+ };
372
+ }
373
+ interface ComponentLike<P extends PropDefLike> {
374
+ category?: string | null;
375
+ blockJson?: unknown;
376
+ props?: readonly P[] | null;
377
+ }
378
+ /**
379
+ * A component's prop declarations, plus — on a Button component (category `button`, one button
380
+ * block) — a look prop for every `BUTTON_LOOK_KEYS` key it does not declare itself, each driving
381
+ * that block's `props.<key>`. So an INSTANCE of any Button carries its own look in its overrides
382
+ * (`{ text, href, variant, arrow, … }`) with nothing to backfill: every renderer that applies
383
+ * overrides passes this instead of `props`. Any other component is returned as declared, so a
384
+ * section with one CTA never has a stray `variant` override land on its button.
385
+ */
386
+ declare function withButtonLookProps<P extends PropDefLike>(def: ComponentLike<P>): P[];
387
+ /**
388
+ * One instance of a Button component as a `ButtonValue` — the definition's button with the
389
+ * instance's overrides written onto it — for a site rendering the instance with `BcmsButton`.
390
+ * Null when the component is not a Button (not category `button`, or not exactly one button).
391
+ */
392
+ declare function buttonValueOfInstance<P extends PropDefLike>(def: ComponentLike<P>, overrides: Record<string, unknown> | null | undefined): Required<ButtonValue> | null;
393
+
329
394
  /**
330
395
  * ContentBlock — a discriminated union of all CMS block types.
331
396
  * Each block has a `type` discriminator and a `props` object
@@ -510,11 +575,18 @@ interface ImageBlock {
510
575
  interface ButtonProps {
511
576
  text: string;
512
577
  href: string;
513
- variant?: "primary" | "secondary";
578
+ /** Absent or off the list ⇒ "primary". Renders `bcms-btn-{variant}`. */
579
+ variant?: ButtonVariant;
514
580
  /** Padding + font-size step. Absent ⇒ "md", today's button. sm/lg render `bcms-btn-sm|lg`. */
515
581
  size?: "sm" | "md" | "lg";
516
582
  /** Stretch to the column's width. Absent ⇒ false. true renders `bcms-btn-full`. */
517
583
  fullWidth?: boolean;
584
+ /** Draw a trailing arrow after the text. Absent ⇒ false. */
585
+ arrow?: boolean;
586
+ /** A leading icon from `BUTTON_ICONS`. Absent, null or off the list ⇒ none. */
587
+ icon?: ButtonIcon | null;
588
+ /** Open the link in a new tab (`target="_blank" rel="noopener noreferrer"`). Absent ⇒ false. */
589
+ newTab?: boolean;
518
590
  }
519
591
  interface ButtonBlock {
520
592
  type: "button";
@@ -2308,4 +2380,4 @@ declare function regionOf<E extends {
2308
2380
  el: E;
2309
2381
  }[], el: unknown): string | null;
2310
2382
 
2311
- export { type AlignToken, type ApiError, type ApiKey, type ApiKeyPermission, type ApiKeyTokenType, type ArrayZoneConfig, type AssertEqual, type AuthResponse, type AuthSession, type AuthUser, BLOCK_BINDINGS, type BetterCMSErrorCode, type BgToken, type BindingKind, type BlockBinding, type BlockHoverStyle, type BlockStyle, type BlockType, type ButtonBlock, type ButtonLinkCandidate, type ButtonProps, COMPONENT_PROP_TYPES, type CanonicalInputDefinition, type CollectionBlock, type CollectionProps, type ColorToken, type ColumnsBlock, type ColumnsProps, type Component, type ComponentBlock, type ComponentCategory, type ComponentFormPropRef, type ComponentPropDef, type ComponentPropType, type ComponentPropUi, type ComponentProps, type ComponentSubField, type ComponentVariantGroup, type Content, type ContentBlock, type ContentEntry, type ContentModel, type ContentModelField, type ContentModelFieldType, type ContentModelFieldUi, type ContentPageResult, type ContentResponse, type ContentWidthToken, type CornerToken, DIALOG_SELECTOR, DOCK_BUDGET, DOCK_ICON_NAMES, DOCK_ICON_NAME_SET, type DeepReadonly, type DeliveredLayout, type DeliveryComponent, type DeliveryEntry, type DeliveryEntrySeo, type DeliveryList, type DeliveryPage, type DerivedLocator, type DockBudget, type DockFieldLike, type DockFieldsetLike, type DockIconName, type DockLane, type DockNode, type DockPropGroupLike, type DockScreen, type ElementLike, type ExpandedBinding, FOOTER_SECTION_ID, type FieldConfig, type Fieldset, type FieldsetKind, type FieldsetUiBefore, type FontSizeToken, type FooterBlock, type FooterColumn, type FooterProps, type Form, type FormBlock, type FormField, type FormProps, type FormSubmission, type HeadingBlock, type HeadingProps, type ImageBlock, type ImageProps, LANDMARK_SELECTOR, LAYOUT_SECTION_ICONS, LAYOUT_SECTION_ICON_SET, type LandmarkChainElement, type LandmarkElement, type LayoutComponentItem, type LayoutDataDocument, type LayoutFieldDefinition, type LayoutFieldItem, type LayoutFieldType, type LayoutScalarFieldType, type LayoutSection, type LayoutSectionIcon, type LayoutSectionItem, type LayoutStructureDocument, type LayoutZone, type LocatorGrammar, MAIN_SELECTOR, type ManagementLayoutCommand, type MediaAsset, type MediaCaptionTrack, type MediaFieldValue, NAVIGATION_SECTION_ID, type NavLink, type NavbarBlock, type NavbarProps, PAGE_CONTENT_ANCHOR_ID, type Page, type PageLayoutOverrideDataDocument, type PageLayoutOverrideDocument, type PageLayoutOverrideState, type PageLayoutOverrideStructureDocument, type PageLayoutSectionOverride, type PageLayoutSectionStructureOverride, type PageMetaJson, type PageOnlyLayoutSection, type PageSectionPlacement, type PaginatedResult, type Perspective, type PortableTextDocument, type PortableTextNode, type PropGroup, type RadiusToken, type Redirect, type ReservedLayoutSection, type ResolvedLayoutNode, type RichTextBlock, type RichTextProps, SECTION_DOCTRINE, SECTION_SPACE_TOKENS, SPACE_BOTTOM_TOKENS, SPACE_STEP_TOKENS, type SectionBlock, type SectionProps, type SectionSpaceToken, type ShadowToken, type SignInInput, type SignUpInput, type SiteSeoDefaults, type SlideItem, type SliderBlock, type SliderProps, type SpaceStepToken, type SpaceToken, type SpacerBlock, type SpacerProps, type TabItem, type TabsBlock, type TabsProps, type TextBlock, type TextProps, type ThemeToken, type UiBefore, type UiOrigin, type VariantInputMapping, type VideoBlock, type VideoProps, type WeightToken, type Workspace, type ZoneField, blockStyleToCss, buttonLinkPairs, candidateRole, componentInstanceAddresses, componentPropTargetKey, dockBudget, dockScreens, expandBlockBindings, formatPropsAttribute, getBlockType, isBlock, isChromeLandmark, keyWords, landmarkRegions, locatorFor, parsePropsAttribute, readPath, regionOf, spaceTokenCss };
2383
+ export { type AlignToken, type ApiError, type ApiKey, type ApiKeyPermission, type ApiKeyTokenType, type ArrayZoneConfig, type AssertEqual, type AuthResponse, type AuthSession, type AuthUser, BLOCK_BINDINGS, BUTTON_ICONS, BUTTON_ICON_NAMES, BUTTON_LOOK_KEYS, BUTTON_SIZES, BUTTON_VARIANTS, type BetterCMSErrorCode, type BgToken, type BindingKind, type BlockBinding, type BlockHoverStyle, type BlockStyle, type BlockType, type ButtonBlock, type ButtonIcon, type ButtonLinkCandidate, type ButtonLookKey, type ButtonProps, type ButtonSizeName, type ButtonValue, type ButtonVariant, COMPONENT_PROP_TYPES, type CanonicalInputDefinition, type CollectionBlock, type CollectionProps, type ColorToken, type ColumnsBlock, type ColumnsProps, type Component, type ComponentBlock, type ComponentCategory, type ComponentFormPropRef, type ComponentPropDef, type ComponentPropType, type ComponentPropUi, type ComponentProps, type ComponentSubField, type ComponentVariantGroup, type Content, type ContentBlock, type ContentEntry, type ContentModel, type ContentModelField, type ContentModelFieldType, type ContentModelFieldUi, type ContentPageResult, type ContentResponse, type ContentWidthToken, type CornerToken, DIALOG_SELECTOR, DOCK_BUDGET, DOCK_ICON_NAMES, DOCK_ICON_NAME_SET, type DeepReadonly, type DeliveredLayout, type DeliveryComponent, type DeliveryEntry, type DeliveryEntrySeo, type DeliveryList, type DeliveryPage, type DerivedLocator, type DockBudget, type DockFieldLike, type DockFieldsetLike, type DockIconName, type DockLane, type DockNode, type DockPropGroupLike, type DockScreen, type ElementLike, type ExpandedBinding, FOOTER_SECTION_ID, type FieldConfig, type Fieldset, type FieldsetKind, type FieldsetUiBefore, type FontSizeToken, type FooterBlock, type FooterColumn, type FooterProps, type Form, type FormBlock, type FormField, type FormProps, type FormSubmission, type HeadingBlock, type HeadingProps, type ImageBlock, type ImageProps, LANDMARK_SELECTOR, LAYOUT_SECTION_ICONS, LAYOUT_SECTION_ICON_SET, type LandmarkChainElement, type LandmarkElement, type LayoutComponentItem, type LayoutDataDocument, type LayoutFieldDefinition, type LayoutFieldItem, type LayoutFieldType, type LayoutScalarFieldType, type LayoutSection, type LayoutSectionIcon, type LayoutSectionItem, type LayoutStructureDocument, type LayoutZone, type LocatorGrammar, MAIN_SELECTOR, type ManagementLayoutCommand, type MediaAsset, type MediaCaptionTrack, type MediaFieldValue, NAVIGATION_SECTION_ID, type NavLink, type NavbarBlock, type NavbarProps, PAGE_CONTENT_ANCHOR_ID, type Page, type PageLayoutOverrideDataDocument, type PageLayoutOverrideDocument, type PageLayoutOverrideState, type PageLayoutOverrideStructureDocument, type PageLayoutSectionOverride, type PageLayoutSectionStructureOverride, type PageMetaJson, type PageOnlyLayoutSection, type PageSectionPlacement, type PaginatedResult, type Perspective, type PortableTextDocument, type PortableTextNode, type PropGroup, type RadiusToken, type Redirect, type ReservedLayoutSection, type ResolvedLayoutNode, type RichTextBlock, type RichTextProps, SECTION_DOCTRINE, SECTION_SPACE_TOKENS, SPACE_BOTTOM_TOKENS, SPACE_STEP_TOKENS, type SectionBlock, type SectionProps, type SectionSpaceToken, type ShadowToken, type SignInInput, type SignUpInput, type SiteSeoDefaults, type SlideItem, type SliderBlock, type SliderProps, type SpaceStepToken, type SpaceToken, type SpacerBlock, type SpacerProps, type TabItem, type TabsBlock, type TabsProps, type TextBlock, type TextProps, type ThemeToken, type UiBefore, type UiOrigin, type VariantInputMapping, type VideoBlock, type VideoProps, type WeightToken, type Workspace, type ZoneField, blockStyleToCss, buttonIconOf, buttonIconSvg, buttonLinkPairs, buttonValueOfInstance, buttonValueProblem, buttonVariantOf, candidateRole, componentInstanceAddresses, componentPropTargetKey, dockBudget, dockScreens, expandBlockBindings, formatPropsAttribute, getBlockType, isBlock, isChromeLandmark, keyWords, landmarkRegions, locatorFor, parsePropsAttribute, readButtonValue, readPath, regionOf, spaceTokenCss, withButtonLookProps };
package/dist/index.js CHANGED
@@ -2601,6 +2601,95 @@ function buttonLinkPairs(candidates) {
2601
2601
  return [...proposals.values()].filter(([t, l]) => !ambiguous.has(t) && !ambiguous.has(l) && uses.get(t) === 1 && uses.get(l) === 1).sort((a, b) => Math.min(...a) - Math.min(...b));
2602
2602
  }
2603
2603
 
2604
+ // src/button-look.ts
2605
+ import { ICON_MARKUP, iconSvg } from "@bettercms-ai/icons/markup";
2606
+ var BUTTON_VARIANTS = ["primary", "secondary", "tertiary", "brand", "dark", "light", "outline", "link"];
2607
+ var BUTTON_ICONS = ICON_MARKUP;
2608
+ var BUTTON_ICON_NAMES = DOCK_ICON_NAMES;
2609
+ function buttonVariantOf(value) {
2610
+ return BUTTON_VARIANTS.includes(value) ? value : "primary";
2611
+ }
2612
+ function buttonIconOf(value) {
2613
+ return typeof value === "string" && DOCK_ICON_NAME_SET.has(value) ? value : null;
2614
+ }
2615
+ function buttonIconSvg(name, cls) {
2616
+ return iconSvg(name, cls);
2617
+ }
2618
+ var BUTTON_SIZES = ["sm", "md", "lg"];
2619
+ var hrefOf = (href) => typeof href === "string" ? href : href && typeof href === "object" && typeof href.href === "string" ? href.href : null;
2620
+ function readButtonValue(value) {
2621
+ const v = value && typeof value === "object" ? value : {};
2622
+ return {
2623
+ label: typeof v.label === "string" ? v.label : "",
2624
+ href: hrefOf(v.href) ?? "",
2625
+ variant: buttonVariantOf(v.variant),
2626
+ size: BUTTON_SIZES.includes(v.size) ? v.size : "md",
2627
+ arrow: v.arrow === true,
2628
+ icon: buttonIconOf(v.icon),
2629
+ newTab: v.newTab === true
2630
+ };
2631
+ }
2632
+ function buttonValueProblem(value) {
2633
+ if (!value || typeof value !== "object" || Array.isArray(value)) return "must be a { label, href } button";
2634
+ const v = value;
2635
+ if (typeof v.label !== "string") return "needs a label";
2636
+ if (hrefOf(v.href) === null) return "needs an href";
2637
+ if (v.variant !== void 0 && !BUTTON_VARIANTS.includes(v.variant)) return `has an unknown variant "${String(v.variant)}"`;
2638
+ if (v.size !== void 0 && !BUTTON_SIZES.includes(v.size)) return `has an unknown size "${String(v.size)}"`;
2639
+ if (v.arrow !== void 0 && typeof v.arrow !== "boolean") return "arrow must be true or false";
2640
+ if (v.newTab !== void 0 && typeof v.newTab !== "boolean") return "newTab must be true or false";
2641
+ if (v.icon !== void 0 && v.icon !== null && buttonIconOf(v.icon) === null) return `has an unknown icon "${String(v.icon)}"`;
2642
+ return null;
2643
+ }
2644
+ var BUTTON_LOOK_KEYS = ["variant", "size", "arrow", "icon", "newTab"];
2645
+ function soleButtonId(blockJson) {
2646
+ const ids = [];
2647
+ const walk = (list) => {
2648
+ if (!Array.isArray(list)) return;
2649
+ for (const b of list) {
2650
+ if (b?.type === "button" && typeof b.id === "string") ids.push(b.id);
2651
+ walk(b?.props?.children);
2652
+ if (Array.isArray(b?.props?.columns)) for (const column of b.props.columns) walk(column);
2653
+ }
2654
+ };
2655
+ walk(blockJson);
2656
+ return ids.length === 1 ? ids[0] : null;
2657
+ }
2658
+ var LOOK_PROP_TYPE = { variant: "text", size: "text", arrow: "boolean", icon: "text", newTab: "boolean" };
2659
+ var LOOK_PROP_LABEL = { variant: "Style", size: "Size", arrow: "Show arrow", icon: "Leading icon", newTab: "Open in new tab" };
2660
+ function withButtonLookProps(def) {
2661
+ const props = [...def.props ?? []];
2662
+ if (def.category !== "button") return props;
2663
+ const blockId = soleButtonId(def.blockJson);
2664
+ if (!blockId) return props;
2665
+ for (const key of BUTTON_LOOK_KEYS) {
2666
+ if (props.some((p) => p.key === key)) continue;
2667
+ props.push({ key, label: LOOK_PROP_LABEL[key], type: LOOK_PROP_TYPE[key], target: { blockId, path: `props.${key}` } });
2668
+ }
2669
+ return props;
2670
+ }
2671
+ function buttonValueOfInstance(def, overrides) {
2672
+ if (def.category !== "button") return null;
2673
+ const blockId = soleButtonId(def.blockJson);
2674
+ if (!blockId) return null;
2675
+ const found = [];
2676
+ const walk = (list) => {
2677
+ if (!Array.isArray(list)) return;
2678
+ for (const b of list) {
2679
+ if (b?.id === blockId) found.push(b);
2680
+ walk(b?.props?.children);
2681
+ if (Array.isArray(b?.props?.columns)) for (const column of b.props.columns) walk(column);
2682
+ }
2683
+ };
2684
+ walk(def.blockJson);
2685
+ const props = { ...found[0]?.props ?? {} };
2686
+ for (const p of withButtonLookProps(def)) {
2687
+ if (p.target.blockId !== blockId || !p.target.path.startsWith("props.") || !overrides || !(p.key in overrides)) continue;
2688
+ props[p.target.path.slice("props.".length)] = overrides[p.key];
2689
+ }
2690
+ return readButtonValue({ ...props, label: props.text });
2691
+ }
2692
+
2604
2693
  // src/locator.ts
2605
2694
  var LANDMARK_SELECTOR = "header,nav,footer";
2606
2695
  var LANDMARK_TAGS = /* @__PURE__ */ new Set(["HEADER", "NAV", "FOOTER"]);
@@ -2663,6 +2752,11 @@ function regionOf(regions, el) {
2663
2752
  }
2664
2753
  export {
2665
2754
  BLOCK_BINDINGS,
2755
+ BUTTON_ICONS,
2756
+ BUTTON_ICON_NAMES,
2757
+ BUTTON_LOOK_KEYS,
2758
+ BUTTON_SIZES,
2759
+ BUTTON_VARIANTS,
2666
2760
  COMPONENT_PROP_TYPES,
2667
2761
  DIALOG_SELECTOR,
2668
2762
  DOCK_BUDGET,
@@ -2680,7 +2774,12 @@ export {
2680
2774
  SPACE_BOTTOM_TOKENS,
2681
2775
  SPACE_STEP_TOKENS,
2682
2776
  blockStyleToCss,
2777
+ buttonIconOf,
2778
+ buttonIconSvg,
2683
2779
  buttonLinkPairs,
2780
+ buttonValueOfInstance,
2781
+ buttonValueProblem,
2782
+ buttonVariantOf,
2684
2783
  candidateRole,
2685
2784
  componentInstanceAddresses,
2686
2785
  componentPropTargetKey,
@@ -2695,8 +2794,10 @@ export {
2695
2794
  landmarkRegions,
2696
2795
  locatorFor,
2697
2796
  parsePropsAttribute,
2797
+ readButtonValue,
2698
2798
  readPath,
2699
2799
  regionOf,
2700
- spaceTokenCss
2800
+ spaceTokenCss,
2801
+ withButtonLookProps
2701
2802
  };
2702
2803
  //# sourceMappingURL=index.js.map