style-guide.stories.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. /* eslint-disable jsx-a11y/anchor-is-valid */
  2. import { Grid, Row, Col, Button, Alert, ProgressBar } from 'react-bootstrap'
  3. import Notification from '../js/shared/components/notification'
  4. export const Colors = () => {
  5. return (
  6. <div className="content content-alt">
  7. <Grid>
  8. <Row>
  9. <Col md={8} mdOffset={2}>
  10. <h2>Colours</h2>
  11. <div className="color-row">
  12. <div className="color-box ol-blue-gray-1">
  13. <div className="color-swatch" />
  14. <div className="color-label">
  15. <pre className="color-less-var" />
  16. <pre className="color-hex-val" />
  17. <pre className="color-rgb-val" />
  18. </div>
  19. </div>
  20. <div className="color-box ol-blue-gray-2">
  21. <div className="color-swatch" />
  22. <div className="color-label">
  23. <pre className="color-less-var" />
  24. <pre className="color-hex-val" />
  25. <pre className="color-rgb-val" />
  26. </div>
  27. </div>
  28. <div className="color-box ol-blue-gray-3">
  29. <div className="color-swatch" />
  30. <div className="color-label">
  31. <pre className="color-less-var" />
  32. <pre className="color-hex-val" />
  33. <pre className="color-rgb-val" />
  34. </div>
  35. </div>
  36. <div className="color-box ol-blue-gray-4">
  37. <div className="color-swatch" />
  38. <div className="color-label">
  39. <pre className="color-less-var" />
  40. <pre className="color-hex-val" />
  41. <pre className="color-rgb-val" />
  42. </div>
  43. </div>
  44. <div className="color-box ol-blue-gray-5">
  45. <div className="color-swatch" />
  46. <div className="color-label">
  47. <pre className="color-less-var" />
  48. <pre className="color-hex-val" />
  49. <pre className="color-rgb-val" />
  50. </div>
  51. </div>
  52. <div className="color-box ol-blue-gray-6">
  53. <div className="color-swatch" />
  54. <div className="color-label">
  55. <pre className="color-less-var" />
  56. <pre className="color-hex-val" />
  57. <pre className="color-rgb-val" />
  58. </div>
  59. </div>
  60. </div>
  61. <div className="color-row">
  62. <div className="color-box ol-green">
  63. <div className="color-swatch" />
  64. <div className="color-label">
  65. <pre className="color-less-var" />
  66. <pre className="color-hex-val" />
  67. <pre className="color-rgb-val" />
  68. </div>
  69. </div>
  70. <div className="color-box ol-dark-green">
  71. <div className="color-swatch" />
  72. <div className="color-label">
  73. <pre className="color-less-var" />
  74. <pre className="color-hex-val" />
  75. <pre className="color-rgb-val" />
  76. </div>
  77. </div>
  78. <div className="color-box ol-blue">
  79. <div className="color-swatch" />
  80. <div className="color-label">
  81. <pre className="color-less-var" />
  82. <pre className="color-hex-val" />
  83. <pre className="color-rgb-val" />
  84. </div>
  85. </div>
  86. <div className="color-box ol-dark-blue">
  87. <div className="color-swatch" />
  88. <div className="color-label">
  89. <pre className="color-less-var" />
  90. <pre className="color-hex-val" />
  91. <pre className="color-rgb-val" />
  92. </div>
  93. </div>
  94. <div className="color-box ol-red">
  95. <div className="color-swatch" />
  96. <div className="color-label">
  97. <pre className="color-less-var" />
  98. <pre className="color-hex-val" />
  99. <pre className="color-rgb-val" />
  100. </div>
  101. </div>
  102. <div className="color-box ol-dark-red">
  103. <div className="color-swatch" />
  104. <div className="color-label">
  105. <pre className="color-less-var" />
  106. <pre className="color-hex-val" />
  107. <pre className="color-rgb-val" />
  108. </div>
  109. </div>
  110. </div>
  111. </Col>
  112. </Row>
  113. </Grid>
  114. </div>
  115. )
  116. }
  117. export const Headings = () => {
  118. return (
  119. <div className="content content-alt">
  120. <Grid>
  121. <Row>
  122. <Col md={8} mdOffset={2}>
  123. <h2>Headings</h2>
  124. <p>Here are our heading styles:</p>
  125. <h1>Heading level 1</h1>
  126. <p>
  127. Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
  128. ipsum
  129. </p>
  130. <h2>Heading level 2</h2>
  131. <p>
  132. Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
  133. ipsum lorem ipsum
  134. </p>
  135. <h3>Heading level 3</h3>
  136. <p>
  137. Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
  138. ipsum lorem ipsum
  139. </p>
  140. <h4>Heading level 4</h4>
  141. <p>
  142. Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
  143. ipsum lorem ipsum
  144. </p>
  145. </Col>
  146. </Row>
  147. </Grid>
  148. </div>
  149. )
  150. }
  151. const ButtonsTemplate = (args, { globals: { theme } }) => {
  152. return (
  153. <div className="content content-alt">
  154. <fieldset disabled={args.disabled}>
  155. <Grid>
  156. <Row>
  157. <Col md={8} mdOffset={2}>
  158. <h2>Buttons</h2>
  159. <h3>Primary Button</h3>
  160. <p>
  161. <Button bsStyle="primary">Primary Button</Button>
  162. </p>
  163. <h3>Secondary Button</h3>
  164. {theme.includes('main') ? (
  165. <>
  166. <p>
  167. <button className="btn btn-secondary">
  168. Secondary Button
  169. </button>
  170. </p>
  171. <h3>Deprecated Styles</h3>
  172. <p>
  173. These are being transitioned to the new secondary style
  174. above
  175. </p>
  176. </>
  177. ) : (
  178. ''
  179. )}
  180. <p>Our secondary button is blue or dark gray:</p>
  181. <div className="btn-toolbar">
  182. <Button bsStyle="info">Info Button</Button>
  183. <Button bsStyle="default">Default Button</Button>
  184. </div>
  185. <h3>All button styles</h3>
  186. {theme.includes('main') ? (
  187. <p>Includes styles being deprecated</p>
  188. ) : (
  189. ''
  190. )}
  191. <div className="btn-toolbar">
  192. <Button bsStyle="primary">Primary</Button>
  193. {theme.includes('main') ? (
  194. <button className="btn btn-secondary">Secondary</button>
  195. ) : (
  196. ''
  197. )}
  198. <Button bsStyle="info">Info</Button>
  199. <Button bsStyle="default">Default</Button>
  200. <Button bsStyle="primary">Success</Button>
  201. <Button bsStyle="warning">Warning</Button>
  202. <Button bsStyle="danger">Danger</Button>
  203. <Button className="btn-danger-ghost" bsStyle={null}>
  204. Danger Ghost
  205. </Button>
  206. </div>
  207. <h3>Sizes</h3>
  208. <div className="btn-toolbar">
  209. <button className="btn btn-primary btn-xs">Extra Small</button>
  210. <button className="btn btn-primary btn-sm">Small</button>
  211. <button className="btn btn-primary">Default</button>
  212. <button className="btn btn-primary btn-lg">Large</button>
  213. <button className="btn btn-primary btn-xl">Extra Large</button>
  214. </div>
  215. <h2>Hyperlinks</h2>
  216. <p>
  217. Hyperlinks are highlighted <a href="#">as shown</a>.
  218. </p>
  219. </Col>
  220. </Row>
  221. </Grid>
  222. </fieldset>
  223. </div>
  224. )
  225. }
  226. export const Buttons = ButtonsTemplate.bind({})
  227. Buttons.args = {
  228. disabled: false,
  229. }
  230. export const Alerts = () => {
  231. return (
  232. <div className="content content-alt">
  233. <Grid>
  234. <Row>
  235. <Col md={8} mdOffset={2} className="notification-list">
  236. <h2>Alerts / Notifications</h2>
  237. <p>See Notification in shared components for options</p>
  238. <Notification
  239. type="info"
  240. body={
  241. <div>
  242. <b>
  243. <code>.notitifcation .notification-type-info</code>
  244. </b>
  245. </div>
  246. }
  247. />
  248. <Notification
  249. type="success"
  250. body={
  251. <div>
  252. <b>
  253. <code>.notitifcation .notification-type-success</code>
  254. </b>
  255. </div>
  256. }
  257. />
  258. <Notification
  259. type="warning"
  260. body={
  261. <div>
  262. <b>
  263. <code>.notitifcation .notification-type-warning</code>
  264. </b>
  265. </div>
  266. }
  267. />
  268. <Notification
  269. type="error"
  270. body={
  271. <div>
  272. <b>
  273. <code>.notitifcation .notification-type-error</code>
  274. </b>
  275. </div>
  276. }
  277. />
  278. <b>
  279. Note: these styles below will be deprecated since there are new
  280. alert styles rolling out as part of the new design system
  281. </b>
  282. <Alert bsStyle="danger">
  283. An <code>.alert-danger</code> alert
  284. </Alert>
  285. <Alert bsStyle="success">
  286. An <code>.alert-success</code> alert
  287. </Alert>
  288. <Alert bsStyle="info">
  289. An <code>.alert-info</code> alert
  290. </Alert>
  291. <Alert bsStyle="warning">
  292. An <code>.alert-warning</code> alert
  293. </Alert>
  294. </Col>
  295. </Row>
  296. </Grid>
  297. </div>
  298. )
  299. }
  300. export const ProgressBars = () => {
  301. return (
  302. <div className="content content-alt">
  303. <Grid>
  304. {' '}
  305. <Row>
  306. <Col md={8} mdOffset={2}>
  307. <h2>Progress bars</h2>
  308. <ProgressBar bsStyle="danger" now={20} />
  309. <ProgressBar bsStyle="success" now={40} />
  310. <ProgressBar bsStyle="info" now={60} />
  311. <ProgressBar bsStyle="warning" now={80} />
  312. </Col>
  313. </Row>
  314. </Grid>
  315. </div>
  316. )
  317. }
  318. export const Cards = () => {
  319. return (
  320. <div className="content content-alt">
  321. <Grid>
  322. <Row>
  323. <Col md={8} mdOffset={2}>
  324. <div className="card">
  325. <p>
  326. Cards look best on a <code>.content.content-alt</code>{' '}
  327. background
  328. </p>
  329. </div>
  330. </Col>
  331. </Row>
  332. </Grid>
  333. </div>
  334. )
  335. }
  336. export const Forms = () => {
  337. return (
  338. <div className="content content-alt">
  339. <Grid>
  340. <Row className="row-spaced">
  341. <Col md={8} mdOffset={2}>
  342. <div className="card">
  343. <h2>Form elements—basic example</h2>
  344. <form className="ng-pristine ng-valid">
  345. <div className="form-group">
  346. <label htmlFor="exampleInputEmail1">Email address</label>
  347. <input
  348. className="form-control"
  349. id="exampleInputEmail1"
  350. type="email"
  351. placeholder="Email"
  352. />
  353. </div>
  354. <div className="form-group">
  355. <label htmlFor="exampleInputPassword1">Password</label>
  356. <input
  357. className="form-control"
  358. id="exampleInputPassword1"
  359. type="password"
  360. placeholder="Password"
  361. />
  362. </div>
  363. <div className="form-group">
  364. <label htmlFor="exampleInputFile">File input</label>
  365. <input id="exampleInputFile" type="file" />
  366. <p className="help-block">
  367. Example block-level help text here.
  368. </p>
  369. </div>
  370. <div className="checkbox">
  371. <label>
  372. <input type="checkbox" /> Check me out
  373. </label>
  374. <button className="btn btn-default" type="submit">
  375. Submit
  376. </button>
  377. </div>
  378. </form>
  379. </div>
  380. </Col>
  381. </Row>
  382. <Row className="row-spaced">
  383. <Col md={8} mdOffset={2}>
  384. <div className="card">
  385. <h2>Inline form</h2>
  386. <form className="form-inline ng-pristine ng-valid">
  387. <div className="form-group">
  388. <label htmlFor="exampleInputName2">Name</label>
  389. <input
  390. className="form-control"
  391. id="exampleInputName2"
  392. type="text"
  393. placeholder="Jane Doe"
  394. />
  395. </div>
  396. <div className="form-group">
  397. <label htmlFor="exampleInputEmail2">Email</label>
  398. <input
  399. className="form-control"
  400. id="exampleInputEmail2"
  401. type="email"
  402. placeholder="jane.doe@example.com"
  403. />
  404. </div>
  405. <button className="btn btn-default" type="submit">
  406. Send invitation
  407. </button>
  408. </form>
  409. </div>
  410. </Col>
  411. </Row>
  412. <Row className="row-spaced">
  413. <Col md={8} mdOffset={2}>
  414. <div className="card">
  415. <form className="form-inline ng-pristine ng-valid">
  416. <div className="form-group">
  417. <label className="sr-only" htmlFor="exampleInputEmail3">
  418. Email address
  419. </label>
  420. <input
  421. className="form-control"
  422. id="exampleInputEmail3"
  423. type="email"
  424. placeholder="Email"
  425. />
  426. </div>
  427. <div className="form-group">
  428. <label className="sr-only" htmlFor="exampleInputPassword3">
  429. Password
  430. </label>
  431. <input
  432. className="form-control"
  433. id="exampleInputPassword3"
  434. type="password"
  435. placeholder="Password"
  436. />
  437. </div>
  438. <div className="checkbox">
  439. <label>
  440. <input type="checkbox" /> Remember me
  441. </label>
  442. </div>
  443. <button className="btn btn-default" type="submit">
  444. Sign in
  445. </button>
  446. </form>
  447. </div>
  448. </Col>
  449. </Row>
  450. <Row className="row-spaced">
  451. <Col md={8} mdOffset={2}>
  452. <div className="card">
  453. <form className="form-inline ng-pristine ng-valid">
  454. <div className="form-group">
  455. <label className="sr-only" htmlFor="exampleInputAmount">
  456. Amount (in dollars)
  457. </label>
  458. <div className="input-group">
  459. <div className="input-group-addon">$</div>
  460. <input
  461. className="form-control"
  462. id="exampleInputAmount"
  463. type="text"
  464. placeholder="Amount"
  465. />
  466. <div className="input-group-addon">.00</div>
  467. </div>
  468. </div>
  469. <button className="btn btn-primary" type="submit">
  470. Transfer cash
  471. </button>
  472. </form>
  473. </div>
  474. </Col>
  475. </Row>
  476. <Row className="row-spaced">
  477. <Col md={8} mdOffset={2}>
  478. <div className="card">
  479. <h2>Horizontal form</h2>
  480. <form className="form-horizontal ng-pristine ng-valid">
  481. <div className="form-group">
  482. <label
  483. className="col-sm-2 control-label"
  484. htmlFor="inputEmail3"
  485. >
  486. Email
  487. </label>
  488. <div className="col-sm-10">
  489. <input
  490. className="form-control"
  491. id="inputEmail3"
  492. type="email"
  493. placeholder="Email"
  494. />
  495. </div>
  496. </div>
  497. <div className="form-group">
  498. <label
  499. className="col-sm-2 control-label"
  500. htmlFor="inputPassword3"
  501. >
  502. Password
  503. </label>
  504. <div className="col-sm-10">
  505. <input
  506. className="form-control"
  507. id="inputPassword3"
  508. type="password"
  509. placeholder="Password"
  510. />
  511. </div>
  512. </div>
  513. <div className="form-group">
  514. <div className="col-sm-offset-2 col-sm-10">
  515. <div className="checkbox">
  516. <label>
  517. <input type="checkbox" /> Remember me
  518. </label>
  519. </div>
  520. </div>
  521. </div>
  522. <div className="form-group">
  523. <div className="col-sm-offset-2 col-sm-10">
  524. <button className="btn btn-default" type="submit">
  525. Sign in
  526. </button>
  527. </div>
  528. </div>
  529. </form>
  530. </div>
  531. </Col>
  532. </Row>
  533. <Row className="row-spaced">
  534. <Col md={8} mdOffset={2}>
  535. <div className="card">
  536. <h2>Supported controls</h2>
  537. <form className="ng-pristine ng-valid">
  538. <input
  539. className="form-control"
  540. type="text"
  541. placeholder="Text input"
  542. />
  543. </form>
  544. </div>
  545. </Col>
  546. </Row>
  547. <Row>
  548. <Col md={8} mdOffset={2}>
  549. <div className="card">
  550. <form className="ng-pristine ng-valid">
  551. <textarea
  552. className="form-control"
  553. rows="3"
  554. placeholder="Textarea"
  555. />
  556. </form>
  557. </div>
  558. </Col>
  559. </Row>
  560. <Row>
  561. <Col md={8} mdOffset={2}>
  562. <div className="card">
  563. <form className="ng-pristine ng-valid">
  564. <div className="checkbox">
  565. <label>
  566. <input type="checkbox" defaultValue="" />
  567. Option one is this and that—be sure to include why it's
  568. great
  569. </label>
  570. </div>
  571. <div className="checkbox disabled">
  572. <label>
  573. <input type="checkbox" defaultValue="" disabled="" />
  574. Option two is disabled
  575. </label>
  576. </div>
  577. </form>
  578. </div>
  579. </Col>
  580. </Row>
  581. <Row>
  582. <Col md={8} mdOffset={2}>
  583. <div className="card">
  584. <form className="ng-pristine ng-valid">
  585. <div className="radio">
  586. <label>
  587. <input
  588. id="optionsRadios1"
  589. type="radio"
  590. name="optionsRadios"
  591. defaultValue="option1"
  592. defaultChecked="checked"
  593. />
  594. Option one is this and that—be sure to include why it's
  595. great
  596. </label>
  597. </div>
  598. <div className="radio">
  599. <label>
  600. <input
  601. id="optionsRadios2"
  602. type="radio"
  603. name="optionsRadios"
  604. defaultValue="option2"
  605. />
  606. Option two can be something else and selecting it will
  607. deselect option one
  608. </label>
  609. </div>
  610. <div className="radio disabled">
  611. <label>
  612. <input
  613. id="optionsRadios3"
  614. type="radio"
  615. name="optionsRadios"
  616. defaultValue="option3"
  617. disabled=""
  618. />
  619. Option three is disabled
  620. </label>
  621. </div>
  622. </form>
  623. </div>
  624. </Col>
  625. </Row>
  626. <Row>
  627. <Col md={8} mdOffset={2}>
  628. <div className="card">
  629. <form className="ng-pristine ng-valid">
  630. <label className="checkbox-inline">
  631. <input id="inlineCheckbox1" type="checkbox" value="option1" />
  632. 1
  633. </label>
  634. <label className="checkbox-inline">
  635. <input id="inlineCheckbox2" type="checkbox" value="option2" />
  636. 2
  637. </label>
  638. <label className="checkbox-inline">
  639. <input id="inlineCheckbox3" type="checkbox" value="option3" />
  640. 3
  641. </label>
  642. </form>
  643. </div>
  644. </Col>
  645. </Row>
  646. <Row>
  647. <Col md={8} mdOffset={2}>
  648. <div className="card">
  649. <form className="ng-pristine ng-valid">
  650. <label className="radio-inline">
  651. <input
  652. id="inlineRadio1"
  653. type="radio"
  654. name="inlineRadioOptions"
  655. defaultValue="option1"
  656. />
  657. 1
  658. </label>
  659. <label className="radio-inline">
  660. <input
  661. id="inlineRadio2"
  662. type="radio"
  663. name="inlineRadioOptions"
  664. defaultValue="option2"
  665. />
  666. 2
  667. </label>
  668. <label className="radio-inline">
  669. <input
  670. id="inlineRadio3"
  671. type="radio"
  672. name="inlineRadioOptions"
  673. defaultValue="option3"
  674. />
  675. 3
  676. </label>
  677. </form>
  678. </div>
  679. </Col>
  680. </Row>
  681. <Row>
  682. <Col md={8} mdOffset={2}>
  683. <div className="card">
  684. <form className="ng-pristine ng-valid">
  685. <select className="form-control">
  686. <option value="1">1</option>
  687. <option value="2">2</option>
  688. <option value="3">3</option>
  689. <option value="4">4</option>
  690. <option value="5">5</option>
  691. </select>
  692. </form>
  693. </div>
  694. </Col>
  695. </Row>
  696. <Row>
  697. <Col md={8} mdOffset={2}>
  698. <div className="card">
  699. <form className="ng-pristine ng-valid">
  700. <select className="form-control" multiple="">
  701. <option value="1">1</option>
  702. <option value="2">2</option>
  703. <option value="3">3</option>
  704. <option value="4">4</option>
  705. <option value="5">5</option>
  706. </select>
  707. </form>
  708. </div>
  709. </Col>
  710. </Row>
  711. <Row className="row-spaced">
  712. <Col md={8} mdOffset={2}>
  713. <div className="card">
  714. <h2>Form states</h2>
  715. <form className="form-inline ng-pristine ng-valid">
  716. <div className="form-group">
  717. {/* eslint-disable-next-line */}
  718. <label className="sr-only">Emails</label>
  719. <p className="form-control-static">email@example.com</p>
  720. </div>
  721. <div className="form-group">
  722. <label className="sr-only" htmlFor="inputPassword2">
  723. Password
  724. </label>
  725. <input
  726. className="form-control"
  727. id="inputPassword2"
  728. type="password"
  729. placeholder="Password"
  730. />
  731. </div>
  732. <button className="btn btn-default" type="submit">
  733. Confirm identity
  734. </button>
  735. </form>
  736. </div>
  737. </Col>
  738. </Row>
  739. <Row>
  740. <Col md={8} mdOffset={2}>
  741. <div className="card">
  742. <form className="ng-pristine ng-valid">
  743. <input
  744. className="form-control"
  745. id="focusedInput"
  746. type="text"
  747. defaultValue="Demonstrative focus state"
  748. />
  749. </form>
  750. </div>
  751. </Col>
  752. </Row>
  753. <Row>
  754. <Col md={8} mdOffset={2}>
  755. <div className="card">
  756. <form className="ng-pristine ng-valid">
  757. <input
  758. className="form-control"
  759. id="disabledInput"
  760. type="text"
  761. placeholder="Disabled input here…"
  762. disabled=""
  763. />
  764. </form>
  765. </div>
  766. </Col>
  767. </Row>
  768. <Row>
  769. <Col md={8} mdOffset={2}>
  770. <div className="card">
  771. <form className="ng-pristine ng-valid">
  772. <input
  773. className="form-control"
  774. type="text"
  775. placeholder="Readonly input here…"
  776. readOnly=""
  777. />
  778. </form>
  779. </div>
  780. </Col>
  781. </Row>
  782. <Row>
  783. <Col md={8} mdOffset={2}>
  784. <div className="card">
  785. <form className="ng-pristine ng-valid">
  786. <div className="form-group">
  787. <label htmlFor="inputHelpBlock">Input with help text</label>
  788. <input
  789. className="form-control"
  790. id="inputHelpBlock"
  791. type="text"
  792. aria-describedby="helpBlock"
  793. />
  794. </div>
  795. <span className="help-block" id="helpBlock">
  796. A block of help text that breaks onto a new line and may
  797. extend beyond one line.
  798. </span>
  799. </form>
  800. </div>
  801. </Col>
  802. </Row>
  803. <Row className="row-spaced">
  804. <Col md={8} mdOffset={2}>
  805. <div className="card">
  806. <h2>Validation states</h2>
  807. <form className="ng-pristine ng-valid">
  808. <div className="form-group has-success">
  809. <label className="control-label" htmlFor="inputSuccess1">
  810. Input with success
  811. </label>
  812. <input
  813. className="form-control"
  814. id="inputSuccess1"
  815. type="text"
  816. aria-describedby="helpBlock2"
  817. />
  818. <span className="help-block" id="helpBlock2">
  819. A block of help text that breaks onto a new line and may
  820. extend beyond one line.
  821. </span>
  822. </div>
  823. <div className="form-group has-warning">
  824. <label className="control-label" htmlFor="inputWarning1">
  825. Input with warning
  826. </label>
  827. <input
  828. className="form-control"
  829. id="inputWarning1"
  830. type="text"
  831. />
  832. </div>
  833. <div className="form-group has-error">
  834. <label className="control-label" htmlFor="inputError1">
  835. Input with error
  836. </label>
  837. <input
  838. className="form-control"
  839. id="inputError1"
  840. type="text"
  841. />
  842. </div>
  843. <div className="has-success">
  844. <div className="checkbox">
  845. <label>
  846. <input
  847. id="checkboxSuccess"
  848. type="checkbox"
  849. defaultValue="option1"
  850. />
  851. Checkbox with success
  852. </label>
  853. </div>
  854. </div>
  855. <div className="has-warning">
  856. <div className="checkbox">
  857. <label>
  858. <input
  859. id="checkboxWarning"
  860. type="checkbox"
  861. defaultValue="option1"
  862. />
  863. Checkbox with warning
  864. </label>
  865. </div>
  866. </div>
  867. <div className="has-error">
  868. <div className="checkbox">
  869. <label>
  870. <input
  871. id="checkboxError"
  872. type="checkbox"
  873. defaultValue="option1"
  874. />
  875. Checkbox with error
  876. </label>
  877. </div>
  878. </div>
  879. </form>
  880. </div>
  881. </Col>
  882. </Row>
  883. </Grid>
  884. </div>
  885. )
  886. }
  887. export default {
  888. title: 'Style Guide',
  889. }