/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
import React from 'react';
import AnchorLink from '.';

export default {
  title: 'AnchorLink',
  component: AnchorLink,
};

export const InteractiveAnchorLink = (args: any) => (
  <AnchorLink anchorLinkId="link" {...args} />
);

const PLACEMENTS = ['right', 'left', 'top', 'bottom'];

InteractiveAnchorLink.args = {
  showShortLinkButton: true,
  placement: PLACEMENTS[0],
};

InteractiveAnchorLink.argTypes = {
  type: {
    placement: { type: 'select', options: PLACEMENTS },
  },
};

InteractiveAnchorLink.story = {
  parameters: {
    knobs: {
      disable: true,
    },
  },
};
