kkt_shoppe 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (239) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +55 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/images/kkt_shoppe/chosen-sprite.png +0 -0
  6. data/app/assets/images/kkt_shoppe/chosen-sprite@2x.png +0 -0
  7. data/app/assets/images/kkt_shoppe/document.svg +1 -0
  8. data/app/assets/images/kkt_shoppe/icons/bag.svg +1 -0
  9. data/app/assets/images/kkt_shoppe/icons/balance.svg +1 -0
  10. data/app/assets/images/kkt_shoppe/icons/box.svg +1 -0
  11. data/app/assets/images/kkt_shoppe/icons/building.svg +1 -0
  12. data/app/assets/images/kkt_shoppe/icons/chart.svg +1 -0
  13. data/app/assets/images/kkt_shoppe/icons/chat.svg +1 -0
  14. data/app/assets/images/kkt_shoppe/icons/checkbox.svg +1 -0
  15. data/app/assets/images/kkt_shoppe/icons/checkbox2.svg +1 -0
  16. data/app/assets/images/kkt_shoppe/icons/cloud.svg +1 -0
  17. data/app/assets/images/kkt_shoppe/icons/cone.svg +1 -0
  18. data/app/assets/images/kkt_shoppe/icons/credit_card.svg +1 -0
  19. data/app/assets/images/kkt_shoppe/icons/currency.svg +1 -0
  20. data/app/assets/images/kkt_shoppe/icons/edit.svg +14 -0
  21. data/app/assets/images/kkt_shoppe/icons/flowchart.svg +1 -0
  22. data/app/assets/images/kkt_shoppe/icons/gift.svg +1 -0
  23. data/app/assets/images/kkt_shoppe/icons/globe.svg +1 -0
  24. data/app/assets/images/kkt_shoppe/icons/id.svg +1 -0
  25. data/app/assets/images/kkt_shoppe/icons/id2.svg +1 -0
  26. data/app/assets/images/kkt_shoppe/icons/locked.svg +1 -0
  27. data/app/assets/images/kkt_shoppe/icons/report.svg +1 -0
  28. data/app/assets/images/kkt_shoppe/icons/search.svg +1 -0
  29. data/app/assets/images/kkt_shoppe/icons/support.svg +1 -0
  30. data/app/assets/images/kkt_shoppe/icons/tags.svg +1 -0
  31. data/app/assets/images/kkt_shoppe/icons/toolbox.svg +1 -0
  32. data/app/assets/images/kkt_shoppe/icons/unlocked.svg +1 -0
  33. data/app/assets/images/kkt_shoppe/icons/wallet.svg +1 -0
  34. data/app/assets/images/kkt_shoppe/kkt_shoppe.svg +25 -0
  35. data/app/assets/images/kkt_shoppe/logo.svg +47 -0
  36. data/app/assets/images/kkt_shoppe/move.svg +1 -0
  37. data/app/assets/images/kkt_shoppe/square.svg +9 -0
  38. data/app/assets/images/kkt_shoppe/statuses/accepted.svg +14 -0
  39. data/app/assets/images/kkt_shoppe/statuses/paid.svg +16 -0
  40. data/app/assets/images/kkt_shoppe/statuses/received.svg +15 -0
  41. data/app/assets/images/kkt_shoppe/statuses/rejected.svg +14 -0
  42. data/app/assets/images/kkt_shoppe/statuses/shipped.svg +14 -0
  43. data/app/assets/images/kkt_shoppe/table-tear-off.png +0 -0
  44. data/app/assets/javascripts/kkt_shoppe/application.coffee +123 -0
  45. data/app/assets/javascripts/kkt_shoppe/chosen.jquery.js +1166 -0
  46. data/app/assets/javascripts/kkt_shoppe/jquery_ui.js +6 -0
  47. data/app/assets/javascripts/kkt_shoppe/mousetrap.js +9 -0
  48. data/app/assets/javascripts/kkt_shoppe/order_form.coffee +47 -0
  49. data/app/assets/stylesheets/kkt_shoppe/application.scss +601 -0
  50. data/app/assets/stylesheets/kkt_shoppe/chosen.scss +424 -0
  51. data/app/assets/stylesheets/kkt_shoppe/dialog.scss +25 -0
  52. data/app/assets/stylesheets/kkt_shoppe/elements.scss +79 -0
  53. data/app/assets/stylesheets/kkt_shoppe/printable.scss +67 -0
  54. data/app/assets/stylesheets/kkt_shoppe/reset.scss +93 -0
  55. data/app/assets/stylesheets/kkt_shoppe/sub.scss +106 -0
  56. data/app/assets/stylesheets/kkt_shoppe/variables.scss +1 -0
  57. data/app/controllers/kkt_shoppe/addresses_controller.rb +47 -0
  58. data/app/controllers/kkt_shoppe/application_controller.rb +46 -0
  59. data/app/controllers/kkt_shoppe/attachments_controller.rb +14 -0
  60. data/app/controllers/kkt_shoppe/countries_controller.rb +47 -0
  61. data/app/controllers/kkt_shoppe/customers_controller.rb +55 -0
  62. data/app/controllers/kkt_shoppe/dashboard_controller.rb +9 -0
  63. data/app/controllers/kkt_shoppe/delivery_service_prices_controller.rb +45 -0
  64. data/app/controllers/kkt_shoppe/delivery_services_controller.rb +47 -0
  65. data/app/controllers/kkt_shoppe/orders_controller.rb +119 -0
  66. data/app/controllers/kkt_shoppe/payments_controller.rb +33 -0
  67. data/app/controllers/kkt_shoppe/product_categories_controller.rb +47 -0
  68. data/app/controllers/kkt_shoppe/product_category_localisations_controller.rb +58 -0
  69. data/app/controllers/kkt_shoppe/product_localisations_controller.rb +58 -0
  70. data/app/controllers/kkt_shoppe/products_controller.rb +58 -0
  71. data/app/controllers/kkt_shoppe/sessions_controller.rb +34 -0
  72. data/app/controllers/kkt_shoppe/settings_controller.rb +16 -0
  73. data/app/controllers/kkt_shoppe/stock_level_adjustments_controller.rb +40 -0
  74. data/app/controllers/kkt_shoppe/tax_rates_controller.rb +49 -0
  75. data/app/controllers/kkt_shoppe/users_controller.rb +53 -0
  76. data/app/controllers/kkt_shoppe/variants_controller.rb +50 -0
  77. data/app/helpers/kkt_shoppe/application_helper.rb +60 -0
  78. data/app/helpers/kkt_shoppe/product_category_helper.rb +36 -0
  79. data/app/mailers/kkt_shoppe/order_mailer.rb +25 -0
  80. data/app/mailers/kkt_shoppe/user_mailer.rb +10 -0
  81. data/app/models/kkt_shoppe/address.rb +44 -0
  82. data/app/models/kkt_shoppe/country.rb +27 -0
  83. data/app/models/kkt_shoppe/customer.rb +41 -0
  84. data/app/models/kkt_shoppe/delivery_service.rb +33 -0
  85. data/app/models/kkt_shoppe/delivery_service_price.rb +31 -0
  86. data/app/models/kkt_shoppe/order/actions.rb +94 -0
  87. data/app/models/kkt_shoppe/order/billing.rb +105 -0
  88. data/app/models/kkt_shoppe/order/delivery.rb +229 -0
  89. data/app/models/kkt_shoppe/order/states.rb +69 -0
  90. data/app/models/kkt_shoppe/order.rb +100 -0
  91. data/app/models/kkt_shoppe/order_item.rb +239 -0
  92. data/app/models/kkt_shoppe/payment.rb +86 -0
  93. data/app/models/kkt_shoppe/product/product_attributes.rb +20 -0
  94. data/app/models/kkt_shoppe/product/variants.rb +51 -0
  95. data/app/models/kkt_shoppe/product.rb +189 -0
  96. data/app/models/kkt_shoppe/product_attribute.rb +66 -0
  97. data/app/models/kkt_shoppe/product_categorization.rb +14 -0
  98. data/app/models/kkt_shoppe/product_category.rb +75 -0
  99. data/app/models/kkt_shoppe/setting.rb +68 -0
  100. data/app/models/kkt_shoppe/stock_level_adjustment.rb +19 -0
  101. data/app/models/kkt_shoppe/tax_rate.rb +46 -0
  102. data/app/models/kkt_shoppe/user.rb +49 -0
  103. data/app/validators/permalink_validator.rb +7 -0
  104. data/app/views/kkt_shoppe/addresses/_form.html.haml +33 -0
  105. data/app/views/kkt_shoppe/addresses/edit.html.haml +5 -0
  106. data/app/views/kkt_shoppe/addresses/new.html.haml +5 -0
  107. data/app/views/kkt_shoppe/countries/_form.html.haml +35 -0
  108. data/app/views/kkt_shoppe/countries/edit.html.haml +6 -0
  109. data/app/views/kkt_shoppe/countries/index.html.haml +25 -0
  110. data/app/views/kkt_shoppe/countries/new.html.haml +7 -0
  111. data/app/views/kkt_shoppe/customers/_addresses.html.haml +20 -0
  112. data/app/views/kkt_shoppe/customers/_form.html.haml +30 -0
  113. data/app/views/kkt_shoppe/customers/_search_form.html.haml +13 -0
  114. data/app/views/kkt_shoppe/customers/edit.html.haml +5 -0
  115. data/app/views/kkt_shoppe/customers/index.html.haml +32 -0
  116. data/app/views/kkt_shoppe/customers/new.html.haml +5 -0
  117. data/app/views/kkt_shoppe/customers/show.html.haml +53 -0
  118. data/app/views/kkt_shoppe/delivery_service_prices/_form.html.haml +44 -0
  119. data/app/views/kkt_shoppe/delivery_service_prices/edit.html.haml +6 -0
  120. data/app/views/kkt_shoppe/delivery_service_prices/index.html.haml +23 -0
  121. data/app/views/kkt_shoppe/delivery_service_prices/new.html.haml +6 -0
  122. data/app/views/kkt_shoppe/delivery_services/_form.html.haml +38 -0
  123. data/app/views/kkt_shoppe/delivery_services/edit.html.haml +9 -0
  124. data/app/views/kkt_shoppe/delivery_services/index.html.haml +27 -0
  125. data/app/views/kkt_shoppe/delivery_services/new.html.haml +6 -0
  126. data/app/views/kkt_shoppe/order_mailer/accepted.text.erb +12 -0
  127. data/app/views/kkt_shoppe/order_mailer/received.text.erb +9 -0
  128. data/app/views/kkt_shoppe/order_mailer/rejected.text.erb +10 -0
  129. data/app/views/kkt_shoppe/order_mailer/shipped.text.erb +16 -0
  130. data/app/views/kkt_shoppe/orders/_form.html.haml +58 -0
  131. data/app/views/kkt_shoppe/orders/_order_details.html.haml +57 -0
  132. data/app/views/kkt_shoppe/orders/_order_items.html.haml +38 -0
  133. data/app/views/kkt_shoppe/orders/_order_items_form.html.haml +61 -0
  134. data/app/views/kkt_shoppe/orders/_payments_form.html.haml +15 -0
  135. data/app/views/kkt_shoppe/orders/_payments_table.html.haml +37 -0
  136. data/app/views/kkt_shoppe/orders/_search_form.html.haml +24 -0
  137. data/app/views/kkt_shoppe/orders/_status_bar.html.haml +35 -0
  138. data/app/views/kkt_shoppe/orders/despatch_note.html.haml +45 -0
  139. data/app/views/kkt_shoppe/orders/edit.html.haml +21 -0
  140. data/app/views/kkt_shoppe/orders/index.html.haml +39 -0
  141. data/app/views/kkt_shoppe/orders/new.html.haml +14 -0
  142. data/app/views/kkt_shoppe/orders/show.html.haml +25 -0
  143. data/app/views/kkt_shoppe/payments/refund.html.haml +13 -0
  144. data/app/views/kkt_shoppe/product_categories/_form.html.haml +50 -0
  145. data/app/views/kkt_shoppe/product_categories/edit.html.haml +8 -0
  146. data/app/views/kkt_shoppe/product_categories/index.html.haml +27 -0
  147. data/app/views/kkt_shoppe/product_categories/new.html.haml +6 -0
  148. data/app/views/kkt_shoppe/product_category_localisations/form.html.haml +29 -0
  149. data/app/views/kkt_shoppe/product_category_localisations/index.html.haml +26 -0
  150. data/app/views/kkt_shoppe/product_localisations/form.html.haml +32 -0
  151. data/app/views/kkt_shoppe/product_localisations/index.html.haml +26 -0
  152. data/app/views/kkt_shoppe/products/_form.html.haml +118 -0
  153. data/app/views/kkt_shoppe/products/_table.html.haml +42 -0
  154. data/app/views/kkt_shoppe/products/edit.html.haml +9 -0
  155. data/app/views/kkt_shoppe/products/import.html.haml +67 -0
  156. data/app/views/kkt_shoppe/products/index.html.haml +9 -0
  157. data/app/views/kkt_shoppe/products/new.html.haml +7 -0
  158. data/app/views/kkt_shoppe/sessions/new.html.haml +12 -0
  159. data/app/views/kkt_shoppe/sessions/reset.html.haml +12 -0
  160. data/app/views/kkt_shoppe/settings/edit.html.haml +19 -0
  161. data/app/views/kkt_shoppe/shared/error.html.haml +6 -0
  162. data/app/views/kkt_shoppe/stock_level_adjustments/index.html.haml +40 -0
  163. data/app/views/kkt_shoppe/tax_rates/form.html.haml +28 -0
  164. data/app/views/kkt_shoppe/tax_rates/index.html.haml +17 -0
  165. data/app/views/kkt_shoppe/user_mailer/new_password.text.erb +9 -0
  166. data/app/views/kkt_shoppe/users/_form.html.haml +27 -0
  167. data/app/views/kkt_shoppe/users/edit.html.haml +5 -0
  168. data/app/views/kkt_shoppe/users/index.html.haml +17 -0
  169. data/app/views/kkt_shoppe/users/new.html.haml +7 -0
  170. data/app/views/kkt_shoppe/variants/form.html.haml +68 -0
  171. data/app/views/kkt_shoppe/variants/index.html.haml +33 -0
  172. data/app/views/layouts/kkt_shoppe/application.html.haml +34 -0
  173. data/app/views/layouts/kkt_shoppe/printable.html.haml +11 -0
  174. data/app/views/layouts/kkt_shoppe/sub.html.haml +10 -0
  175. data/config/locales/de.yml +653 -0
  176. data/config/locales/en.yml +744 -0
  177. data/config/locales/es.yml +653 -0
  178. data/config/locales/pl.yml +662 -0
  179. data/config/locales/pt-BR.yml +655 -0
  180. data/config/routes.rb +53 -0
  181. data/db/countries.txt +252 -0
  182. data/db/migrate/20130926094549_create_kkt_shoppe_initial_schema.rb +175 -0
  183. data/db/migrate/20131024201501_add_address_type_to_kkt_shoppe_tax_rates.rb +5 -0
  184. data/db/migrate/20131024204815_create_kkt_shoppe_payments.rb +32 -0
  185. data/db/migrate/20131102143930_remove_default_on_order_item_weight.rb +9 -0
  186. data/db/migrate/20141013192427_create_kkt_shoppe_customers.rb +14 -0
  187. data/db/migrate/20141026175622_add_indexes_to_kkt_shoppe_order_items.rb +6 -0
  188. data/db/migrate/20141026175943_add_indexes_to_kkt_shoppe_orders.rb +7 -0
  189. data/db/migrate/20141026180333_add_indexes_to_kkt_shoppe_payments.rb +6 -0
  190. data/db/migrate/20141026180835_add_indexes_to_kkt_shoppe_product_attributes.rb +7 -0
  191. data/db/migrate/20141026180952_add_indexes_to_kkt_shoppe_product_categories.rb +5 -0
  192. data/db/migrate/20141026181040_add_indexes_to_kkt_shoppe_products.rb +8 -0
  193. data/db/migrate/20141026181312_add_indexes_to_kkt_shoppe_settings.rb +5 -0
  194. data/db/migrate/20141026181354_add_indexes_to_kkt_shoppe_stock_level_adjustments.rb +6 -0
  195. data/db/migrate/20141026181559_add_indexes_to_kkt_shoppe_users.rb +5 -0
  196. data/db/migrate/20141026181716_add_indexes_to_kkt_shoppe_delivery_services.rb +9 -0
  197. data/db/migrate/20141026181717_allow_multiple_kkt_shoppe_products_per_shoppe_product_category.rb +46 -0
  198. data/db/migrate/20141026181718_add_nested_to_product_categories.rb +30 -0
  199. data/db/migrate/20141027215005_create_kkt_shoppe_addresses.rb +17 -0
  200. data/db/migrate/20150315215633_add_customer_to_kkt_shoppe_orders.rb +5 -0
  201. data/db/migrate/20150513171350_create_kkt_shoppe_product_category_translation_table.rb +17 -0
  202. data/db/migrate/20150519173350_create_kkt_shoppe_product_translation_table.rb +18 -0
  203. data/db/schema.rb +308 -0
  204. data/db/seeds.rb +137 -0
  205. data/db/seeds_data/poe400.jpg +0 -0
  206. data/db/seeds_data/snom-870-blk.jpg +0 -0
  207. data/db/seeds_data/snom-870-grey.jpg +0 -0
  208. data/db/seeds_data/snom-mm2.jpg +0 -0
  209. data/db/seeds_data/spa303.jpg +0 -0
  210. data/db/seeds_data/t18p.jpg +0 -0
  211. data/db/seeds_data/t20p.jpg +0 -0
  212. data/db/seeds_data/t22p.jpg +0 -0
  213. data/db/seeds_data/t26p.jpg +0 -0
  214. data/db/seeds_data/t41pn.jpg +0 -0
  215. data/db/seeds_data/t46gn.jpg +0 -0
  216. data/db/seeds_data/w52p.jpg +0 -0
  217. data/db/seeds_data/yhs32.jpg +0 -0
  218. data/lib/kkt_shoppe/associated_countries.rb +20 -0
  219. data/lib/kkt_shoppe/country_importer.rb +15 -0
  220. data/lib/kkt_shoppe/default_navigation.rb +21 -0
  221. data/lib/kkt_shoppe/engine.rb +55 -0
  222. data/lib/kkt_shoppe/error.rb +21 -0
  223. data/lib/kkt_shoppe/errors/inappropriate_delivery_service.rb +6 -0
  224. data/lib/kkt_shoppe/errors/insufficient_stock_to_fulfil.rb +15 -0
  225. data/lib/kkt_shoppe/errors/invalid_configuration.rb +6 -0
  226. data/lib/kkt_shoppe/errors/not_enough_stock.rb +15 -0
  227. data/lib/kkt_shoppe/errors/payment_declined.rb +6 -0
  228. data/lib/kkt_shoppe/errors/refund_failed.rb +6 -0
  229. data/lib/kkt_shoppe/errors/unorderable_item.rb +6 -0
  230. data/lib/kkt_shoppe/navigation_manager.rb +81 -0
  231. data/lib/kkt_shoppe/orderable_item.rb +39 -0
  232. data/lib/kkt_shoppe/settings.rb +26 -0
  233. data/lib/kkt_shoppe/settings_loader.rb +16 -0
  234. data/lib/kkt_shoppe/setup_generator.rb +10 -0
  235. data/lib/kkt_shoppe/version.rb +3 -0
  236. data/lib/kkt_shoppe/view_helpers.rb +16 -0
  237. data/lib/kkt_shoppe.rb +60 -0
  238. data/lib/tasks/kylekthompson_shoppe.rake +29 -0
  239. metadata +662 -0
@@ -0,0 +1,601 @@
1
+ /*
2
+ *= require kkt_shoppe/reset
3
+ *= require kkt_shoppe/elements
4
+ *= require kkt_shoppe/chosen
5
+ *= require nifty/dialog
6
+ *= require kkt_shoppe/dialog
7
+ *= require_self
8
+ */
9
+
10
+ @import 'variables';
11
+
12
+ html { font-family:$font; font-size:12px; color:#000; -webkit-font-smoothing:antialiased; background-color:#f7f9fc; overflow-y:scroll}
13
+
14
+ nav.sidebar {
15
+ width:200px;
16
+ background:#40454D;
17
+ position:fixed;
18
+ top:0;
19
+ bottom:0;
20
+ header.logo {
21
+ height:57px;
22
+ background:image-url('kkt_shoppe/logo.svg') #9AC835 no-repeat 22px 25px;
23
+ background-size:45px;
24
+ padding-left:80px;
25
+ padding-top:28px;
26
+ h1 a {
27
+ display:block;
28
+ width:72px;
29
+ height:16px;
30
+ background:image-url('kkt_shoppe/kkt_shoppe.svg') no-repeat;
31
+ background-size:72px 16px;
32
+ text-indent:-40000px;
33
+ }
34
+ p { color:#fff; font-size:0.9em; margin-top:4px; }
35
+ }
36
+
37
+ p.logged {
38
+ background:#5B6270;
39
+ padding:12px 20px;
40
+ color:#fff;
41
+ font-size:0.9em;
42
+ }
43
+
44
+ ul {
45
+ li {
46
+ span.pending { float:right; font-size:0.9em; font-weight:bold;background:#5B6270; color:#fff; padding:2px 10px; border-radius:16px; margin-top:9px; margin-right:10px;}
47
+ a {
48
+ display:block;
49
+ border-bottom:1px solid rgba(255,255,255,0.05);
50
+ color:rgba(255,255,255,0.7);
51
+ text-decoration:none;
52
+ padding:10px 20px;
53
+ font-size:1.1em;
54
+ &:hover {
55
+ background:rgba(0,0,0,0.05);
56
+ }
57
+ &.active {
58
+ font-weight:bold;
59
+ color:#fff;
60
+ background:rgba(0,0,0,0.08);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+
67
+ header.main {
68
+ position:fixed;
69
+ left:200px;
70
+ right:0;
71
+ height:85px;
72
+ background:#fff;
73
+ box-shadow: 0 0px 15px -2px rgba(0,0,0,0.2);
74
+ z-index: 1;
75
+ p.buttons { float:right; margin-top:27px; margin-right:35px;}
76
+ p.buttons a { margin-left:10px;}
77
+ h2 { margin-top:28px; margin-left:35px; font-size:2.0em; font-weight:300; color:#333; background-repeat:no-repeat; background-size:22px; background-position:0 5px; padding-left:32px;}
78
+ h2 span { font-size:0.4em; font-weight:normal; color:#999; margin-left:10px;}
79
+ h2 b { font-weight:500;}
80
+ h2.products { background-image:image-url('kkt_shoppe/icons/tags.svg')}
81
+ h2.orders { background-image:image-url('kkt_shoppe/icons/bag.svg'); background-position: 0 3px;}
82
+ h2.delivery_services { background-image:image-url('kkt_shoppe/icons/box.svg'); background-position: 0 3px; background-size:20px;}
83
+ h2.tax_rates { background-image:image-url('kkt_shoppe/icons/currency.svg'); background-position: 0 2px; background-size:22px;}
84
+ h2.users { background-image:image-url('kkt_shoppe/icons/id.svg'); background-position: 0 2px; background-size:22px;}
85
+ h2.countries { background-image:image-url('kkt_shoppe/icons/globe.svg'); background-position: 0 2px; background-size:22px;}
86
+ h2.settings { background-image:image-url('kkt_shoppe/icons/toolbox.svg'); background-position: 0 2px; background-size:22px;}
87
+
88
+ }
89
+
90
+ #content {
91
+ padding-left:200px;
92
+ padding-top:85px;
93
+
94
+ section.main {
95
+ padding:35px;
96
+ }
97
+
98
+ //
99
+ // flashes
100
+ //
101
+ #flash-notice { background:#21a3e0; padding:15px 35px; color:#fff; font-size:1.2em; font-weight:bold;}
102
+ #flash-alert { background:#e04e21; padding:15px 35px; color:#fff; font-size:1.2em; font-weight:bold;}
103
+
104
+ //
105
+ // sub title
106
+ //
107
+ .subtitle {
108
+ background:#fff;
109
+ border:1px solid #CFD4DD;
110
+ margin-bottom:25px;
111
+ padding:15px;
112
+ h3 { font-size:2.0em; font-weight:500;}
113
+ }
114
+
115
+
116
+ //
117
+ // Status tags
118
+ //
119
+ span.status-tag {
120
+ font-weight:600;
121
+ font-size:11px;
122
+ text-transform:uppercase;
123
+ background-size:16px;
124
+ background-repeat:no-repeat;
125
+ padding-left:20px;
126
+ min-height:16px;
127
+ display:inline-block;
128
+ &.shipped { color:#E32479; background-image:image-url('kkt_shoppe/statuses/shipped.svg'); }
129
+ &.accepted { color:#89BD2F; background-image:image-url('kkt_shoppe/statuses/accepted.svg'); }
130
+ &.rejected { color:#E33127; background-image:image-url('kkt_shoppe/statuses/rejected.svg'); }
131
+ &.received { color:#909091; background-image:image-url('kkt_shoppe/statuses/received.svg'); }
132
+ }
133
+
134
+ //
135
+ // fieldset
136
+ //
137
+ fieldset {
138
+ border:1px solid #dce2eb;
139
+ background:#fff;
140
+ padding-top:15px;
141
+ padding-bottom:25px;
142
+ margin-bottom:15px;
143
+ legend {color:#5B6270; margin:0 25px; font-weight:300; font-size:1.5em;}
144
+ &.padded { padding:15px 25px 25px 25px;}
145
+ &.padded legend { margin:0;}
146
+ }
147
+
148
+ //
149
+ // forms
150
+ //
151
+ form {
152
+ fieldset {
153
+
154
+ .splitContainer { margin:0 25px; margin-bottom:15px; height:50px;}
155
+ .splitContainer:last-child { margin-bottom:0;}
156
+
157
+ dl.cleared {
158
+ margin-top:15px;
159
+ clear:both;
160
+ }
161
+
162
+ dl {
163
+ margin:0 25px;
164
+ margin-bottom:15px;
165
+ &:last-child { margin-bottom:0;}
166
+ dt { margin-bottom:10px; font-size:1.2em;}
167
+ dt label { font-weight:500;}
168
+ dd { }
169
+ dd input[type=text], dd input[type=password], textarea {
170
+ }
171
+ dd select { width:100%;}
172
+ dd textarea { height:80px; }
173
+ dd p.help { margin-top:15px; color:#333; background:image-url('kkt_shoppe/icons/support.svg') no-repeat 0 3px; line-height:1.5; background-size:13px; padding-left:18px; opacity:0.7;}
174
+ dd.checkbox { margin-top:14px; font-size:1.1em; color:#999;}
175
+ dd.checkbox input { float:left; margin-right:10px; margin-top:2px; }
176
+ dd div.radios {
177
+ padding-top:4px;
178
+ input,label { margin-right:10px;}
179
+ }
180
+ dd.space { margin-bottom:5px;}
181
+ dd.space:last-child { margin-bottom:0;}
182
+ &.half {
183
+ width:49%;
184
+ margin:0;
185
+ float:left;
186
+ &:last-child { float:right;}
187
+ }
188
+
189
+ &.third {
190
+ width:31%;
191
+ margin:0;
192
+ float:left;
193
+ &:nth-child(2) { margin-left:2%; width:32%;}
194
+ &:last-child { float:right; width:33%;}
195
+ }
196
+
197
+ &.quarter {
198
+ width:23%;
199
+ margin:0;
200
+ margin-left:2%;
201
+ float:left;
202
+ &:last-child { float:right; width:25%;}
203
+ &:first-child { margin:0;}
204
+ }
205
+
206
+ &.three-quarter {
207
+ width:75%;
208
+ margin:0;
209
+ float:right;
210
+ }
211
+ }
212
+
213
+ dl.sided {
214
+ clear:both;
215
+ dt { float:left; width:25%; text-align:right; padding-top:4px;}
216
+ dd { margin-left:30%; }
217
+ dd p.help { margin-top:10px;}
218
+ dd div.checkbox { padding-top:5px;}
219
+ }
220
+
221
+
222
+ //
223
+ // margined container
224
+ //
225
+ div.margin { margin: 0 25px;}
226
+
227
+ //
228
+ // attributes table
229
+ //
230
+ table.productAttributes {
231
+ width:100%;
232
+ margin-bottom:10px;
233
+ line-height:1.0;
234
+ thead td, thead th { text-align:left; border:1px solid #ccc; background:#f7f7f7; color:#999; font-size:0.9em; padding:10px; }
235
+ tr:nth-child(even) td {
236
+ background:#fbfbfb;
237
+ }
238
+ td {
239
+ border:1px solid #ccc;
240
+ padding:10px;
241
+ vertical-align:middle;
242
+ width:40%;
243
+ input[type=text] { width:100%; border:0; padding:0; margin:0; font-size:1.2em;}
244
+ &.remove { width:8%; text-align:center; background:#ffeff5;}
245
+ &.searchable { width:8%; text-align:center; }
246
+ &.handle { width:4%; background:image-url('kkt_shoppe/move.svg') no-repeat center; background-size:16px;}
247
+ }
248
+ }
249
+
250
+ //
251
+ // imports example table
252
+ //
253
+ table.importExample {
254
+ @extend table.productAttributes;
255
+ tr:nth-last-child(2) td {
256
+ border-bottom: none;
257
+ }
258
+ tr.tear-off td {
259
+ border:none;
260
+ background:image-url('kkt_shoppe/table-tear-off.png') repeat-x 0 0;
261
+ height:5px;
262
+ padding:0;
263
+ }
264
+ td {
265
+ border:1px solid #ddd;
266
+ font-size:0.9em;
267
+ width:auto;
268
+ }
269
+ }
270
+
271
+ //
272
+ // category's children table
273
+ //
274
+ table.categoryChildren {
275
+ @extend table.importExample;
276
+ a { color:#000; }
277
+ tr:nth-last-child(2) td {
278
+ border: 1px solid #ddd;
279
+ }
280
+ }
281
+ }
282
+ p.submit {margin:0; background:#fff; border:1px solid #dce2eb; padding:25px; }
283
+ p.submit .button {
284
+ margin-right:5px;
285
+ vertical-align: middle;
286
+ }
287
+ p.submit .right .button {margin-left:5px; margin-right:0;}
288
+ p.submit span.right {float:right;}
289
+ p.submit.sided { padding-left:30%;}
290
+ .errorExplanation {
291
+ margin-bottom:25px;
292
+ border:1px solid #EB2732;
293
+ background:#fff;
294
+ padding:25px;
295
+ line-height:1.5;
296
+ h2 { font-size:1.5em !important; font-weight:300; color:#de1818; margin-bottom:10px;}
297
+ p { display:none;}
298
+ ul li { list-style:disc; margin-left:25px; font-size:1.2em;}
299
+ }
300
+ }
301
+
302
+ //
303
+ // attachment preview
304
+ //
305
+ div.attachmentPreview {
306
+ overflow:hidden;
307
+ border:1px solid #ccc;
308
+ background:#f7f7f7;
309
+ padding:10px;
310
+ margin-bottom:15px;
311
+ div.imgContainer { float:left;padding:4px; border:1px solid #ccc; background:#fff;}
312
+ div.imgContainer div.img { background-image:image-url('kkt_shoppe/document.svg'); width:40px; height:40px; display:block;background-size:contain; background-repeat:no-repeat; background-position: center center;}
313
+ div.imgContainer div.img.none { background-image:none;}
314
+ div.desc {margin-left:60px; padding-top:5px;}
315
+ div.desc span { display:block}
316
+ div.desc span.filename { font-size:1.1em; margin-bottom:5px;}
317
+ div.desc span.filename a { text-decoration:none; font-weight:bold;}
318
+ div.desc span.delete a { color:#FF9781; font-size:0.9em; }
319
+ div.desc a { color:#000;}
320
+ div.desc.none { color:#999; font-style:italic;}
321
+ }
322
+
323
+ //
324
+ // order & customer summary pages
325
+ //
326
+ #order, #customer {
327
+ .details {
328
+ overflow:hidden;
329
+ .left {
330
+ width:55%;
331
+ float:left
332
+ }
333
+ .right {
334
+ width:45%;
335
+ float:left;
336
+ p.acceptreject { text-align:center; margin-top:22px; }
337
+ p.acceptreject a { margin: 0 5px;}
338
+ p.ship { text-align:center; margin-top:22px;}
339
+ p.ship input[type=text] { }
340
+ }
341
+
342
+ dl {
343
+ dt { float:left; width:30%; text-align:right; color:#888;white-space:nowrap}
344
+ dd { font-weight:bold; margin-left:35%; margin-bottom:6px; white-space:nowrap}
345
+ dd a { color:inherit;}
346
+ dt.padding { padding-top:6px;}
347
+ }
348
+
349
+ dl.form {
350
+ margin-top:15px;
351
+ input.text { width:70%;}
352
+ a.button { margin-right:5px;}
353
+ }
354
+
355
+ }
356
+
357
+ .status-bar {
358
+ background:image-url('kkt_shoppe/square.svg') repeat-x 0 15px;
359
+ background-size:8px;
360
+ margin:45px 0;
361
+ overflow:hidden;
362
+ ul {
363
+ li { width:33%;float:left; text-align:center; background:image-url('kkt_shoppe/statuses/shipped.svg') no-repeat center 0; background-size:36px; padding-top:42px;z-index:10;}
364
+ h4 { color:#E32479;}
365
+ li p { margin-top:5px; font-size:0.9em; color:#999;}
366
+ li a { color:inherit;}
367
+ li.payment { background-image:image-url('kkt_shoppe/statuses/paid.svg')}
368
+ li.payment h4 { color:#3DB3E2;}
369
+ li.received { background-image:image-url('kkt_shoppe/statuses/received.svg')}
370
+ li.received h4 { color:#909091;}
371
+ li.accepted { background-image:image-url('kkt_shoppe/statuses/accepted.svg')}
372
+ li.accepted h4 { color:#89BD2F;}
373
+ li.rejected { background-image:image-url('kkt_shoppe/statuses/rejected.svg')}
374
+ li.rejected h4 { color: #E33127}
375
+ }
376
+ }
377
+
378
+ .order_items {
379
+ table.data {
380
+ .money { text-align:right; width:8%}
381
+ .product { width:42%;}
382
+ .sku { width:18%;}
383
+ .qty {text-align:center; width:5%;}
384
+ }
385
+ }
386
+ }
387
+
388
+ //
389
+ // warning message
390
+ //
391
+ p.warning {
392
+ background:#ffffed;
393
+ border:1px solid #ed7c04;
394
+ color:#ed7c04;
395
+ font-size:1.1em;
396
+ font-weight:500;
397
+ margin-bottom:25px;
398
+ padding:15px;
399
+ }
400
+
401
+ //
402
+ // payments
403
+ //
404
+ fieldset.orderPayments {
405
+ h4 { font-weight:bold; text-transform:uppercase; color:#5B6270;}
406
+ .table {
407
+ margin-bottom:20px;
408
+ table td.refund { width:10%; text-align:center;}
409
+ table td.confirmed { width:5%; text-align:center;}
410
+ }
411
+ form {
412
+ overflow:hidden;
413
+ background:#F7F9FC;
414
+ border:1px solid #DCE2EB;
415
+ padding:15px;
416
+ dl {
417
+ width:23%;float:left;
418
+ dt { margin-bottom:4px; font-size:0.9em;color:#A9AEB5; font-weight:500;}
419
+ &.text { width:27%;margin-right:2%;}
420
+ &.amount { width:25%;}
421
+ &.submit { width:15%; text-align:right; margin-top:15px;}
422
+ }
423
+ }
424
+ p.notice {
425
+ background:#fffff3;
426
+ padding:10px;
427
+ color:#F67C00;
428
+ border:1px solid #F6B721;
429
+ margin-bottom:15px;
430
+ }
431
+ }
432
+
433
+ //
434
+ // order search
435
+ //
436
+ div.orderSearch, div.customerSearch {
437
+ overflow:hidden;
438
+ display:none;
439
+ dl.left, dl.right {
440
+ float:left;
441
+ width:50%;
442
+ dt { float:left; width:40%; text-align:right; padding-top:3px; color:#888;}
443
+ dd { margin-left:44%; margin-bottom:15px;}
444
+ dd input.small { width:40%;}
445
+ }
446
+ p.submit {
447
+ float:right;
448
+ }
449
+ }
450
+
451
+ //
452
+ // new order form
453
+ //
454
+ form.orderForm {
455
+ input[type=text].disabled { background:#f7f7f7; color:#888}
456
+ p.slaWarning {
457
+ background:#e5eaf4;
458
+ padding:15px;
459
+ border:1px solid #abb4c6;
460
+ border-top:0;
461
+ text-align:center;
462
+ }
463
+ table.orderItems {
464
+ thead {
465
+ th.product { width:40%;}
466
+ th.qty, th.stock { width:5%; text-align:center;}
467
+ th.price, th.tax, th.total, th.weight { width:50px;}
468
+ }
469
+ tbody {
470
+ td.qty input { text-align:center;}
471
+ td.stock { text-align:center;}
472
+ td input { width:100%; font-size:1.0em; padding:3px; background:#f7f7f7;}
473
+ td.product select {width:400px;}
474
+ tr.item.new td { background:#f7f7f7;}
475
+ td.stock.oos { background:#fff4f4; color:#e32828;}
476
+ tr.delivery td.none { background:#fff4f4; color:#e32828; font-weight:500;}
477
+ }
478
+ tfoot {
479
+ td input { width:100%;padding:3px; background:transparent; border:0; font-size:1.0em; color:#fff;}
480
+ }
481
+
482
+ }
483
+ }
484
+
485
+
486
+ }
487
+
488
+ footer {
489
+ position:fixed;
490
+ bottom:0;
491
+ width:200px;
492
+ background:rgba(0,0,0,0.05);
493
+
494
+ p.store {
495
+ a {
496
+ display:block;
497
+ background:#4B515C;
498
+ color:rgba(255,255,255,0.7);
499
+ padding:12px 20px;
500
+ font-size:1.1em;
501
+ text-decoration:none;
502
+ }
503
+ }
504
+ }
505
+
506
+ span.boolean span.true { color:#96BF48}
507
+ span.boolean span.false { color:#c04a4a}
508
+
509
+ .float-right { float:right;}
510
+
511
+ div.field_with_errors { display:inline;}
512
+
513
+ //
514
+ // money input box
515
+ //
516
+ div.moneyInput {
517
+ overflow:hidden;
518
+ div.currency {float:left; background:#f3f6ec; color:#74884a; padding:5px; width:20px; text-align:center;border:1px solid #c5ceb1; font-size:1.1em; border-right:0;}
519
+ input { width:100px; font-size:1.1em;}
520
+ }
521
+
522
+ //
523
+ // standard text input box
524
+ //
525
+ input.text, textarea.text {
526
+ width:100%; padding:5px; border:1px solid #ccc;
527
+ -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
528
+ -moz-box-sizing: border-box; /* Firefox, other Gecko */
529
+ box-sizing: border-box; /* Opera/IE 8+ */
530
+ font-size:1.1em;
531
+ font-family:$font;
532
+ &:focus { border-color:#9AC835; }
533
+ &.short { width:100px;}
534
+ }
535
+
536
+ //
537
+ // data table
538
+ //
539
+ div.table {
540
+ p.info {
541
+ overflow:hidden;
542
+ margin-bottom:10px;
543
+ color:#40454D;
544
+ }
545
+ }
546
+
547
+ table.data {
548
+ width:100%;
549
+ th, td { padding:10px; vertical-align:middle;}
550
+ thead th { border:1px solid #40454D; background:#40454D; text-align:left; font-weight:normal; font-size:0.9em; color:#fff; }
551
+ tbody td { border:1px solid #cfd4dd; background:#fff;}
552
+ a { color:inherit;}
553
+ tbody th { text-align:left; background:#5B6270; border:1px solid #5B6270;font-size:1.2em; color:#fff;}
554
+ tbody tr.empty td { padding:50px 0; text-align:center; color:#999; font-style:italic;}
555
+ tfoot td.right { text-align:right; }
556
+ tfoot td.bold { font-weight:bold;}
557
+ tfoot td { border-top:0 solid #ccc; background:#fafafa;}
558
+ tfoot tr:first-child td { border-top-width:3px;}
559
+ tbody td a.edit { background:image-url('kkt_shoppe/icons/edit.svg') no-repeat; margin-top:3px;width:16px; width:16px; background-size:13px; display:inline-block; text-indent:-40000px; opacity:0.3}
560
+ tbody td a.edit:hover { opacity:0.5}
561
+ tbody td.table {
562
+ padding:0;
563
+ table.data {
564
+ td { padding:10px; border-width:0; border-right-width:1px; border-bottom-width:1px;}
565
+ td:last-child { border-right-width:0;}
566
+ tr:last-child td { border-bottom-width:0;}
567
+ }
568
+ }
569
+ tbody tr.form {
570
+ td { background:#f2f6fb;}
571
+ input[type=text] { border:1px solid #CFD4DD; padding:5px;}
572
+ input[type=text]:focus { border-color:#9AC835;}
573
+ td.desc input[type=text] { width:95%;}
574
+ td.adjustment input[type=text] { width:50px; margin-right:5px;}
575
+ }
576
+ tfoot td { background:#5B6270; color:#fff; border:1px solid #5B6270; font-weight:bold; font-size:1.1em;}
577
+ }
578
+
579
+ //
580
+ // pagination
581
+ //
582
+ nav.pagination {
583
+ display:block;
584
+ margin:25px 0;
585
+ overflow:hidden;
586
+ text-align:center;
587
+ span {
588
+ display:inline-block;
589
+ border:1px solid #ccc;
590
+ margin-right:3px;
591
+ color:#333;
592
+ background:#fff;
593
+ &.current { background:#9AC835; border-color:#7B9F26; color:#fff; font-weight:600; padding:5px 10px;}
594
+ a {
595
+ padding:5px 10px;
596
+ display:inline-block;
597
+ color:inherit;
598
+ text-decoration:none;
599
+ }
600
+ }
601
+ }