Greeter.tsx 2.9 KB

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