{"version":3,"file":"ButtonLoadMore.BXEW2RWR.mjs","names":["Tokens","ButtonLoadMoreInternal","useMemo"],"sources":["https:/framerusercontent.com/modules/HG3rkR7CeI0r9DmyhK9l/tUw7Ji3y3nyGIDwbzpev/ButtonLoadMore.js"],"sourcesContent":["/**\n * ButtonLoadMore - Ghost load-more control with default, loading, and hidden variants.\n *\n * Thin wrapper around {@link Button} locked to the ghost variant. Use for\n * paginated lists and collection \"show more\" actions. In the loading variant,\n * the same ghost pill shows a centered spinner (no label). Hidden removes\n * the control from the layout (e.g. when all items are loaded).\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 48\n */// 1. React and React types\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useMemo}from\"react\";// 2. Framer Motion (not applicable)\n// 3. Framer API\nimport{addPropertyControls,ControlType}from\"framer\";// 4. Design system\nimport Tokens from\"https://framerusercontent.com/modules/HjvhO8Re4WnlZSTpJli8/jbCIdsxnmVrJOsDqxSxp/index.js\";import{FRAMER_BREAKPOINT_DESCRIPTION,FRAMER_ON_CLICK_DESCRIPTION,FRAMER_THEME_DESCRIPTION_SURFACE_WITH_CHILDREN}from\"https://framerusercontent.com/modules/TvAAtdjNtwUg3Y1lriXj/Wh3HNug8gnAeRVrciJOW/propertyControlCopy.js\";// 5. Local\nimport Button from\"https://framerusercontent.com/modules/FkbrVksyiwmgD2bFsrtv/yqNW8M8ud04alQwqMbsR/Button.js\";/** Symmetric ghost-button padding when loading (spinner only, no label). Matches Button medium defaults. */function getLoadingSpinnerPadding(breakpoint,size){const resolvedBreakpoint=breakpoint??\"desktop\";if(size===\"large\"){return`${Tokens.getResponsiveSpacing(16,resolvedBreakpoint)} ${Tokens.getResponsiveSpacing(32,resolvedBreakpoint)}`;}else if(size===\"small\"){return`${Tokens.getResponsiveSpacing(8,resolvedBreakpoint)} ${Tokens.getResponsiveSpacing(16,resolvedBreakpoint)}`;}else{return`${Tokens.getResponsiveSpacing(12,resolvedBreakpoint)} ${Tokens.getResponsiveSpacing(24,resolvedBreakpoint)}`;}}/**\n * ButtonLoadMoreInternal - Internal forwardRef component.\n */const ButtonLoadMoreInternal=/*#__PURE__*/forwardRef(function ButtonLoadMoreInternal({breakpoint,theme=\"default\",size=\"medium\",widthMode=\"intrinsic\",variant=\"default\",label=\"Load more\",onClick,ariaLabel=\"\",id=\"button-load-more\",style},ref){const isLoading=variant===\"loading\";const resolvedId=id?.trim()||undefined;const accessibleName=ariaLabel.trim()||label.trim()||\"Load more\";const buttonAriaLabel=isLoading||ariaLabel.trim()!==\"\"?accessibleName:undefined;const mergedStyle=useMemo(()=>{if(!isLoading){return style;}else{return{...style,padding:getLoadingSpinnerPadding(breakpoint,size)};}},[breakpoint,isLoading,size,style]);if(variant===\"hidden\"){return null;}return /*#__PURE__*/_jsx(Button,{ref:ref,breakpoint:breakpoint,theme:theme,variant:\"ghost\",size:size,widthMode:widthMode,label:isLoading?\"\":label,iconPosition:isLoading?\"leading\":\"none\",loading:isLoading,ariaLabel:buttonAriaLabel,onClick:onClick,id:resolvedId,style:mergedStyle});});/**\n * ButtonLoadMore — Framer-compatible wrapper (plain default export so the code-link\n * parser registers the component; `forwardRef` default exports are opaque to Framer).\n */export default function ButtonLoadMore(props){const{ref,...rest}=props;return /*#__PURE__*/_jsx(ButtonLoadMoreInternal,{...rest,ref:ref});}ButtonLoadMore.displayName=\"Button Load More - Atom\";addPropertyControls(ButtonLoadMore,{// ─── 1. Content ────────────────────────────────────────────────────────────\nlabel:{type:ControlType.String,title:\"Button Label\",defaultValue:\"Load more\",placeholder:\"e.g. Load more, Show more\",description:\"Type the visible words on the button—keep them short and action-focused.\",hidden:props=>props.variant===\"hidden\"},// ─── 6. Configuration ──────────────────────────────────────────────────────\nvariant:{type:ControlType.Enum,title:\"Variant\",options:[\"default\",\"loading\",\"hidden\"],optionTitles:[\"Default\",\"Loading\",\"Hidden\"],displaySegmentedControl:true,defaultValue:\"default\",description:\"Default shows the label; Loading shows the same ghost pill with a centered spinner only; Hidden removes the button from the page.\"},size:{type:ControlType.Enum,title:\"Size\",options:[\"large\",\"medium\",\"small\"],optionTitles:[\"Large\",\"Medium\",\"Small\"],displaySegmentedControl:true,defaultValue:\"medium\",description:\"Choose Medium for most list footers; Small for dense layouts; Large for hero-style lists.\",hidden:props=>props.variant===\"hidden\"},widthMode:{type:ControlType.Enum,title:\"Width Mode\",options:[\"responsive\",\"full\",\"intrinsic\"],optionTitles:[\"Responsive\",\"Full\",\"Intrinsic\"],defaultValue:\"intrinsic\",displaySegmentedControl:true,description:\"Intrinsic keeps the pill width on desktop; Full spans the row; Responsive is full width on phone only.\",hidden:props=>props.variant===\"hidden\"},// ─── 7. Behavior ─────────────────────────────────────────────────────────\nonClick:{type:ControlType.EventHandler,title:\"On Click\",description:FRAMER_ON_CLICK_DESCRIPTION,hidden:props=>props.variant===\"hidden\"},// ─── 8. Accessibility ────────────────────────────────────────────────────\nariaLabel:{type:ControlType.String,title:\"ARIA Label\",defaultValue:\"\",placeholder:\"e.g. Load more events\",description:\"Accessible name override—match Button Label for typical lists; set when the spoken name should differ.\",hidden:props=>props.variant===\"hidden\"},// ─── 9. Advanced ─────────────────────────────────────────────────────────\nid:{type:ControlType.String,title:\"ID\",defaultValue:\"button-load-more\",placeholder:\"e.g. events-load-more\",description:\"Set a unique id when you anchor to this control or tag it for analytics (e.g. Contentsquare); clear or change it if several load-more buttons on one page would collide.\",hidden:props=>props.variant===\"hidden\"},// ─── 10. System ────────────────────────────────────────────────────────────\nbreakpoint:{type:ControlType.Enum,title:\"Breakpoint\",options:[\"desktop\",\"tablet\",\"phone\"],optionTitles:[\"Desktop\",\"Tablet\",\"Phone\"],displaySegmentedControl:false,defaultValue:\"desktop\",description:FRAMER_BREAKPOINT_DESCRIPTION},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"default\",\"inverted\"],optionTitles:[\"Default\",\"Inverted\"],displaySegmentedControl:true,defaultValue:\"default\",description:FRAMER_THEME_DESCRIPTION_SURFACE_WITH_CHILDREN,hidden:props=>props.variant===\"hidden\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"ButtonLoadMoreVariant\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ButtonLoadMoreProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"ButtonLoadMore\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}