@madie/madie-design-system 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/.babelrc +10 -0
  2. package/.editorconfig +22 -0
  3. package/.eslintignore +5 -0
  4. package/.eslintrc.js +31 -0
  5. package/.storybook/.babelrc +4 -0
  6. package/.storybook/main.js +89 -0
  7. package/.storybook/preview-head.html +9 -0
  8. package/.storybook/preview.js +5 -0
  9. package/README.md +5 -0
  10. package/components/Accordion/Accordion.stories.js +20 -0
  11. package/components/Accordion/index.jsx +93 -0
  12. package/components/Alert/Alert.stories.js +61 -0
  13. package/components/Alert/index.js +46 -0
  14. package/components/Breadcrumb/Breadcrumb.md +28 -0
  15. package/components/Breadcrumb/Breadcrumb.stories.js +76 -0
  16. package/components/Breadcrumb/index.js +83 -0
  17. package/components/Button/Button.stories.js +121 -0
  18. package/components/Button/index.js +90 -0
  19. package/components/CalloutBox/CalloutBox.stories.js +94 -0
  20. package/components/CalloutBox/index.js +109 -0
  21. package/components/Card/Card.stories.js +163 -0
  22. package/components/Card/index.js +137 -0
  23. package/components/Dropdown/Dropdown.stories.js +94 -0
  24. package/components/Dropdown/index.js +85 -0
  25. package/components/Error/Collapsible.jsx +88 -0
  26. package/components/Error/ErrorUI.jsx +31 -0
  27. package/components/Error/error.js +26 -0
  28. package/components/FlashNotification/FlashNotificationUI.jsx +91 -0
  29. package/components/FlashNotification/index.js +30 -0
  30. package/components/Footer/Footer.stories.js +20 -0
  31. package/components/Footer/FooterUI.jsx +269 -0
  32. package/components/Footer/LegacyFooterUI.jsx +194 -0
  33. package/components/Footer/SocialLinks.jsx +60 -0
  34. package/components/Footer/Subscribe.jsx +34 -0
  35. package/components/Footer/footer.js +30 -0
  36. package/components/Header/Header.md +111 -0
  37. package/components/Header/Header.stories.js +32 -0
  38. package/components/Header/HeaderAccountMenu.jsx +169 -0
  39. package/components/Header/HeaderCancel.jsx +16 -0
  40. package/components/Header/HeaderContainer.jsx +63 -0
  41. package/components/Header/HeaderLogo.jsx +42 -0
  42. package/components/Header/HeaderMenuButton.js +50 -0
  43. package/components/Header/HeaderMenuItem.jsx +232 -0
  44. package/components/Header/HeaderMenuLink.js +50 -0
  45. package/components/Header/HeaderMenuSignOutButton.js +62 -0
  46. package/components/Header/HeaderMobileButton.js +37 -0
  47. package/components/Header/HeaderUI.jsx +167 -0
  48. package/components/Header/HelpIcon.jsx +32 -0
  49. package/components/Header/ImpersonatorBanner.jsx +57 -0
  50. package/components/Header/NavigationButtonIcon.jsx +27 -0
  51. package/components/Header/default-content.json +280 -0
  52. package/components/Header/header.js +40 -0
  53. package/components/Header/hooks.js +52 -0
  54. package/components/Header/utag-helpers.js +9 -0
  55. package/components/Infotip/Infotip.jsx +75 -0
  56. package/components/Infotip/Infotip.stories.js +50 -0
  57. package/components/Infotip/InfotipIcon.jsx +41 -0
  58. package/components/Infotip/index.js +3 -0
  59. package/components/Link/Link.stories.js +81 -0
  60. package/components/Link/index.js +61 -0
  61. package/components/Modal/LegacyModal.jsx +72 -0
  62. package/components/Modal/Modal.jsx +140 -0
  63. package/components/Modal/Modal.stories.js +159 -0
  64. package/components/Modal/index.jsx +22 -0
  65. package/components/NotificationBanner/NotificationBanner.stories.js +23 -0
  66. package/components/NotificationBanner/index.js +265 -0
  67. package/components/SanitizedContent/index.jsx +200 -0
  68. package/components/Search/Search.stories.js +21 -0
  69. package/components/Search/index.js +85 -0
  70. package/components/SessionDialog/sessionDialog.js +26 -0
  71. package/components/SessionDialogUI.jsx +261 -0
  72. package/components/SideNav/AnimationGroup/AnimationGroup.jsx +27 -0
  73. package/components/SideNav/Chart/ScoreChart.jsx +268 -0
  74. package/components/SideNav/Chart/__tests__/ScoreChart.test.js +22 -0
  75. package/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +173 -0
  76. package/components/SideNav/Chart/index.js +3 -0
  77. package/components/SideNav/Content/LevelOneContent.jsx +208 -0
  78. package/components/SideNav/Content/LevelTwoContent.jsx +216 -0
  79. package/components/SideNav/Content/index.js +4 -0
  80. package/components/SideNav/Details/IndividualDetails.jsx +18 -0
  81. package/components/SideNav/Details/PracticeDetails.jsx +45 -0
  82. package/components/SideNav/Details/index.js +4 -0
  83. package/components/SideNav/Links/CmsSwitchLink.jsx +41 -0
  84. package/components/SideNav/Links/NavItemInline.jsx +54 -0
  85. package/components/SideNav/Links/NavLinkContainer.jsx +38 -0
  86. package/components/SideNav/Links/NavLinkDrawer.jsx +249 -0
  87. package/components/SideNav/Links/NavLinkInline.jsx +107 -0
  88. package/components/SideNav/Links/NavLinkToggle.jsx +34 -0
  89. package/components/SideNav/Links/index.js +13 -0
  90. package/components/SideNav/SideNav.md +50 -0
  91. package/components/SideNav/SideNav.stories.js +379 -0
  92. package/components/SideNav/UI/SideNavUI.jsx +333 -0
  93. package/components/SideNav/UI/default-content.json +99 -0
  94. package/components/SideNav/UI/index.js +3 -0
  95. package/components/SideNav/helpers.js +49 -0
  96. package/components/SideNav/index.js +53 -0
  97. package/components/Spinner/index.js +9 -0
  98. package/components/Tabs/Tab.js +26 -0
  99. package/components/Tabs/TabPanel.js +34 -0
  100. package/components/Tabs/Tabs.stories.js +120 -0
  101. package/components/Tabs/index.js +95 -0
  102. package/components/TextInput/TextInput.stories.js +118 -0
  103. package/components/TextInput/index.js +137 -0
  104. package/components/Tooltip/Tooltip.jsx +88 -0
  105. package/components/Tooltip/Tooltip.stories.js +80 -0
  106. package/components/Tooltip/index.js +3 -0
  107. package/components/Tooltip/position.js +68 -0
  108. package/components/UnwrappedSpinner/index.js +8 -0
  109. package/components/hooks/useGetConfig.js +74 -0
  110. package/components/index.js +126 -0
  111. package/dist/browser.js +3 -0
  112. package/dist/browser.js.LICENSE.txt +54 -0
  113. package/dist/browser.js.map +1 -0
  114. package/dist/index.js +3 -0
  115. package/dist/index.js.LICENSE.txt +54 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/react/index.js +3 -0
  118. package/dist/react/index.js.LICENSE.txt +71 -0
  119. package/dist/react/index.js.map +1 -0
  120. package/fonts/FontAwesome.otf +0 -0
  121. package/fonts/OFL.txt +92 -0
  122. package/fonts/Rubik-Black.ttf +0 -0
  123. package/fonts/Rubik-BlackItalic.ttf +0 -0
  124. package/fonts/Rubik-Bold.ttf +0 -0
  125. package/fonts/Rubik-BoldItalic.ttf +0 -0
  126. package/fonts/Rubik-Italic.ttf +0 -0
  127. package/fonts/Rubik-Light.ttf +0 -0
  128. package/fonts/Rubik-LightItalic.ttf +0 -0
  129. package/fonts/Rubik-Medium.ttf +0 -0
  130. package/fonts/Rubik-MediumItalic.ttf +0 -0
  131. package/fonts/Rubik-Regular.ttf +0 -0
  132. package/fonts/fontawesome-webfont.eot +0 -0
  133. package/fonts/fontawesome-webfont.svg +2671 -0
  134. package/fonts/fontawesome-webfont.ttf +0 -0
  135. package/fonts/fontawesome-webfont.woff +0 -0
  136. package/fonts/fontawesome-webfont.woff2 +0 -0
  137. package/images/favicon/android-chrome-192x192.png +0 -0
  138. package/images/favicon/android-chrome-256x256.png +0 -0
  139. package/images/favicon/apple-touch-icon.png +0 -0
  140. package/images/favicon/browserconfig.xml +9 -0
  141. package/images/favicon/favicon-16x16.png +0 -0
  142. package/images/favicon/favicon-32x32.png +0 -0
  143. package/images/favicon/favicon.ico +0 -0
  144. package/images/favicon/manifest.json +18 -0
  145. package/images/favicon/mstile-150x150.png +0 -0
  146. package/images/favicon/safari-pinned-tab.svg +32 -0
  147. package/images/hhs-logo-black.svg +10 -0
  148. package/images/hhs-logo-white.svg +10 -0
  149. package/images/icons/close-x.svg +6 -0
  150. package/images/icons/help-headset.svg +21 -0
  151. package/images/icons/svg/arrow-down.svg +1 -0
  152. package/images/icons/svg/arrow-download.svg +1 -0
  153. package/images/icons/svg/arrow-right.svg +1 -0
  154. package/images/icons/svg/calendar.svg +1 -0
  155. package/images/icons/svg/close.svg +1 -0
  156. package/images/icons/svg/download.svg +1 -0
  157. package/images/icons/svg/external.svg +1 -0
  158. package/images/icons/svg/file-upload.svg +1 -0
  159. package/images/icons/svg/print.svg +1 -0
  160. package/images/icons/svg/search.svg +7 -0
  161. package/images/icons/svg/tooltip-question.svg +6 -0
  162. package/images/icons/svg/trash.svg +1 -0
  163. package/images/icons/svg/upload.svg +1 -0
  164. package/images/qpp_logo_reversed.png +0 -0
  165. package/images/qpp_logo_rgb_color.png +0 -0
  166. package/index.js +31 -0
  167. package/jest/mediaFileTransformer.js +9 -0
  168. package/jest.config.js +188 -0
  169. package/lib/Chevron.jsx +32 -0
  170. package/lib/SvgComponents.jsx +539 -0
  171. package/lib/svg-definitions.svg +125 -0
  172. package/package.json +125 -0
  173. package/session/index.js +5 -0
  174. package/session/logout.js +65 -0
  175. package/session/refresh.js +49 -0
  176. package/session/ttl.js +37 -0
  177. package/styles/_global.scss +106 -0
  178. package/styles/_main.scss +15 -0
  179. package/styles/_paths.scss +1 -0
  180. package/styles/_qpp-style.scss +31 -0
  181. package/styles/components/_accordion.scss +289 -0
  182. package/styles/components/_alerts.scss +54 -0
  183. package/styles/components/_autocomplete.scss +47 -0
  184. package/styles/components/_breadcrumbs.scss +64 -0
  185. package/styles/components/_buttons.scss +580 -0
  186. package/styles/components/_error-page.scss +56 -0
  187. package/styles/components/_flash-notification.scss +98 -0
  188. package/styles/components/_fonts.scss +42 -0
  189. package/styles/components/_forms.scss +277 -0
  190. package/styles/components/_grid.scss +37 -0
  191. package/styles/components/_info-modal.scss +139 -0
  192. package/styles/components/_links.scss +12 -0
  193. package/styles/components/_modals.scss +18 -0
  194. package/styles/components/_notification-banner.scss +165 -0
  195. package/styles/components/_panels.scss +61 -0
  196. package/styles/components/_pie-chart.scss +13 -0
  197. package/styles/components/_score-chart.scss +164 -0
  198. package/styles/components/_spinner.scss +7 -0
  199. package/styles/components/_tables.scss +111 -0
  200. package/styles/components/_tabs.scss +69 -0
  201. package/styles/components/_text.scss +150 -0
  202. package/styles/components/_toggles.scss +3 -0
  203. package/styles/components/_tooltip.scss +23 -0
  204. package/styles/components/_variables.scss +157 -0
  205. package/styles/components/_wells.scss +92 -0
  206. package/styles/qppds/README.md +0 -0
  207. package/styles/qppds/base/_backgrounds.scss +7 -0
  208. package/styles/qppds/base/_fonts.scss +26 -0
  209. package/styles/qppds/base/_icon.scss +23 -0
  210. package/styles/qppds/base/_layout.scss +5 -0
  211. package/styles/qppds/base/_typography.scss +85 -0
  212. package/styles/qppds/base/index.scss +8 -0
  213. package/styles/qppds/components/_alert.scss +95 -0
  214. package/styles/qppds/components/_breadcrumbs.scss +70 -0
  215. package/styles/qppds/components/_button.scss +292 -0
  216. package/styles/qppds/components/_card.scss +175 -0
  217. package/styles/qppds/components/_dropdown.scss +55 -0
  218. package/styles/qppds/components/_footer.scss +597 -0
  219. package/styles/qppds/components/_header.scss +892 -0
  220. package/styles/qppds/components/_link.scss +52 -0
  221. package/styles/qppds/components/_modal.scss +118 -0
  222. package/styles/qppds/components/_page-header.scss +67 -0
  223. package/styles/qppds/components/_pagination.scss +227 -0
  224. package/styles/qppds/components/_search.scss +112 -0
  225. package/styles/qppds/components/_sidebar.scss +9 -0
  226. package/styles/qppds/components/_table.scss +139 -0
  227. package/styles/qppds/components/_tabs.scss +197 -0
  228. package/styles/qppds/components/_text-input.scss +60 -0
  229. package/styles/qppds/components/index.scss +16 -0
  230. package/styles/qppds/components/sidebar/_animations.scss +38 -0
  231. package/styles/qppds/components/sidebar/_cms.scss +61 -0
  232. package/styles/qppds/components/sidebar/_details.scss +58 -0
  233. package/styles/qppds/components/sidebar/_links.scss +444 -0
  234. package/styles/qppds/components/sidebar/_sidebar-animation.scss +125 -0
  235. package/styles/qppds/components/sidebar/_sidebar-tooltip.scss +33 -0
  236. package/styles/qppds/components/sidebar/_sidebar.scss +146 -0
  237. package/styles/qppds/components/sidebar/project-specific/_wi.scss +42 -0
  238. package/styles/qppds/index.scss +4 -0
  239. package/styles/qppds/settings/_functions.scss +4 -0
  240. package/styles/qppds/settings/_index.scss +3 -0
  241. package/styles/qppds/settings/mixins/_borders.scss +6 -0
  242. package/styles/qppds/settings/mixins/_focus.scss +28 -0
  243. package/styles/qppds/settings/mixins/_icons.scss +33 -0
  244. package/styles/qppds/settings/mixins/_index.scss +8 -0
  245. package/styles/qppds/settings/mixins/_layout.scss +74 -0
  246. package/styles/qppds/settings/mixins/_lists.scss +12 -0
  247. package/styles/qppds/settings/mixins/_table.scss +91 -0
  248. package/styles/qppds/settings/mixins/_type.scss +65 -0
  249. package/styles/qppds/settings/mixins/_visually-hidden.scss +30 -0
  250. package/styles/qppds/settings/variables/_color.scss +86 -0
  251. package/styles/qppds/settings/variables/_index.scss +3 -0
  252. package/styles/qppds/settings/variables/_layout.scss +67 -0
  253. package/styles/qppds/settings/variables/_type.scss +132 -0
  254. package/styles/qppds/utilities/_background-color.scss +134 -0
  255. package/styles/qppds/utilities/_color.scss +32 -0
  256. package/styles/qppds/utilities/_display-visibility.scss +83 -0
  257. package/styles/qppds/utilities/_flexbox.scss +240 -0
  258. package/styles/qppds/utilities/_font-family.scss +9 -0
  259. package/styles/qppds/utilities/_font-size.scss +8 -0
  260. package/styles/qppds/utilities/_font-weight.scss +8 -0
  261. package/styles/qppds/utilities/_height.scss +38 -0
  262. package/styles/qppds/utilities/_margin.scss +136 -0
  263. package/styles/qppds/utilities/_padding.scss +76 -0
  264. package/styles/qppds/utilities/_position.scss +24 -0
  265. package/styles/qppds/utilities/_text-align.scss +40 -0
  266. package/styles/qppds/utilities/_text-transform.scss +7 -0
  267. package/styles/qppds/utilities/_truncate.scss +8 -0
  268. package/styles/qppds/utilities/_width.scss +79 -0
  269. package/styles/qppds/utilities/index.scss +15 -0
  270. package/styles/qppds.scss +2 -0
  271. package/styles/third-party/_legacy-bootstrap.scss +19 -0
  272. package/styles/third-party/legacy-bootstrap/_buttons.scss +126 -0
  273. package/styles/third-party/legacy-bootstrap/_dropdowns.scss +211 -0
  274. package/styles/third-party/legacy-bootstrap/_forms.scss +510 -0
  275. package/styles/third-party/legacy-bootstrap/_grid.scss +73 -0
  276. package/styles/third-party/legacy-bootstrap/_mixins.scss +27 -0
  277. package/styles/third-party/legacy-bootstrap/_navbar.scss +644 -0
  278. package/styles/third-party/legacy-bootstrap/_navs.scss +193 -0
  279. package/styles/third-party/legacy-bootstrap/_normalize.scss +385 -0
  280. package/styles/third-party/legacy-bootstrap/_scaffolding.scss +116 -0
  281. package/styles/third-party/legacy-bootstrap/_variables.scss +858 -0
  282. package/styles/third-party/legacy-bootstrap/mixins/_buttons.scss +70 -0
  283. package/styles/third-party/legacy-bootstrap/mixins/_clearfix.scss +22 -0
  284. package/styles/third-party/legacy-bootstrap/mixins/_forms.scss +108 -0
  285. package/styles/third-party/legacy-bootstrap/mixins/_grid-framework.scss +86 -0
  286. package/styles/third-party/legacy-bootstrap/mixins/_grid.scss +112 -0
  287. package/styles/third-party/legacy-bootstrap/mixins/_labels.scss +12 -0
  288. package/styles/third-party/legacy-bootstrap/mixins/_nav-divider.scss +10 -0
  289. package/styles/third-party/legacy-bootstrap/mixins/_nav-vertical-align.scss +9 -0
  290. package/styles/third-party/legacy-bootstrap/mixins/_opacity.scss +7 -0
  291. package/styles/third-party/legacy-bootstrap/mixins/_panels.scss +30 -0
  292. package/styles/third-party/legacy-bootstrap/mixins/_reset-filter.scss +7 -0
  293. package/styles/third-party/legacy-bootstrap/mixins/_reset-text.scss +18 -0
  294. package/styles/third-party/legacy-bootstrap/mixins/_resize.scss +6 -0
  295. package/styles/third-party/legacy-bootstrap/mixins/_responsive-visibility.scss +25 -0
  296. package/styles/third-party/legacy-bootstrap/mixins/_size.scss +10 -0
  297. package/styles/third-party/legacy-bootstrap/mixins/_tab-focus.scss +9 -0
  298. package/styles/third-party/legacy-bootstrap/mixins/_table-row.scss +28 -0
  299. package/styles/third-party/legacy-bootstrap/mixins/_text-emphasis.scss +12 -0
  300. package/styles/third-party/legacy-bootstrap/mixins/_text-overflow.scss +8 -0
  301. package/styles/third-party/legacy-bootstrap/mixins/_vendor-prefixes.scss +182 -0
  302. package/styles/utility/_mixins.scss +46 -0
  303. package/styles/utility/_utilities.scss +73 -0
  304. package/test/components/Accordion.test.js +12 -0
  305. package/test/components/ErrorUI.test.js +33 -0
  306. package/test/components/FooterUI.test.js +90 -0
  307. package/test/components/HeaderUI.test.js +45 -0
  308. package/test/components/Infotip.test.js +73 -0
  309. package/test/components/SessionDialogUI.test.js +339 -0
  310. package/test/components/SideNavUI.test.js +23 -0
  311. package/test/components/Tooltip.test.js +147 -0
  312. package/test/index.test.js +8 -0
  313. package/test/session/session.test.js +221 -0
  314. package/test-setup.js +9 -0
  315. package/webpack.config.js +147 -0
  316. package/webpack.config.react.js +86 -0
@@ -0,0 +1,70 @@
1
+ // Button variants
2
+ //
3
+ // Easily pump out default styles, as well as :hover, :focus, :active,
4
+ // and disabled options for all buttons
5
+
6
+ @mixin button-variant($color, $background, $border) {
7
+ color: $color;
8
+ background-color: $background;
9
+ border-color: $border;
10
+
11
+ &:focus,
12
+ &.focus {
13
+ color: $color;
14
+ background-color: darken($background, 10%);
15
+ border-color: darken($border, 25%);
16
+ }
17
+
18
+ &:hover {
19
+ color: $color;
20
+ background-color: darken($background, 10%);
21
+ border-color: darken($border, 12%);
22
+ }
23
+
24
+ &:active,
25
+ &.active,
26
+ .open > &.dropdown-toggle {
27
+ color: $color;
28
+ background-color: darken($background, 10%);
29
+ background-image: none;
30
+ border-color: darken($border, 12%);
31
+
32
+ &:hover,
33
+ &:focus,
34
+ &.focus {
35
+ color: $color;
36
+ background-color: darken($background, 17%);
37
+ border-color: darken($border, 25%);
38
+ }
39
+ }
40
+
41
+ &.disabled,
42
+ &[disabled],
43
+ fieldset[disabled] & {
44
+ &:hover,
45
+ &:focus,
46
+ &.focus {
47
+ background-color: $background;
48
+ border-color: $border;
49
+ }
50
+ }
51
+
52
+ .badge {
53
+ color: $background;
54
+ background-color: $color;
55
+ }
56
+ }
57
+
58
+ // Button sizes
59
+ @mixin button-size(
60
+ $padding-vertical,
61
+ $padding-horizontal,
62
+ $font-size,
63
+ $line-height,
64
+ $border-radius
65
+ ) {
66
+ padding: $padding-vertical $padding-horizontal;
67
+ font-size: $font-size;
68
+ line-height: $line-height;
69
+ border-radius: $border-radius;
70
+ }
@@ -0,0 +1,22 @@
1
+ // Clearfix
2
+ //
3
+ // For modern browsers
4
+ // 1. The space content is one way to avoid an Opera bug when the
5
+ // contenteditable attribute is included anywhere else in the document.
6
+ // Otherwise it causes space to appear at the top and bottom of elements
7
+ // that are clearfixed.
8
+ // 2. The use of `table` rather than `block` is only necessary if using
9
+ // `:before` to contain the top-margins of child elements.
10
+ //
11
+ // Source: http://nicolasgallagher.com/micro-clearfix-hack/
12
+ @mixin clearfix() {
13
+ &::before,
14
+ &::after {
15
+ display: table; // 2
16
+ content: ' '; // 1
17
+ }
18
+
19
+ &::after {
20
+ clear: both;
21
+ }
22
+ }
@@ -0,0 +1,108 @@
1
+ // Form validation states
2
+ //
3
+ // Used in forms.less to generate the form validation CSS for warnings, errors,
4
+ // and successes.
5
+
6
+ @mixin form-control-validation(
7
+ $text-color: #555,
8
+ $border-color: #ccc,
9
+ $background-color: #f5f5f5
10
+ ) {
11
+ // Color the label and help text
12
+ .help-block,
13
+ .control-label,
14
+ .radio,
15
+ .checkbox,
16
+ .radio-inline,
17
+ .checkbox-inline,
18
+ &.radio label,
19
+ &.checkbox label,
20
+ &.radio-inline label,
21
+ &.checkbox-inline label {
22
+ color: $text-color;
23
+ }
24
+ // Set the border and box shadow on specific inputs to match
25
+ .form-control {
26
+ border-color: $border-color;
27
+ @include box-shadow(
28
+ inset 0 1px 1px rgba(0, 0, 0, 0.075)
29
+ ); // Redeclare so transitions work
30
+
31
+ &:focus {
32
+ border-color: darken($border-color, 10%);
33
+ $shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
34
+ 0 0 6px lighten($border-color, 20%);
35
+ @include box-shadow($shadow);
36
+ }
37
+ }
38
+ // Set validation states also for addons
39
+ .input-group-addon {
40
+ color: $text-color;
41
+ background-color: $background-color;
42
+ border-color: $border-color;
43
+ }
44
+
45
+ // Optional feedback icon
46
+ .form-control-feedback {
47
+ color: $text-color;
48
+ }
49
+ }
50
+
51
+ // Form control focus state
52
+ //
53
+ // Generate a customized focus state and for any input with the specified color,
54
+ // which defaults to the `$input-border-focus` variable.
55
+ //
56
+ // We highly encourage you to not customize the default value, but instead use
57
+ // this to tweak colors on an as-needed basis. This aesthetic change is based on
58
+ // WebKit's default styles, but applicable to a wider range of browsers. Its
59
+ // usability and accessibility should be taken into account with any change.
60
+ //
61
+ // Example usage: change the default blue border and shadow to white for better
62
+ // contrast against a dark gray background.
63
+ @mixin form-control-focus($color: $input-border-focus) {
64
+ $color-rgba: rgba(red($color), green($color), blue($color), 0.6);
65
+
66
+ &:focus {
67
+ border-color: $color;
68
+ outline: 0;
69
+ @include box-shadow(
70
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
71
+ 0 0 8px $color-rgba
72
+ );
73
+ }
74
+ }
75
+
76
+ // Form control sizing
77
+ //
78
+ // Relative text size, padding, and border-radii changes for form controls. For
79
+ // horizontal sizing, wrap controls in the predefined grid classes. `<select>`
80
+ // element gets special love because it's special, and that's a fact!
81
+ // [converter] $parent hack
82
+ @mixin input-size(
83
+ $parent,
84
+ $input-height,
85
+ $padding-vertical,
86
+ $padding-horizontal,
87
+ $font-size,
88
+ $line-height,
89
+ $border-radius
90
+ ) {
91
+ #{$parent} {
92
+ height: $input-height;
93
+ padding: $padding-vertical $padding-horizontal;
94
+ font-size: $font-size;
95
+ line-height: $line-height;
96
+ border-radius: $border-radius;
97
+ }
98
+
99
+ select#{$parent} {
100
+ height: $input-height;
101
+ line-height: $input-height;
102
+ }
103
+
104
+ textarea#{$parent},
105
+ select[multiple]#{$parent} {
106
+ height: auto;
107
+ }
108
+ }
@@ -0,0 +1,86 @@
1
+ // Framework grid generation
2
+ //
3
+ // Used only by Bootstrap to generate the correct number of grid classes given
4
+ // any value of `$grid-columns`.
5
+
6
+ // [converter] This is defined recursively in LESS, but Sass supports real loops
7
+ @mixin make-grid-columns(
8
+ $i: 1,
9
+ $list: '.col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}'
10
+ ) {
11
+ @for $i from (1 + 1) through $grid-columns {
12
+ $list: '#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}';
13
+ }
14
+ #{$list} {
15
+ position: relative;
16
+ // Prevent columns from collapsing when empty
17
+ min-height: 1px;
18
+ // Inner gutter via padding
19
+ padding-left: ceil(($grid-gutter-width / 2));
20
+ padding-right: floor(($grid-gutter-width / 2));
21
+ }
22
+ }
23
+
24
+ // [converter] This is defined recursively in LESS, but Sass supports real loops
25
+ @mixin float-grid-columns($class, $i: 1, $list: '.col-#{$class}-#{$i}') {
26
+ @for $i from (1 + 1) through $grid-columns {
27
+ $list: '#{$list}, .col-#{$class}-#{$i}';
28
+ }
29
+ #{$list} {
30
+ float: left;
31
+ }
32
+ }
33
+
34
+ @mixin calc-grid-column($index, $class, $type) {
35
+ @if ($type == width) and ($index > 0) {
36
+ .col-#{$class}-#{$index} {
37
+ width: percentage(($index / $grid-columns));
38
+ }
39
+ }
40
+
41
+ @if ($type == push) and ($index > 0) {
42
+ .col-#{$class}-push-#{$index} {
43
+ left: percentage(($index / $grid-columns));
44
+ }
45
+ }
46
+
47
+ @if ($type == push) and ($index == 0) {
48
+ .col-#{$class}-push-0 {
49
+ left: auto;
50
+ }
51
+ }
52
+
53
+ @if ($type == pull) and ($index > 0) {
54
+ .col-#{$class}-pull-#{$index} {
55
+ right: percentage(($index / $grid-columns));
56
+ }
57
+ }
58
+
59
+ @if ($type == pull) and ($index == 0) {
60
+ .col-#{$class}-pull-0 {
61
+ right: auto;
62
+ }
63
+ }
64
+
65
+ @if ($type == offset) {
66
+ .col-#{$class}-offset-#{$index} {
67
+ margin-left: percentage(($index / $grid-columns));
68
+ }
69
+ }
70
+ }
71
+
72
+ // [converter] This is defined recursively in LESS, but Sass supports real loops
73
+ @mixin loop-grid-columns($columns, $class, $type) {
74
+ @for $i from 0 through $columns {
75
+ @include calc-grid-column($i, $class, $type);
76
+ }
77
+ }
78
+
79
+ // Create grid for specific class
80
+ @mixin make-grid($class) {
81
+ @include float-grid-columns($class);
82
+ @include loop-grid-columns($grid-columns, $class, width);
83
+ @include loop-grid-columns($grid-columns, $class, pull);
84
+ @include loop-grid-columns($grid-columns, $class, push);
85
+ @include loop-grid-columns($grid-columns, $class, offset);
86
+ }
@@ -0,0 +1,112 @@
1
+ // Grid system
2
+ //
3
+ // Generate semantic grid columns with these mixins.
4
+ // Creates a wrapper for a series of columns
5
+ @mixin make-row($gutter: $grid-gutter-width) {
6
+ margin-right: floor(($gutter / -2));
7
+ margin-left: ceil(($gutter / -2));
8
+ @include clearfix;
9
+ }
10
+
11
+ // Generate the extra small columns
12
+ @mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
13
+ position: relative;
14
+ float: left;
15
+ width: percentage(($columns / $grid-columns));
16
+ min-height: 1px;
17
+ padding-right: ($gutter / 2);
18
+ padding-left: ($gutter / 2);
19
+ }
20
+ @mixin make-xs-column-offset($columns) {
21
+ margin-left: percentage(($columns / $grid-columns));
22
+ }
23
+ @mixin make-xs-column-push($columns) {
24
+ left: percentage(($columns / $grid-columns));
25
+ }
26
+ @mixin make-xs-column-pull($columns) {
27
+ right: percentage(($columns / $grid-columns));
28
+ }
29
+
30
+ // Generate the small columns
31
+ @mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
32
+ position: relative;
33
+ min-height: 1px;
34
+ padding-right: ($gutter / 2);
35
+ padding-left: ($gutter / 2);
36
+
37
+ @media (min-width: $screen-sm-min) {
38
+ float: left;
39
+ width: percentage(($columns / $grid-columns));
40
+ }
41
+ }
42
+ @mixin make-sm-column-offset($columns) {
43
+ @media (min-width: $screen-sm-min) {
44
+ margin-left: percentage(($columns / $grid-columns));
45
+ }
46
+ }
47
+ @mixin make-sm-column-push($columns) {
48
+ @media (min-width: $screen-sm-min) {
49
+ left: percentage(($columns / $grid-columns));
50
+ }
51
+ }
52
+ @mixin make-sm-column-pull($columns) {
53
+ @media (min-width: $screen-sm-min) {
54
+ right: percentage(($columns / $grid-columns));
55
+ }
56
+ }
57
+
58
+ // Generate the medium columns
59
+ @mixin make-md-column($columns, $gutter: $grid-gutter-width) {
60
+ position: relative;
61
+ min-height: 1px;
62
+ padding-right: ($gutter / 2);
63
+ padding-left: ($gutter / 2);
64
+
65
+ @media (min-width: $screen-md-min) {
66
+ float: left;
67
+ width: percentage(($columns / $grid-columns));
68
+ }
69
+ }
70
+ @mixin make-md-column-offset($columns) {
71
+ @media (min-width: $screen-md-min) {
72
+ margin-left: percentage(($columns / $grid-columns));
73
+ }
74
+ }
75
+ @mixin make-md-column-push($columns) {
76
+ @media (min-width: $screen-md-min) {
77
+ left: percentage(($columns / $grid-columns));
78
+ }
79
+ }
80
+ @mixin make-md-column-pull($columns) {
81
+ @media (min-width: $screen-md-min) {
82
+ right: percentage(($columns / $grid-columns));
83
+ }
84
+ }
85
+
86
+ // Generate the large columns
87
+ @mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
88
+ position: relative;
89
+ min-height: 1px;
90
+ padding-right: ($gutter / 2);
91
+ padding-left: ($gutter / 2);
92
+
93
+ @media (min-width: $screen-lg-min) {
94
+ float: left;
95
+ width: percentage(($columns / $grid-columns));
96
+ }
97
+ }
98
+ @mixin make-lg-column-offset($columns) {
99
+ @media (min-width: $screen-lg-min) {
100
+ margin-left: percentage(($columns / $grid-columns));
101
+ }
102
+ }
103
+ @mixin make-lg-column-push($columns) {
104
+ @media (min-width: $screen-lg-min) {
105
+ left: percentage(($columns / $grid-columns));
106
+ }
107
+ }
108
+ @mixin make-lg-column-pull($columns) {
109
+ @media (min-width: $screen-lg-min) {
110
+ right: percentage(($columns / $grid-columns));
111
+ }
112
+ }
@@ -0,0 +1,12 @@
1
+ // Labels
2
+
3
+ @mixin label-variant($color) {
4
+ background-color: $color;
5
+
6
+ &[href] {
7
+ &:hover,
8
+ &:focus {
9
+ background-color: darken($color, 10%);
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,10 @@
1
+ // Horizontal dividers
2
+ //
3
+ // Dividers (basically an hr) within dropdowns and nav lists
4
+
5
+ @mixin nav-divider($color: #e5e5e5) {
6
+ height: 1px;
7
+ margin: (($line-height-computed / 2) - 1) 0;
8
+ overflow: hidden;
9
+ background-color: $color;
10
+ }
@@ -0,0 +1,9 @@
1
+ // Navbar vertical align
2
+ //
3
+ // Vertically center elements in the navbar.
4
+ // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
5
+
6
+ @mixin navbar-vertical-align($element-height) {
7
+ margin-top: (($navbar-height - $element-height) / 2);
8
+ margin-bottom: (($navbar-height - $element-height) / 2);
9
+ }
@@ -0,0 +1,7 @@
1
+ // Opacity
2
+
3
+ @mixin opacity($opacity) {
4
+ $opacity-ie: ($opacity * 100); // IE8 filter
5
+ filter: alpha(opacity=$opacity-ie);
6
+ opacity: $opacity;
7
+ }
@@ -0,0 +1,30 @@
1
+ // Panels
2
+ @mixin panel-variant(
3
+ $border,
4
+ $heading-text-color,
5
+ $heading-bg-color,
6
+ $heading-border
7
+ ) {
8
+ border-color: $border;
9
+
10
+ & > .panel-heading {
11
+ color: $heading-text-color;
12
+ background-color: $heading-bg-color;
13
+ border-color: $heading-border;
14
+
15
+ + .panel-collapse > .panel-body {
16
+ border-top-color: $border;
17
+ }
18
+
19
+ .badge {
20
+ color: $heading-bg-color;
21
+ background-color: $heading-text-color;
22
+ }
23
+ }
24
+
25
+ & > .panel-footer {
26
+ + .panel-collapse > .panel-body {
27
+ border-bottom-color: $border;
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,7 @@
1
+ // Reset filters for IE
2
+ //
3
+ // When you need to remove a gradient background, do not forget to use this to reset
4
+ // the IE filter for IE9 and below.
5
+ @mixin reset-filter() {
6
+ filter: progid:dximagetransform.microsoft.gradient(enabled = false);
7
+ }
@@ -0,0 +1,18 @@
1
+ @mixin reset-text() {
2
+ font-family: $font-family-base;
3
+ // We deliberately do NOT reset font-size.
4
+ font-style: normal;
5
+ font-weight: 400;
6
+ line-height: $line-height-base;
7
+ line-break: auto;
8
+ text-align: left; // Fallback for where `start` is not supported
9
+ text-align: start;
10
+ text-decoration: none;
11
+ text-shadow: none;
12
+ text-transform: none;
13
+ letter-spacing: normal;
14
+ word-break: normal;
15
+ word-spacing: normal;
16
+ word-wrap: normal;
17
+ white-space: normal;
18
+ }
@@ -0,0 +1,6 @@
1
+ // Resize anything
2
+
3
+ @mixin resizable($direction) {
4
+ overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
5
+ resize: $direction; // Options: horizontal, vertical, both
6
+ }
@@ -0,0 +1,25 @@
1
+ // [converter] $parent hack
2
+ @mixin responsive-visibility($parent) {
3
+ #{$parent} {
4
+ display: block !important;
5
+ }
6
+ table#{$parent} {
7
+ display: table !important;
8
+ }
9
+
10
+ tr#{$parent} {
11
+ display: table-row !important;
12
+ }
13
+
14
+ th#{$parent},
15
+ td#{$parent} {
16
+ display: table-cell !important;
17
+ }
18
+ }
19
+
20
+ // [converter] $parent hack
21
+ @mixin responsive-invisibility($parent) {
22
+ #{$parent} {
23
+ display: none !important;
24
+ }
25
+ }
@@ -0,0 +1,10 @@
1
+ // Sizing shortcuts
2
+
3
+ @mixin size($width, $height) {
4
+ width: $width;
5
+ height: $height;
6
+ }
7
+
8
+ @mixin square($size) {
9
+ @include size($size, $size);
10
+ }
@@ -0,0 +1,9 @@
1
+ // WebKit-style focus
2
+
3
+ @mixin tab-focus() {
4
+ // WebKit-specific. Other browsers will keep their default outline style.
5
+ // (Initially tried to also force default via `outline: initial`,
6
+ // but that seems to erroneously remove the outline in Firefox altogether.)
7
+ outline: 5px auto -webkit-focus-ring-color;
8
+ outline-offset: -2px;
9
+ }
@@ -0,0 +1,28 @@
1
+ // Tables
2
+
3
+ @mixin table-row-variant($state, $background) {
4
+ // Exact selectors below required to override `.table-striped` and prevent
5
+ // inheritance to nested tables.
6
+ .table > thead > tr,
7
+ .table > tbody > tr,
8
+ .table > tfoot > tr {
9
+ > td.#{$state},
10
+ > th.#{$state},
11
+ &.#{$state} > td,
12
+ &.#{$state} > th {
13
+ background-color: $background;
14
+ }
15
+ }
16
+
17
+ // Hover states for `.table-hover`
18
+ // Note: this is not available for cells or rows within `thead` or `tfoot`.
19
+ .table-hover > tbody > tr {
20
+ > td.#{$state}:hover,
21
+ > th.#{$state}:hover,
22
+ &.#{$state}:hover > td,
23
+ &:hover > .#{$state},
24
+ &.#{$state}:hover > th {
25
+ background-color: darken($background, 5%);
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,12 @@
1
+ // Typography
2
+
3
+ // [converter] $parent hack
4
+ @mixin text-emphasis-variant($parent, $color) {
5
+ #{$parent} {
6
+ color: $color;
7
+ }
8
+ a#{$parent}:hover,
9
+ a#{$parent}:focus {
10
+ color: darken($color, 10%);
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ // Text overflow
2
+ // Requires inline-block or block for proper styling
3
+
4
+ @mixin text-overflow() {
5
+ overflow: hidden;
6
+ text-overflow: ellipsis;
7
+ white-space: nowrap;
8
+ }