Greeter.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { NotificationService } from '@vendure/admin-ui/core';
  2. import { Card, useInjector, usePageMetadata } from '@vendure/admin-ui/react';
  3. import React, { useState, useEffect } from 'react';
  4. export function Greeter(props: { name: string }) {
  5. const notificationService = useInjector(NotificationService);
  6. const { setTitle, setBreadcrumb } = usePageMetadata();
  7. const [titleValue, setTitleValue] = useState('');
  8. const [breadcrumbValue, setBreadcrumbValue] = useState('Greeter');
  9. useEffect(() => {
  10. setTitle('My Page');
  11. setBreadcrumb([
  12. { link: ['./parent'], label: 'Parent Page' },
  13. { link: ['./'], label: 'This Page' },
  14. ]);
  15. }, []);
  16. function handleClick() {
  17. notificationService.success('You clicked me!');
  18. }
  19. return (
  20. <div className="page-block">
  21. <Card title={`Hello ${props.name}`}>
  22. <button className="button primary" onClick={handleClick}>
  23. Click me
  24. </button>
  25. <div className="form-grid">
  26. <div>
  27. <input value={titleValue} onInput={e => setTitleValue((e.target as any).value)} />
  28. <button className="button secondary" onClick={() => setTitle(titleValue)}>
  29. Set title
  30. </button>
  31. </div>
  32. <div>
  33. <input
  34. value={breadcrumbValue}
  35. onInput={e => setBreadcrumbValue((e.target as any).value)}
  36. />
  37. <button className="button secondary" onClick={() => setBreadcrumb(breadcrumbValue)}>
  38. Set breadcrumb
  39. </button>
  40. </div>
  41. </div>
  42. </Card>
  43. <Card title={'Buttons'}>
  44. <div className="flex center" style={{ gap: '12px' }}>
  45. <button className="button primary">Primary</button>
  46. <button className="button secondary">Secondary</button>
  47. <button className="button success">Success</button>
  48. <button className="button warning">Warning</button>
  49. <button className="button danger">Danger</button>
  50. <button className="button-ghost">Ghost</button>
  51. <button className="button-small">Small</button>
  52. </div>
  53. </Card>
  54. <Card title={'Testing the card'}>Yolo</Card>
  55. </div>
  56. );
  57. }