Website for showcasing all features of Tesseract Web.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

954 line
34 KiB

  1. import { NextPage } from 'next';
  2. import { TextControlSize, TextControlStyle } from '@tesseract-design/web-base-textcontrol';
  3. import * as Option from '@tesseract-design/web-option-react';
  4. import { CheckControlAppearance } from '@tesseract-design/web-base-checkcontrol';
  5. import { ButtonSize, ButtonVariant } from '@tesseract-design/web-base-button';
  6. type Props = {
  7. options: Option.SelectOption[],
  8. }
  9. const OptionPage: NextPage<Props> = ({
  10. options = [
  11. {
  12. label: 'Fruits',
  13. children: [
  14. {
  15. label: 'Mango',
  16. value: 'mango',
  17. },
  18. {
  19. label: 'Strawberry',
  20. value: 'strawberry',
  21. },
  22. {
  23. label: 'Avocado',
  24. value: 'avocado',
  25. },
  26. {
  27. label: 'Grapes',
  28. value: 'grapes',
  29. },
  30. ],
  31. },
  32. {
  33. label: 'Non-fruits',
  34. children: [
  35. {
  36. label: 'Chocolate',
  37. value: 'chocolate',
  38. },
  39. {
  40. label: 'Milk',
  41. value: 'milk',
  42. },
  43. {
  44. label: 'Coffee',
  45. value: 'coffee',
  46. }
  47. ],
  48. },
  49. ],
  50. }) => {
  51. return (
  52. <main className="my-16 md:my-32">
  53. <section>
  54. <div className="container mx-auto px-4">
  55. <h1>
  56. Option
  57. </h1>
  58. <div>
  59. <section>
  60. <h2>
  61. DropdownSelect
  62. </h2>
  63. <div>
  64. <section>
  65. <h3>
  66. Default
  67. </h3>
  68. <div>
  69. <div className="grid md:grid-cols-2 gap-4 my-4">
  70. <div>
  71. <Option.DropdownSelect
  72. size={TextControlSize.SMALL}
  73. label="Select"
  74. hint="Type anything here&hellip;"
  75. block
  76. options={options}
  77. />
  78. </div>
  79. <div>
  80. <Option.DropdownSelect
  81. border
  82. size={TextControlSize.SMALL}
  83. label="Select"
  84. hint="Type anything here&hellip;"
  85. block
  86. options={options}
  87. />
  88. </div>
  89. <div>
  90. <Option.DropdownSelect
  91. label="Select"
  92. hint="Type anything here&hellip;"
  93. block
  94. options={options}
  95. />
  96. </div>
  97. <div>
  98. <Option.DropdownSelect
  99. border
  100. label="Select"
  101. hint="Type anything here&hellip;"
  102. block
  103. options={options}
  104. />
  105. </div>
  106. <div>
  107. <Option.DropdownSelect
  108. size={TextControlSize.LARGE}
  109. label="Select"
  110. hint="Type anything here&hellip;"
  111. block
  112. options={options}
  113. />
  114. </div>
  115. <div>
  116. <Option.DropdownSelect
  117. border
  118. size={TextControlSize.LARGE}
  119. label="Select"
  120. hint="Type anything here&hellip;"
  121. block
  122. options={options}
  123. />
  124. </div>
  125. <div>
  126. <Option.DropdownSelect
  127. label="Select"
  128. hint="Type anything here&hellip;"
  129. block
  130. disabled
  131. options={options}
  132. />
  133. </div>
  134. <div>
  135. <Option.DropdownSelect
  136. border
  137. label="Select"
  138. hint="Type anything here&hellip;"
  139. block
  140. disabled
  141. options={options}
  142. />
  143. </div>
  144. </div>
  145. <form>
  146. <fieldset disabled className="contents">
  147. <legend className="sr-only">Disabled Test</legend>
  148. <div className="grid grid-cols-6 gap-4 my-4">
  149. <div className="col-span-2">
  150. <Option.DropdownSelect
  151. label="First Name"
  152. block
  153. border
  154. />
  155. </div>
  156. <div className="col-span-2">
  157. <Option.DropdownSelect
  158. label="Middle Name"
  159. block
  160. border
  161. />
  162. </div>
  163. <div className="col-span-2">
  164. <Option.DropdownSelect
  165. label="Last Name"
  166. block
  167. border
  168. />
  169. </div>
  170. <div className="col-span-3">
  171. <Option.DropdownSelect
  172. label="Username"
  173. block
  174. border
  175. />
  176. </div>
  177. <div className="col-span-3">
  178. <Option.DropdownSelect
  179. label="Title"
  180. block
  181. border
  182. />
  183. </div>
  184. </div>
  185. </fieldset>
  186. </form>
  187. <form>
  188. <div>
  189. Hi, my name is
  190. {' '}
  191. <Option.DropdownSelect
  192. border
  193. label="Name"
  194. size={TextControlSize.SMALL}
  195. />
  196. {' '}
  197. but you can call me
  198. {' '}
  199. <Option.DropdownSelect
  200. border
  201. label="Nickname"
  202. size={TextControlSize.SMALL}
  203. />
  204. .
  205. </div>
  206. </form>
  207. </div>
  208. </section>
  209. <section>
  210. <h3>Alternate</h3>
  211. <div>
  212. <div className="grid md:grid-cols-2 gap-4">
  213. <div>
  214. <Option.DropdownSelect
  215. style={TextControlStyle.ALTERNATE}
  216. size={TextControlSize.SMALL}
  217. label="Select"
  218. hint="Type anything here&hellip;"
  219. block
  220. options={options}
  221. />
  222. </div>
  223. <div>
  224. <Option.DropdownSelect
  225. border
  226. style={TextControlStyle.ALTERNATE}
  227. size={TextControlSize.SMALL}
  228. label="Select"
  229. hint="Type anything here&hellip;"
  230. block
  231. options={options}
  232. />
  233. </div>
  234. <div>
  235. <Option.DropdownSelect
  236. style={TextControlStyle.ALTERNATE}
  237. label="Select"
  238. hint="Type anything here&hellip;"
  239. block
  240. options={options}
  241. />
  242. </div>
  243. <div>
  244. <Option.DropdownSelect
  245. border
  246. style={TextControlStyle.ALTERNATE}
  247. label="Select"
  248. hint="Type anything here&hellip;"
  249. block
  250. options={options}
  251. />
  252. </div>
  253. <div>
  254. <Option.DropdownSelect
  255. style={TextControlStyle.ALTERNATE}
  256. size={TextControlSize.LARGE}
  257. label="Select"
  258. hint="Type anything here&hellip;"
  259. block
  260. options={options}
  261. />
  262. </div>
  263. <div>
  264. <Option.DropdownSelect
  265. border
  266. block
  267. style={TextControlStyle.ALTERNATE}
  268. size={TextControlSize.LARGE}
  269. label="Select"
  270. hint="Type anything here&hellip;"
  271. options={options}
  272. />
  273. </div>
  274. <div>
  275. <Option.DropdownSelect
  276. style={TextControlStyle.ALTERNATE}
  277. label="Select"
  278. hint="Type anything here&hellip;"
  279. block
  280. disabled
  281. options={options}
  282. />
  283. </div>
  284. <div>
  285. <Option.DropdownSelect
  286. style={TextControlStyle.ALTERNATE}
  287. border
  288. label="Select"
  289. hint="Type anything here&hellip;"
  290. block
  291. disabled
  292. options={options}
  293. />
  294. </div>
  295. </div>
  296. </div>
  297. </section>
  298. </div>
  299. </section>
  300. <section>
  301. <h2>
  302. RadioButton
  303. </h2>
  304. <div>
  305. <section>
  306. <h3>Default</h3>
  307. <div>
  308. <div className="grid gap-4 my-4">
  309. <div>
  310. <Option.RadioButton
  311. block
  312. subtext="Subtext"
  313. name="RadioButton"
  314. >
  315. RadioButton
  316. </Option.RadioButton>
  317. </div>
  318. </div>
  319. </div>
  320. </section>
  321. <section>
  322. <h3>Switch</h3>
  323. <div>
  324. <div className="grid gap-4 my-4">
  325. <div>
  326. <Option.RadioButton
  327. block
  328. subtext="Subtext"
  329. name="RadioButton"
  330. appearance={CheckControlAppearance.SWITCH}
  331. >
  332. RadioButton
  333. </Option.RadioButton>
  334. </div>
  335. </div>
  336. </div>
  337. </section>
  338. <section>
  339. <h3>Button</h3>
  340. <div>
  341. <div className="grid md:grid-cols-2 gap-4 my-4">
  342. <div>
  343. <Option.RadioButton
  344. block
  345. appearance={CheckControlAppearance.BUTTON}
  346. name="RadioButton"
  347. >
  348. Button
  349. </Option.RadioButton>
  350. </div>
  351. <div>
  352. <Option.RadioButton
  353. variant={ButtonVariant.FILLED}
  354. block
  355. appearance={CheckControlAppearance.BUTTON}
  356. name="RadioButton"
  357. >
  358. Button
  359. </Option.RadioButton>
  360. </div>
  361. <div>
  362. <Option.RadioButton
  363. border
  364. block
  365. appearance={CheckControlAppearance.BUTTON}
  366. name="RadioButton"
  367. >
  368. Button
  369. </Option.RadioButton>
  370. </div>
  371. <div>
  372. <Option.RadioButton
  373. border
  374. variant={ButtonVariant.FILLED}
  375. block
  376. appearance={CheckControlAppearance.BUTTON}
  377. name="RadioButton"
  378. >
  379. Button
  380. </Option.RadioButton>
  381. </div>
  382. <div>
  383. <Option.RadioButton
  384. block
  385. disabled
  386. appearance={CheckControlAppearance.BUTTON}
  387. name="RadioButton"
  388. >
  389. Button
  390. </Option.RadioButton>
  391. </div>
  392. <div>
  393. <Option.RadioButton
  394. variant={ButtonVariant.FILLED}
  395. block
  396. disabled
  397. appearance={CheckControlAppearance.BUTTON}
  398. name="RadioButton"
  399. >
  400. Button
  401. </Option.RadioButton>
  402. </div>
  403. <div>
  404. <Option.RadioButton
  405. border
  406. block
  407. disabled
  408. appearance={CheckControlAppearance.BUTTON}
  409. name="RadioButton"
  410. >
  411. Button
  412. </Option.RadioButton>
  413. </div>
  414. <div>
  415. <Option.RadioButton
  416. border
  417. variant={ButtonVariant.FILLED}
  418. block
  419. disabled
  420. appearance={CheckControlAppearance.BUTTON}
  421. name="RadioButton"
  422. >
  423. Button
  424. </Option.RadioButton>
  425. </div>
  426. </div>
  427. </div>
  428. </section>
  429. <section>
  430. <h3>Sizes</h3>
  431. <div>
  432. <div className="grid md:grid-cols-2 gap-4 my-4">
  433. <div>
  434. <Option.RadioButton
  435. block
  436. border
  437. size={ButtonSize.SMALL}
  438. appearance={CheckControlAppearance.BUTTON}
  439. name="RadioButton"
  440. >
  441. Button
  442. </Option.RadioButton>
  443. </div>
  444. <div>
  445. <Option.RadioButton
  446. block
  447. border
  448. variant={ButtonVariant.FILLED}
  449. size={ButtonSize.SMALL}
  450. appearance={CheckControlAppearance.BUTTON}
  451. name="RadioButton"
  452. >
  453. Button
  454. </Option.RadioButton>
  455. </div>
  456. <div>
  457. <Option.RadioButton
  458. block
  459. border
  460. size={ButtonSize.MEDIUM}
  461. appearance={CheckControlAppearance.BUTTON}
  462. name="RadioButton"
  463. >
  464. Button
  465. </Option.RadioButton>
  466. </div>
  467. <div>
  468. <Option.RadioButton
  469. block
  470. border
  471. variant={ButtonVariant.FILLED}
  472. size={ButtonSize.MEDIUM}
  473. appearance={CheckControlAppearance.BUTTON}
  474. name="RadioButton"
  475. >
  476. Button
  477. </Option.RadioButton>
  478. </div>
  479. <div>
  480. <Option.RadioButton
  481. block
  482. border
  483. size={ButtonSize.LARGE}
  484. appearance={CheckControlAppearance.BUTTON}
  485. name="RadioButton"
  486. >
  487. Button
  488. </Option.RadioButton>
  489. </div>
  490. <div>
  491. <Option.RadioButton
  492. block
  493. border
  494. variant={ButtonVariant.FILLED}
  495. size={ButtonSize.LARGE}
  496. appearance={CheckControlAppearance.BUTTON}
  497. name="RadioButton"
  498. >
  499. Button
  500. </Option.RadioButton>
  501. </div>
  502. </div>
  503. </div>
  504. </section>
  505. <section>
  506. <h3>Compact</h3>
  507. <div>
  508. <div className="grid md:grid-cols-2 gap-4 my-4">
  509. <div>
  510. <Option.RadioButton
  511. block
  512. compact
  513. border
  514. appearance={CheckControlAppearance.BUTTON}
  515. name="RadioButton"
  516. >
  517. Button
  518. </Option.RadioButton>
  519. </div>
  520. <div>
  521. <Option.RadioButton
  522. block
  523. compact
  524. border
  525. variant={ButtonVariant.FILLED}
  526. appearance={CheckControlAppearance.BUTTON}
  527. name="RadioButton"
  528. >
  529. Button
  530. </Option.RadioButton>
  531. </div>
  532. <div>
  533. <Option.RadioButton
  534. block
  535. compact
  536. border
  537. appearance={CheckControlAppearance.BUTTON}
  538. name="RadioButton"
  539. subtext={
  540. <>
  541. Subtext
  542. </>
  543. }
  544. >
  545. Button
  546. </Option.RadioButton>
  547. </div>
  548. <div>
  549. <Option.RadioButton
  550. block
  551. compact
  552. border
  553. variant={ButtonVariant.FILLED}
  554. appearance={CheckControlAppearance.BUTTON}
  555. name="RadioButton"
  556. subtext={
  557. <>
  558. Subtext
  559. </>
  560. }
  561. >
  562. Button
  563. </Option.RadioButton>
  564. </div>
  565. <div>
  566. <Option.RadioButton
  567. block
  568. compact
  569. border
  570. size={ButtonSize.SMALL}
  571. appearance={CheckControlAppearance.BUTTON}
  572. name="RadioButton"
  573. subtext={
  574. <>
  575. Subtext
  576. </>
  577. }
  578. >
  579. Button
  580. </Option.RadioButton>
  581. </div>
  582. <div>
  583. <Option.RadioButton
  584. block
  585. compact
  586. border
  587. variant={ButtonVariant.FILLED}
  588. size={ButtonSize.SMALL}
  589. appearance={CheckControlAppearance.BUTTON}
  590. name="RadioButton"
  591. subtext={
  592. <>
  593. Subtext
  594. </>
  595. }
  596. >
  597. Button
  598. </Option.RadioButton>
  599. </div>
  600. </div>
  601. </div>
  602. </section>
  603. </div>
  604. </section>
  605. <section>
  606. <h2>
  607. Checkbox
  608. </h2>
  609. <div>
  610. <section>
  611. <h3>Default</h3>
  612. <div>
  613. <div className="grid md:grid-cols-2 gap-4 my-4">
  614. <div>
  615. <Option.Checkbox
  616. block
  617. subtext="Subtext"
  618. >
  619. Checkbox
  620. </Option.Checkbox>
  621. </div>
  622. <div>
  623. <Option.Checkbox
  624. block
  625. indeterminate
  626. subtext="Subtext"
  627. >
  628. Checkbox
  629. </Option.Checkbox>
  630. </div>
  631. </div>
  632. </div>
  633. </section>
  634. <section>
  635. <h3>Switch</h3>
  636. <div>
  637. <div className="grid md:grid-cols-2 gap-4 my-4">
  638. <div>
  639. <Option.Checkbox
  640. block
  641. subtext="Subtext"
  642. appearance={CheckControlAppearance.SWITCH}
  643. >
  644. Checkbox
  645. </Option.Checkbox>
  646. </div>
  647. <div>
  648. <Option.Checkbox
  649. block
  650. indeterminate
  651. subtext="Subtext"
  652. appearance={CheckControlAppearance.SWITCH}
  653. >
  654. Checkbox
  655. </Option.Checkbox>
  656. </div>
  657. </div>
  658. </div>
  659. </section>
  660. <section>
  661. <h3>Button</h3>
  662. <div>
  663. <div className="grid md:grid-cols-2 gap-4 my-4">
  664. <div>
  665. <Option.Checkbox
  666. block
  667. appearance={CheckControlAppearance.BUTTON}
  668. >
  669. Button
  670. </Option.Checkbox>
  671. </div>
  672. <div>
  673. <Option.Checkbox
  674. variant={ButtonVariant.FILLED}
  675. block
  676. appearance={CheckControlAppearance.BUTTON}
  677. >
  678. Button
  679. </Option.Checkbox>
  680. </div>
  681. <div>
  682. <Option.Checkbox
  683. border
  684. block
  685. appearance={CheckControlAppearance.BUTTON}
  686. >
  687. Button
  688. </Option.Checkbox>
  689. </div>
  690. <div>
  691. <Option.Checkbox
  692. border
  693. variant={ButtonVariant.FILLED}
  694. block
  695. appearance={CheckControlAppearance.BUTTON}
  696. >
  697. Button
  698. </Option.Checkbox>
  699. </div>
  700. <div>
  701. <Option.Checkbox
  702. block
  703. disabled
  704. appearance={CheckControlAppearance.BUTTON}
  705. >
  706. Button
  707. </Option.Checkbox>
  708. </div>
  709. <div>
  710. <Option.Checkbox
  711. variant={ButtonVariant.FILLED}
  712. block
  713. disabled
  714. appearance={CheckControlAppearance.BUTTON}
  715. >
  716. Button
  717. </Option.Checkbox>
  718. </div>
  719. <div>
  720. <Option.Checkbox
  721. border
  722. block
  723. disabled
  724. appearance={CheckControlAppearance.BUTTON}
  725. >
  726. Button
  727. </Option.Checkbox>
  728. </div>
  729. <div>
  730. <Option.Checkbox
  731. border
  732. variant={ButtonVariant.FILLED}
  733. block
  734. disabled
  735. appearance={CheckControlAppearance.BUTTON}
  736. >
  737. Button
  738. </Option.Checkbox>
  739. </div>
  740. <div>
  741. <Option.Checkbox
  742. border
  743. block
  744. appearance={CheckControlAppearance.BUTTON}
  745. indeterminate
  746. >
  747. Button
  748. </Option.Checkbox>
  749. </div>
  750. <div>
  751. <Option.Checkbox
  752. border
  753. variant={ButtonVariant.FILLED}
  754. block
  755. appearance={CheckControlAppearance.BUTTON}
  756. indeterminate
  757. >
  758. Button
  759. </Option.Checkbox>
  760. </div>
  761. </div>
  762. </div>
  763. </section>
  764. <section>
  765. <h3>Sizes</h3>
  766. <div>
  767. <div className="grid md:grid-cols-2 gap-4 my-4">
  768. <div>
  769. <Option.Checkbox
  770. block
  771. border
  772. size={ButtonSize.SMALL}
  773. appearance={CheckControlAppearance.BUTTON}
  774. >
  775. Button
  776. </Option.Checkbox>
  777. </div>
  778. <div>
  779. <Option.Checkbox
  780. block
  781. border
  782. variant={ButtonVariant.FILLED}
  783. size={ButtonSize.SMALL}
  784. appearance={CheckControlAppearance.BUTTON}
  785. >
  786. Button
  787. </Option.Checkbox>
  788. </div>
  789. <div>
  790. <Option.Checkbox
  791. block
  792. border
  793. size={ButtonSize.MEDIUM}
  794. appearance={CheckControlAppearance.BUTTON}
  795. >
  796. Button
  797. </Option.Checkbox>
  798. </div>
  799. <div>
  800. <Option.Checkbox
  801. block
  802. border
  803. variant={ButtonVariant.FILLED}
  804. size={ButtonSize.MEDIUM}
  805. appearance={CheckControlAppearance.BUTTON}
  806. >
  807. Button
  808. </Option.Checkbox>
  809. </div>
  810. <div>
  811. <Option.Checkbox
  812. block
  813. border
  814. size={ButtonSize.LARGE}
  815. appearance={CheckControlAppearance.BUTTON}
  816. >
  817. Button
  818. </Option.Checkbox>
  819. </div>
  820. <div>
  821. <Option.Checkbox
  822. block
  823. border
  824. variant={ButtonVariant.FILLED}
  825. size={ButtonSize.LARGE}
  826. appearance={CheckControlAppearance.BUTTON}
  827. >
  828. Button
  829. </Option.Checkbox>
  830. </div>
  831. </div>
  832. </div>
  833. </section>
  834. <section>
  835. <h3>Compact</h3>
  836. <div>
  837. <div className="grid md:grid-cols-2 gap-4 my-4">
  838. <div>
  839. <Option.Checkbox
  840. block
  841. compact
  842. border
  843. appearance={CheckControlAppearance.BUTTON}
  844. >
  845. Button
  846. </Option.Checkbox>
  847. </div>
  848. <div>
  849. <Option.Checkbox
  850. block
  851. compact
  852. border
  853. variant={ButtonVariant.FILLED}
  854. appearance={CheckControlAppearance.BUTTON}
  855. >
  856. Button
  857. </Option.Checkbox>
  858. </div>
  859. <div>
  860. <Option.Checkbox
  861. block
  862. compact
  863. border
  864. appearance={CheckControlAppearance.BUTTON}
  865. subtext={
  866. <>
  867. Subtext
  868. </>
  869. }
  870. >
  871. Button
  872. </Option.Checkbox>
  873. </div>
  874. <div>
  875. <Option.Checkbox
  876. block
  877. compact
  878. border
  879. variant={ButtonVariant.FILLED}
  880. appearance={CheckControlAppearance.BUTTON}
  881. subtext={
  882. <>
  883. Subtext
  884. </>
  885. }
  886. >
  887. Button
  888. </Option.Checkbox>
  889. </div>
  890. <div>
  891. <Option.Checkbox
  892. block
  893. compact
  894. border
  895. size={ButtonSize.SMALL}
  896. appearance={CheckControlAppearance.BUTTON}
  897. subtext={
  898. <>
  899. Subtext
  900. </>
  901. }
  902. >
  903. Button
  904. </Option.Checkbox>
  905. </div>
  906. <div>
  907. <Option.Checkbox
  908. block
  909. compact
  910. border
  911. variant={ButtonVariant.FILLED}
  912. size={ButtonSize.SMALL}
  913. appearance={CheckControlAppearance.BUTTON}
  914. subtext={
  915. <>
  916. Subtext
  917. </>
  918. }
  919. >
  920. Button
  921. </Option.Checkbox>
  922. </div>
  923. </div>
  924. </div>
  925. </section>
  926. </div>
  927. </section>
  928. <section>
  929. <h2>
  930. TagList
  931. </h2>
  932. <div>
  933. TODO
  934. </div>
  935. </section>
  936. <section>
  937. <h2>
  938. ComboBox
  939. </h2>
  940. <div>
  941. TODO input with datalist
  942. </div>
  943. </section>
  944. </div>
  945. </div>
  946. </section>
  947. </main>
  948. )
  949. }
  950. export default OptionPage