spree_api_v2 0.2.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 (138) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +38 -0
  5. data/Gemfile +13 -0
  6. data/LICENSE +26 -0
  7. data/README.md +98 -0
  8. data/Rakefile +37 -0
  9. data/app/controllers/concerns/spree/api/v2/renderable.rb +51 -0
  10. data/app/controllers/spree/api/v2/base_controller.rb +31 -0
  11. data/app/controllers/spree/api/v2/children_controller.rb +29 -0
  12. data/app/controllers/spree/api/v2/countries_controller.rb +21 -0
  13. data/app/controllers/spree/api/v2/images_controller.rb +29 -0
  14. data/app/controllers/spree/api/v2/line_items_controller.rb +36 -0
  15. data/app/controllers/spree/api/v2/option_types_controller.rb +31 -0
  16. data/app/controllers/spree/api/v2/option_values_controller.rb +29 -0
  17. data/app/controllers/spree/api/v2/orders_controller.rb +11 -0
  18. data/app/controllers/spree/api/v2/prices_controller.rb +27 -0
  19. data/app/controllers/spree/api/v2/products_controller.rb +37 -0
  20. data/app/controllers/spree/api/v2/states_controller.rb +29 -0
  21. data/app/controllers/spree/api/v2/taxonomies_controller.rb +21 -0
  22. data/app/controllers/spree/api/v2/taxons_controller.rb +40 -0
  23. data/app/controllers/spree/api/v2/variants_controller.rb +35 -0
  24. data/app/models/spree/base_decorator.rb +5 -0
  25. data/app/models/spree/image_decorator.rb +3 -0
  26. data/app/models/spree/price_decorator.rb +3 -0
  27. data/app/models/spree/state_decorator.rb +3 -0
  28. data/app/serializers/spree/address_serializer.rb +9 -0
  29. data/app/serializers/spree/base_serializer.rb +13 -0
  30. data/app/serializers/spree/country_serializer.rb +7 -0
  31. data/app/serializers/spree/error_serializer.rb +52 -0
  32. data/app/serializers/spree/image_serializer.rb +13 -0
  33. data/app/serializers/spree/line_item_serializer.rb +13 -0
  34. data/app/serializers/spree/option_type_serializer.rb +8 -0
  35. data/app/serializers/spree/option_value_serializer.rb +8 -0
  36. data/app/serializers/spree/order_serializer.rb +21 -0
  37. data/app/serializers/spree/price_serializer.rb +7 -0
  38. data/app/serializers/spree/product_serializer.rb +12 -0
  39. data/app/serializers/spree/role_serializer.rb +5 -0
  40. data/app/serializers/spree/state_serializer.rb +7 -0
  41. data/app/serializers/spree/store_serializer.rb +6 -0
  42. data/app/serializers/spree/taxon_serializer.rb +16 -0
  43. data/app/serializers/spree/taxonomy_serializer.rb +7 -0
  44. data/app/serializers/spree/user_serializer.rb +5 -0
  45. data/app/serializers/spree/variant_serializer.rb +12 -0
  46. data/bin/rails +7 -0
  47. data/circle.yml +13 -0
  48. data/config/locales/en.yml +25 -0
  49. data/config/routes.rb +53 -0
  50. data/docs/.nojekyll +0 -0
  51. data/docs/Dockerfile +12 -0
  52. data/docs/Gemfile +13 -0
  53. data/docs/README.md +12 -0
  54. data/docs/Rakefile +9 -0
  55. data/docs/config.rb +39 -0
  56. data/docs/font-selection.json +148 -0
  57. data/docs/source/fonts/slate.eot +0 -0
  58. data/docs/source/fonts/slate.svg +14 -0
  59. data/docs/source/fonts/slate.ttf +0 -0
  60. data/docs/source/fonts/slate.woff +0 -0
  61. data/docs/source/fonts/slate.woff2 +0 -0
  62. data/docs/source/images/logo.png +0 -0
  63. data/docs/source/images/navbar.png +0 -0
  64. data/docs/source/includes/_authentication.md +61 -0
  65. data/docs/source/includes/_countries.md +133 -0
  66. data/docs/source/includes/_errors.md +17 -0
  67. data/docs/source/includes/_filtering.md +11 -0
  68. data/docs/source/includes/_images.md +201 -0
  69. data/docs/source/includes/_line_items.md +137 -0
  70. data/docs/source/includes/_option_types.md +267 -0
  71. data/docs/source/includes/_option_values.md +227 -0
  72. data/docs/source/includes/_orders.md +75 -0
  73. data/docs/source/includes/_pagination.md +10 -0
  74. data/docs/source/includes/_prices.md +188 -0
  75. data/docs/source/includes/_products.md +403 -0
  76. data/docs/source/includes/_states.md +96 -0
  77. data/docs/source/includes/_taxonomies.md +325 -0
  78. data/docs/source/includes/_taxons.md +414 -0
  79. data/docs/source/includes/_variants.md +430 -0
  80. data/docs/source/index.md +53 -0
  81. data/docs/source/javascripts/all.js +4 -0
  82. data/docs/source/javascripts/all_nosearch.js +3 -0
  83. data/docs/source/javascripts/app/_lang.js +162 -0
  84. data/docs/source/javascripts/app/_search.js +74 -0
  85. data/docs/source/javascripts/app/_toc.js +55 -0
  86. data/docs/source/javascripts/lib/_energize.js +169 -0
  87. data/docs/source/javascripts/lib/_imagesloaded.min.js +7 -0
  88. data/docs/source/javascripts/lib/_jquery.highlight.js +108 -0
  89. data/docs/source/javascripts/lib/_jquery.tocify.js +1042 -0
  90. data/docs/source/javascripts/lib/_jquery_ui.js +566 -0
  91. data/docs/source/javascripts/lib/_lunr.js +1910 -0
  92. data/docs/source/layouts/layout.erb +102 -0
  93. data/docs/source/stylesheets/_icon-font.scss +38 -0
  94. data/docs/source/stylesheets/_normalize.css +427 -0
  95. data/docs/source/stylesheets/_syntax.scss.erb +27 -0
  96. data/docs/source/stylesheets/_variables.scss +109 -0
  97. data/docs/source/stylesheets/print.css.scss +142 -0
  98. data/docs/source/stylesheets/screen.css.scss +622 -0
  99. data/lib/solidus_api_v2.rb +5 -0
  100. data/lib/spree_api_v2.rb +4 -0
  101. data/lib/spree_api_v2/engine.rb +21 -0
  102. data/solidus_api_v2.gemspec +36 -0
  103. data/spec/controllers/spree/api/v2/children_controller_spec.rb +28 -0
  104. data/spec/controllers/spree/api/v2/countries_controller_spec.rb +25 -0
  105. data/spec/controllers/spree/api/v2/images_controller_spec.rb +93 -0
  106. data/spec/controllers/spree/api/v2/line_items_controller_spec.rb +86 -0
  107. data/spec/controllers/spree/api/v2/option_types_controller_spec.rb +73 -0
  108. data/spec/controllers/spree/api/v2/option_values_controller_spec.rb +88 -0
  109. data/spec/controllers/spree/api/v2/orders_controller_spec.rb +15 -0
  110. data/spec/controllers/spree/api/v2/prices_controller_spec.rb +55 -0
  111. data/spec/controllers/spree/api/v2/products_controller_spec.rb +95 -0
  112. data/spec/controllers/spree/api/v2/states_controller_spec.rb +42 -0
  113. data/spec/controllers/spree/api/v2/taxonomies_controller_spec.rb +31 -0
  114. data/spec/controllers/spree/api/v2/taxons_controller_spec.rb +54 -0
  115. data/spec/controllers/spree/api/v2/variants_controller_spec.rb +108 -0
  116. data/spec/models/spree/base_decorator_spec.rb +9 -0
  117. data/spec/models/spree/price_decorator_spec.rb +3 -0
  118. data/spec/serializers/spree/address_serializer_spec.rb +35 -0
  119. data/spec/serializers/spree/country_serializer_spec.rb +27 -0
  120. data/spec/serializers/spree/error_serializer_spec.rb +116 -0
  121. data/spec/serializers/spree/image_serializer_spec.rb +30 -0
  122. data/spec/serializers/spree/line_item_serializer_spec.rb +40 -0
  123. data/spec/serializers/spree/option_type_serializer_spec.rb +27 -0
  124. data/spec/serializers/spree/option_value_serializer_spec.rb +29 -0
  125. data/spec/serializers/spree/order_serializer_spec.rb +69 -0
  126. data/spec/serializers/spree/price_serializer_spec.rb +28 -0
  127. data/spec/serializers/spree/product_serializer_spec.rb +47 -0
  128. data/spec/serializers/spree/role_serializer_spec.rb +17 -0
  129. data/spec/serializers/spree/state_serializer_spec.rb +25 -0
  130. data/spec/serializers/spree/store_serializer_spec.rb +25 -0
  131. data/spec/serializers/spree/taxon_serializer_spec.rb +44 -0
  132. data/spec/serializers/spree/taxonomy_serializer_spec.rb +27 -0
  133. data/spec/serializers/spree/user_serializer_spec.rb +17 -0
  134. data/spec/serializers/spree/variant_serializer_spec.rb +55 -0
  135. data/spec/spec_helper.rb +51 -0
  136. data/spec/support/shoulda_matchers.rb +6 -0
  137. data/spree_api_v2.gemspec +36 -0
  138. metadata +437 -0
@@ -0,0 +1,27 @@
1
+ /*
2
+ Copyright 2008-2013 Concur Technologies, Inc.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
5
+ not use this file except in compliance with the License. You may obtain
6
+ a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ License for the specific language governing permissions and limitations
14
+ under the License.
15
+ */
16
+
17
+ @import 'variables';
18
+
19
+ <%= Rouge::Themes::Base16::Monokai.render(:scope => '.highlight') %>
20
+
21
+ .highlight .c, .highlight .cm, .highlight .c1, .highlight .cs {
22
+ color: #909090;
23
+ }
24
+
25
+ .highlight, .highlight .w {
26
+ background-color: $code-bg;
27
+ }
@@ -0,0 +1,109 @@
1
+ /*
2
+ Copyright 2008-2013 Concur Technologies, Inc.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
5
+ not use this file except in compliance with the License. You may obtain
6
+ a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ License for the specific language governing permissions and limitations
14
+ under the License.
15
+ */
16
+
17
+
18
+ ////////////////////////////////////////////////////////////////////////////////
19
+ // CUSTOMIZE SLATE
20
+ ////////////////////////////////////////////////////////////////////////////////
21
+ // Use these settings to help adjust the appearance of Slate
22
+
23
+
24
+ // BACKGROUND COLORS
25
+ ////////////////////
26
+ $nav-bg: #393939;
27
+ $examples-bg: #393939;
28
+ $code-bg: #292929;
29
+ $code-annotation-bg: #1c1c1c;
30
+ $nav-subitem-bg: #262626;
31
+ $nav-active-bg: #2467af;
32
+ $lang-select-border: #000;
33
+ $lang-select-bg: #222;
34
+ $lang-select-active-bg: $examples-bg; // feel free to change this to blue or something
35
+ $lang-select-pressed-bg: #111; // color of language tab bg when mouse is pressed
36
+ $main-bg: #eaf2f6;
37
+ $aside-notice-bg: #8fbcd4;
38
+ $aside-warning-bg: #c97a7e;
39
+ $aside-success-bg: #6ac174;
40
+ $search-notice-bg: #c97a7e;
41
+
42
+
43
+ // TEXT COLORS
44
+ ////////////////////
45
+ $main-text: #333; // main content text color
46
+ $nav-text: #fff;
47
+ $nav-active-text: #fff;
48
+ $lang-select-text: #fff; // color of unselected language tab text
49
+ $lang-select-active-text: #fff; // color of selected language tab text
50
+ $lang-select-pressed-text: #fff; // color of language tab text when mouse is pressed
51
+
52
+
53
+ // SIZES
54
+ ////////////////////
55
+ $nav-width: 250px; // width of the navbar
56
+ $examples-width: 50%; // portion of the screen taken up by code examples
57
+ $logo-margin: 20px; // margin between nav items and logo, ignored if search is active
58
+ $main-padding: 28px; // padding to left and right of content & examples
59
+ $nav-padding: 15px; // padding to left and right of navbar
60
+ $nav-v-padding: 10px; // padding used vertically around search boxes and results
61
+ $nav-indent: 10px; // extra padding for ToC subitems
62
+ $code-annotation-padding: 13px; // padding inside code annotations
63
+ $h1-margin-bottom: 21px; // padding under the largest header tags
64
+ $tablet-width: 930px; // min width before reverting to tablet size
65
+ $phone-width: $tablet-width - $nav-width; // min width before reverting to mobile size
66
+
67
+
68
+ // FONTS
69
+ ////////////////////
70
+ %default-font {
71
+ font-family: "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","微软雅黑", STXihei, "华文细黑", sans-serif;
72
+ font-size: 13px;
73
+ }
74
+
75
+ %header-font {
76
+ @extend %default-font;
77
+ font-weight: bold;
78
+ }
79
+
80
+ %code-font {
81
+ font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;
82
+ font-size: 12px;
83
+ line-height: 1.5;
84
+ }
85
+
86
+
87
+ // OTHER
88
+ ////////////////////
89
+ $nav-active-shadow: #000;
90
+ $nav-footer-border-color: #666;
91
+ $nav-embossed-border-top: #000;
92
+ $nav-embossed-border-bottom: #939393;
93
+ $main-embossed-text-shadow: 0px 1px 0px #fff;
94
+ $search-box-border-color: #666;
95
+
96
+
97
+ ////////////////////////////////////////////////////////////////////////////////
98
+ // INTERNAL
99
+ ////////////////////////////////////////////////////////////////////////////////
100
+ // These settings are probably best left alone.
101
+
102
+ %break-words {
103
+ word-break: break-all;
104
+
105
+ /* Non standard for webkit */
106
+ word-break: break-word;
107
+
108
+ hyphens: auto;
109
+ }
@@ -0,0 +1,142 @@
1
+ @charset "utf-8";
2
+ @import 'normalize';
3
+ @import 'compass';
4
+ @import 'variables';
5
+ @import 'icon-font';
6
+
7
+ /*
8
+ Copyright 2008-2013 Concur Technologies, Inc.
9
+
10
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
11
+ not use this file except in compliance with the License. You may obtain
12
+ a copy of the License at
13
+
14
+ http://www.apache.org/licenses/LICENSE-2.0
15
+
16
+ Unless required by applicable law or agreed to in writing, software
17
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
18
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
19
+ License for the specific language governing permissions and limitations
20
+ under the License.
21
+ */
22
+
23
+ $print-color: #999;
24
+ $print-color-light: #ccc;
25
+ $print-font-size: 12px;
26
+
27
+ body {
28
+ @extend %default-font;
29
+ }
30
+
31
+ .tocify, .toc-footer, .lang-selector, .search, #nav-button {
32
+ display: none;
33
+ }
34
+
35
+ .tocify-wrapper>img {
36
+ margin: 0 auto;
37
+ display: block;
38
+ }
39
+
40
+ .content {
41
+ font-size: 12px;
42
+
43
+ pre, code {
44
+ @extend %code-font;
45
+ @extend %break-words;
46
+ border: 1px solid $print-color;
47
+ border-radius: 5px;
48
+ font-size: 0.8em;
49
+ }
50
+
51
+ pre {
52
+ padding: 1.3em;
53
+ }
54
+
55
+ code {
56
+ padding: 0.2em;
57
+ }
58
+
59
+ table {
60
+ border: 1px solid $print-color;
61
+ tr {
62
+ border-bottom: 1px solid $print-color;
63
+ }
64
+ td,th {
65
+ padding: 0.7em;
66
+ }
67
+ }
68
+
69
+ p {
70
+ line-height: 1.5;
71
+ }
72
+
73
+ a {
74
+ text-decoration: none;
75
+ color: #000;
76
+ }
77
+
78
+ h1 {
79
+ @extend %header-font;
80
+ font-size: 2.5em;
81
+ padding-top: 0.5em;
82
+ padding-bottom: 0.5em;
83
+ margin-top: 1em;
84
+ margin-bottom: $h1-margin-bottom;
85
+ border: 2px solid $print-color-light;
86
+ border-width: 2px 0;
87
+ text-align: center;
88
+ }
89
+
90
+ h2 {
91
+ @extend %header-font;
92
+ font-size: 1.8em;
93
+ margin-top: 2em;
94
+ border-top: 2px solid $print-color-light;
95
+ padding-top: 0.8em;
96
+ }
97
+
98
+ h1+h2, h1+div+h2 {
99
+ border-top: none;
100
+ padding-top: 0;
101
+ margin-top: 0;
102
+ }
103
+
104
+ h3, h4 {
105
+ @extend %header-font;
106
+ font-size: 0.8em;
107
+ margin-top: 1.5em;
108
+ margin-bottom: 0.8em;
109
+ text-transform: uppercase;
110
+ }
111
+
112
+ h5, h6 {
113
+ text-transform: uppercase;
114
+ }
115
+
116
+ aside {
117
+ padding: 1em;
118
+ border: 1px solid $print-color-light;
119
+ border-radius: 5px;
120
+ margin-top: 1.5em;
121
+ margin-bottom: 1.5em;
122
+ line-height: 1.6;
123
+ }
124
+
125
+ aside:before {
126
+ vertical-align: middle;
127
+ padding-right: 0.5em;
128
+ font-size: 14px;
129
+ }
130
+
131
+ aside.notice:before {
132
+ @extend %icon-info-sign;
133
+ }
134
+
135
+ aside.warning:before {
136
+ @extend %icon-exclamation-sign;
137
+ }
138
+
139
+ aside.success:before {
140
+ @extend %icon-ok-sign;
141
+ }
142
+ }
@@ -0,0 +1,622 @@
1
+ @charset "utf-8";
2
+ @import 'normalize';
3
+ @import 'compass';
4
+ @import 'variables';
5
+ @import 'syntax';
6
+ @import 'icon-font';
7
+
8
+ /*
9
+ Copyright 2008-2013 Concur Technologies, Inc.
10
+
11
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
12
+ not use this file except in compliance with the License. You may obtain
13
+ a copy of the License at
14
+
15
+ http://www.apache.org/licenses/LICENSE-2.0
16
+
17
+ Unless required by applicable law or agreed to in writing, software
18
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
19
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
20
+ License for the specific language governing permissions and limitations
21
+ under the License.
22
+ */
23
+
24
+ ////////////////////////////////////////////////////////////////////////////////
25
+ // GENERAL STUFF
26
+ ////////////////////////////////////////////////////////////////////////////////
27
+
28
+ html, body {
29
+ color: $main-text;
30
+ padding: 0;
31
+ margin: 0;
32
+ -webkit-font-smoothing: antialiased;
33
+ -moz-osx-font-smoothing: grayscale;
34
+ @extend %default-font;
35
+ background-color: $main-bg;
36
+ height: 100%;
37
+ -webkit-text-size-adjust: none; /* Never autoresize text */
38
+ }
39
+
40
+ ////////////////////////////////////////////////////////////////////////////////
41
+ // TABLE OF CONTENTS
42
+ ////////////////////////////////////////////////////////////////////////////////
43
+
44
+ #toc > ul > li > a > span {
45
+ float: right;
46
+ background-color: #2484FF;
47
+ border-radius: 40px;
48
+ width: 20px;
49
+ }
50
+
51
+ @mixin embossed-bg {
52
+ background:
53
+ linear-gradient(to bottom, rgba(#000, 0.2), rgba(#000, 0) 8px),
54
+ linear-gradient(to top, rgba(#000, 0.2), rgba(#000, 0) 8px),
55
+ linear-gradient(to bottom, rgba($nav-embossed-border-top, 1), rgba($nav-embossed-border-top, 0) 1.5px),
56
+ linear-gradient(to top, rgba($nav-embossed-border-bottom, 1), rgba($nav-embossed-border-bottom, 0) 1.5px),
57
+ $nav-subitem-bg;
58
+ }
59
+
60
+ .tocify-wrapper {
61
+ transition: left 0.3s ease-in-out;
62
+
63
+ overflow-y: auto;
64
+ overflow-x: hidden;
65
+ position: fixed;
66
+ z-index: 30;
67
+ top: 0;
68
+ left: 0;
69
+ bottom: 0;
70
+ width: $nav-width;
71
+ background-color: $nav-bg;
72
+ font-size: 13px;
73
+ font-weight: bold;
74
+
75
+ // language selector for mobile devices
76
+ .lang-selector {
77
+ display: none;
78
+ a {
79
+ padding-top: 0.5em;
80
+ padding-bottom: 0.5em;
81
+ }
82
+ }
83
+
84
+ // This is the logo at the top of the ToC
85
+ &>img {
86
+ display: block;
87
+ width: 90%;
88
+ padding: 5%;
89
+ }
90
+
91
+ &>.search {
92
+ position: relative;
93
+
94
+ input {
95
+ background: $nav-bg;
96
+ border-width: 0 0 1px 0;
97
+ border-color: $search-box-border-color;
98
+ padding: 6px 0 6px 20px;
99
+ box-sizing: border-box;
100
+ margin: $nav-v-padding $nav-padding;
101
+ width: $nav-width - 30;
102
+ outline: none;
103
+ color: $nav-text;
104
+ border-radius: 0; /* ios has a default border radius */
105
+ }
106
+
107
+ &:before {
108
+ position: absolute;
109
+ top: 17px;
110
+ left: $nav-padding;
111
+ color: $nav-text;
112
+ @extend %icon-search;
113
+ }
114
+ }
115
+
116
+ img+.tocify {
117
+ margin-top: $logo-margin;
118
+ }
119
+
120
+ .search-results {
121
+ margin-top: 0;
122
+ box-sizing: border-box;
123
+ height: 0;
124
+ overflow-y: auto;
125
+ overflow-x: hidden;
126
+ transition-property: height, margin;
127
+ transition-duration: 180ms;
128
+ transition-timing-function: ease-in-out;
129
+ &.visible {
130
+ height: 30%;
131
+ margin-bottom: 1em;
132
+ }
133
+
134
+ @include embossed-bg;
135
+
136
+ li {
137
+ margin: 1em $nav-padding;
138
+ line-height: 1;
139
+ }
140
+
141
+ a {
142
+ color: $nav-text;
143
+ text-decoration: none;
144
+
145
+ &:hover {
146
+ text-decoration: underline;
147
+ }
148
+ }
149
+ }
150
+
151
+
152
+ .tocify-item>a, .toc-footer li {
153
+ padding: 0 $nav-padding 0 $nav-padding;
154
+ display: block;
155
+ overflow-x: hidden;
156
+ white-space: nowrap;
157
+ text-overflow: ellipsis;
158
+ }
159
+
160
+ // The Table of Contents is composed of multiple nested
161
+ // unordered lists. These styles remove the default
162
+ // styling of an unordered list because it is ugly.
163
+ ul, li {
164
+ list-style: none;
165
+ margin: 0;
166
+ padding: 0;
167
+ line-height: 28px;
168
+ }
169
+
170
+ li {
171
+ color: $nav-text;
172
+ transition-property: background;
173
+ transition-timing-function: linear;
174
+ transition-duration: 230ms;
175
+ }
176
+
177
+ // This is the currently selected ToC entry
178
+ .tocify-focus {
179
+ box-shadow: 0px 1px 0px $nav-active-shadow;
180
+ background-color: $nav-active-bg;
181
+ color: $nav-active-text;
182
+ }
183
+
184
+ // Subheaders are the submenus that slide open
185
+ // in the table of contents.
186
+ .tocify-subheader {
187
+ display: none; // tocify will override this when needed
188
+ background-color: $nav-subitem-bg;
189
+ font-weight: 500;
190
+ .tocify-item>a {
191
+ padding-left: $nav-padding + $nav-indent;
192
+ font-size: 12px;
193
+ }
194
+
195
+ // for embossed look:
196
+ @include embossed-bg;
197
+ &>li:last-child {
198
+ box-shadow: none; // otherwise it'll overflow out of the subheader
199
+ }
200
+ }
201
+
202
+ .toc-footer {
203
+ padding: 1em 0;
204
+ margin-top: 1em;
205
+ border-top: 1px dashed $nav-footer-border-color;
206
+
207
+ li,a {
208
+ color: $nav-text;
209
+ text-decoration: none;
210
+ }
211
+
212
+ a:hover {
213
+ text-decoration: underline;
214
+ }
215
+
216
+ li {
217
+ font-size: 0.8em;
218
+ line-height: 1.7;
219
+ text-decoration: none;
220
+ }
221
+ }
222
+
223
+ }
224
+
225
+ // button to show navigation on mobile devices
226
+ #nav-button {
227
+ span {
228
+ display: block;
229
+ $side-pad: $main-padding / 2 - 8px;
230
+ padding: $side-pad $side-pad $side-pad;
231
+ background-color: rgba($main-bg, 0.7);
232
+ transform-origin: 0 0;
233
+ transform: rotate(-90deg) translate(-100%, 0);
234
+ border-radius: 0 0 0 5px;
235
+ }
236
+ padding: 0 1.5em 5em 0; // increase touch size area
237
+ display: none;
238
+ position: fixed;
239
+ top: 0;
240
+ left: 0;
241
+ z-index: 100;
242
+ color: #000;
243
+ text-decoration: none;
244
+ font-weight: bold;
245
+ opacity: 0.7;
246
+ line-height: 16px;
247
+ img {
248
+ height: 16px;
249
+ vertical-align: bottom;
250
+ }
251
+
252
+ transition: left 0.3s ease-in-out;
253
+
254
+ &:hover { opacity: 1; }
255
+ &.open {left: $nav-width}
256
+ }
257
+
258
+
259
+ ////////////////////////////////////////////////////////////////////////////////
260
+ // PAGE LAYOUT AND CODE SAMPLE BACKGROUND
261
+ ////////////////////////////////////////////////////////////////////////////////
262
+
263
+ .page-wrapper {
264
+ margin-left: $nav-width;
265
+ position: relative;
266
+ z-index: 10;
267
+ background-color: $main-bg;
268
+ min-height: 100%;
269
+
270
+ padding-bottom: 1px; // prevent margin overflow
271
+
272
+ // The dark box is what gives the code samples their dark background.
273
+ // It sits essentially under the actual content block, which has a
274
+ // transparent background.
275
+ // I know, it's hackish, but it's the simplist way to make the left
276
+ // half of the content always this background color.
277
+ .dark-box {
278
+ width: $examples-width;
279
+ background-color: $examples-bg;
280
+ position: absolute;
281
+ right: 0;
282
+ top: 0;
283
+ bottom: 0;
284
+ }
285
+
286
+ .lang-selector {
287
+ position: fixed;
288
+ z-index: 50;
289
+ border-bottom: 5px solid $lang-select-active-bg;
290
+ }
291
+ }
292
+
293
+ .lang-selector {
294
+ background-color: $lang-select-bg;
295
+ width: 100%;
296
+ font-weight: bold;
297
+ a {
298
+ display: block;
299
+ float:left;
300
+ color: $lang-select-text;
301
+ text-decoration: none;
302
+ padding: 0 10px;
303
+ line-height: 30px;
304
+ outline: 0;
305
+
306
+ &:active, &:focus {
307
+ background-color: $lang-select-pressed-bg;
308
+ color: $lang-select-pressed-text;
309
+ }
310
+
311
+ &.active {
312
+ background-color: $lang-select-active-bg;
313
+ color: $lang-select-active-text;
314
+ }
315
+ }
316
+
317
+ &:after {
318
+ content: '';
319
+ clear: both;
320
+ display: block;
321
+ }
322
+ }
323
+
324
+ ////////////////////////////////////////////////////////////////////////////////
325
+ // CONTENT STYLES
326
+ ////////////////////////////////////////////////////////////////////////////////
327
+ // This is all the stuff with the light background in the left half of the page
328
+
329
+ .content {
330
+ // to place content above the dark box
331
+ position: relative;
332
+ z-index: 30;
333
+
334
+ &:after {
335
+ content: '';
336
+ display: block;
337
+ clear: both;
338
+ }
339
+
340
+ &>h1, &>h2, &>h3, &>h4, &>h5, &>h6, &>p, &>table, &>ul, &>ol, &>aside, &>dl {
341
+ margin-right: $examples-width;
342
+ padding: 0 $main-padding;
343
+ box-sizing: border-box;
344
+ display: block;
345
+ @include text-shadow($main-embossed-text-shadow);
346
+
347
+ @extend %left-col;
348
+ }
349
+
350
+ &>ul, &>ol {
351
+ padding-left: $main-padding + 15px;
352
+ }
353
+
354
+ // the div is the tocify hidden div for placeholding stuff
355
+ &>h1, &>h2, &>div {
356
+ clear:both;
357
+ }
358
+
359
+ h1 {
360
+ @extend %header-font;
361
+ font-size: 30px;
362
+ padding-top: 0.5em;
363
+ padding-bottom: 0.5em;
364
+ border-bottom: 1px solid #ccc;
365
+ margin-bottom: $h1-margin-bottom;
366
+ margin-top: 2em;
367
+ border-top: 1px solid #ddd;
368
+ background-image: linear-gradient(to bottom, #fff, #f9f9f9);
369
+ }
370
+
371
+ h1:first-child, div:first-child + h1 {
372
+ border-top-width: 0;
373
+ margin-top: 0;
374
+ }
375
+
376
+ h2 {
377
+ @extend %header-font;
378
+ font-size: 20px;
379
+ margin-top: 4em;
380
+ margin-bottom: 0;
381
+ border-top: 1px solid #ccc;
382
+ padding-top: 1.2em;
383
+ padding-bottom: 1.2em;
384
+ background-image: linear-gradient(to bottom, rgba(#fff, 0.4), rgba(#fff, 0));
385
+ }
386
+
387
+ // h2s right after h1s should bump right up
388
+ // against the h1s.
389
+ h1 + h2, h1 + div + h2 {
390
+ margin-top: $h1-margin-bottom * -1;
391
+ border-top: none;
392
+ }
393
+
394
+ h3, h4, h5, h6 {
395
+ @extend %header-font;
396
+ font-size: 15px;
397
+ margin-top: 2.5em;
398
+ margin-bottom: 0.8em;
399
+ }
400
+
401
+ h4, h5, h6 {
402
+ font-size: 10px;
403
+ }
404
+
405
+ hr {
406
+ margin: 2em 0;
407
+ border-top: 2px solid $examples-bg;
408
+ border-bottom: 2px solid $main-bg;
409
+ }
410
+
411
+ table {
412
+ margin-bottom: 1em;
413
+ overflow: auto;
414
+ th,td {
415
+ text-align: left;
416
+ vertical-align: top;
417
+ line-height: 1.6;
418
+ }
419
+
420
+ th {
421
+ padding: 5px 10px;
422
+ border-bottom: 1px solid #ccc;
423
+ vertical-align: bottom;
424
+ }
425
+
426
+ td {
427
+ padding: 10px;
428
+ }
429
+
430
+ tr:last-child {
431
+ border-bottom: 1px solid #ccc;
432
+ }
433
+
434
+ tr:nth-child(odd)>td {
435
+ background-color: lighten($main-bg,4.2%);
436
+ }
437
+
438
+ tr:nth-child(even)>td {
439
+ background-color: lighten($main-bg,2.4%);
440
+ }
441
+ }
442
+
443
+ dt {
444
+ font-weight: bold;
445
+ }
446
+
447
+ dd {
448
+ margin-left: 15px;
449
+ }
450
+
451
+ p, li, dt, dd {
452
+ line-height: 1.6;
453
+ margin-top: 0;
454
+ }
455
+
456
+ img {
457
+ max-width: 100%;
458
+ }
459
+
460
+ code {
461
+ background-color: rgba(0,0,0,0.05);
462
+ padding: 3px;
463
+ border-radius: 3px;
464
+ @extend %break-words;
465
+ @extend %code-font;
466
+ }
467
+
468
+ pre>code {
469
+ background-color: transparent;
470
+ padding: 0;
471
+ }
472
+
473
+ aside {
474
+ padding-top: 1em;
475
+ padding-bottom: 1em;
476
+ @include text-shadow(0 1px 0 lighten($aside-notice-bg, 15%));
477
+ margin-top: 1.5em;
478
+ margin-bottom: 1.5em;
479
+ background: $aside-notice-bg;
480
+ line-height: 1.6;
481
+
482
+ &.warning {
483
+ background-color: $aside-warning-bg;
484
+ @include text-shadow(0 1px 0 lighten($aside-warning-bg, 15%));
485
+ }
486
+
487
+ &.success {
488
+ background-color: $aside-success-bg;
489
+ @include text-shadow(0 1px 0 lighten($aside-success-bg, 15%));
490
+ }
491
+ }
492
+
493
+ aside:before {
494
+ vertical-align: middle;
495
+ padding-right: 0.5em;
496
+ font-size: 14px;
497
+ }
498
+
499
+ aside.notice:before {
500
+ @extend %icon-info-sign;
501
+ }
502
+
503
+ aside.warning:before {
504
+ @extend %icon-exclamation-sign;
505
+ }
506
+
507
+ aside.success:before {
508
+ @extend %icon-ok-sign;
509
+ }
510
+
511
+ .search-highlight {
512
+ padding: 2px;
513
+ margin: -2px;
514
+ border-radius: 4px;
515
+ border: 1px solid #F7E633;
516
+ @include text-shadow(1px 1px 0 #666);
517
+ background: linear-gradient(to top left, #F7E633 0%, #F1D32F 100%);
518
+ }
519
+ }
520
+
521
+ ////////////////////////////////////////////////////////////////////////////////
522
+ // CODE SAMPLE STYLES
523
+ ////////////////////////////////////////////////////////////////////////////////
524
+ // This is all the stuff that appears in the right half of the page
525
+
526
+ .content {
527
+ pre, blockquote {
528
+ background-color: $code-bg;
529
+ color: #fff;
530
+
531
+ padding: 2em $main-padding;
532
+ margin: 0;
533
+ width: $examples-width;
534
+
535
+ float:right;
536
+ clear:right;
537
+
538
+ box-sizing: border-box;
539
+ @include text-shadow(0px 1px 2px rgba(0,0,0,0.4));
540
+
541
+ @extend %right-col;
542
+
543
+ &>p { margin: 0; }
544
+
545
+ a {
546
+ color: #fff;
547
+ text-decoration: none;
548
+ border-bottom: dashed 1px #ccc;
549
+ }
550
+ }
551
+
552
+ pre {
553
+ @extend %code-font;
554
+ }
555
+
556
+ blockquote {
557
+ &>p {
558
+ background-color: $code-annotation-bg;
559
+ border-radius: 5px;
560
+ padding: $code-annotation-padding;
561
+ color: #ccc;
562
+ border-top: 1px solid #000;
563
+ border-bottom: 1px solid #404040;
564
+ }
565
+ }
566
+ }
567
+
568
+ ////////////////////////////////////////////////////////////////////////////////
569
+ // RESPONSIVE DESIGN
570
+ ////////////////////////////////////////////////////////////////////////////////
571
+ // These are the styles for phones and tablets
572
+ // There are also a couple styles disperesed
573
+
574
+ @media (max-width: $tablet-width) {
575
+ .tocify-wrapper {
576
+ left: -$nav-width;
577
+
578
+ &.open {
579
+ left: 0;
580
+ }
581
+ }
582
+
583
+ .page-wrapper {
584
+ margin-left: 0;
585
+ }
586
+
587
+ #nav-button {
588
+ display: block;
589
+ }
590
+
591
+ .tocify-wrapper .tocify-item > a {
592
+ padding-top: 0.3em;
593
+ padding-bottom: 0.3em;
594
+ }
595
+ }
596
+
597
+ @media (max-width: $phone-width) {
598
+ .dark-box {
599
+ display: none;
600
+ }
601
+
602
+ %left-col {
603
+ margin-right: 0;
604
+ }
605
+
606
+ .tocify-wrapper .lang-selector {
607
+ display: block;
608
+ }
609
+
610
+ .page-wrapper .lang-selector {
611
+ display: none;
612
+ }
613
+
614
+ %right-col {
615
+ width: auto;
616
+ float: none;
617
+ }
618
+
619
+ %right-col + %left-col {
620
+ margin-top: $main-padding;
621
+ }
622
+ }