macbury-metro-ui-rails 0.15.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. data/.gitignore +21 -0
  2. data/.gitmodules +3 -0
  3. data/Gemfile +4 -0
  4. data/README.md +44 -0
  5. data/Rakefile +74 -0
  6. data/lib/generators/metro/layout/layout_generator.rb +19 -0
  7. data/lib/generators/metro/layout/templates/layout.html.erb +92 -0
  8. data/lib/metro/ui/rails/engine.rb +16 -0
  9. data/lib/metro/ui/rails/metro.rb +2 -0
  10. data/lib/metro/ui/rails/version.rb +7 -0
  11. data/lib/metro-ui-rails.rb +10 -0
  12. data/metro-ui-rails.gemspec +20 -0
  13. data/vendor/assets/fonts/metro-ui/iconFont.eot +0 -0
  14. data/vendor/assets/fonts/metro-ui/iconFont.svg +2005 -0
  15. data/vendor/assets/fonts/metro-ui/iconFont.ttf +0 -0
  16. data/vendor/assets/fonts/metro-ui/iconFont.woff +0 -0
  17. data/vendor/assets/javascripts/metro-ui/accordion.js +44 -0
  18. data/vendor/assets/javascripts/metro-ui/buttonset.js +34 -0
  19. data/vendor/assets/javascripts/metro-ui/carousel.js +368 -0
  20. data/vendor/assets/javascripts/metro-ui/dropdown.js +95 -0
  21. data/vendor/assets/javascripts/metro-ui/input-control.js +103 -0
  22. data/vendor/assets/javascripts/metro-ui/pagecontrol.js +64 -0
  23. data/vendor/assets/javascripts/metro-ui/rating.js +249 -0
  24. data/vendor/assets/javascripts/metro-ui/slider.js +248 -0
  25. data/vendor/assets/javascripts/metro-ui/tile-drag.js +332 -0
  26. data/vendor/assets/javascripts/metro-ui/tile-slider.js +196 -0
  27. data/vendor/assets/javascripts/metro-ui.js +10 -0
  28. data/vendor/toolkit/metro-ui/accordion.less +69 -0
  29. data/vendor/toolkit/metro-ui/bricks.less +59 -0
  30. data/vendor/toolkit/metro-ui/buttons.less +434 -0
  31. data/vendor/toolkit/metro-ui/cards.less +113 -0
  32. data/vendor/toolkit/metro-ui/carousel.less +109 -0
  33. data/vendor/toolkit/metro-ui/code.less +47 -0
  34. data/vendor/toolkit/metro-ui/colors.less +115 -0
  35. data/vendor/toolkit/metro-ui/forms.less +434 -0
  36. data/vendor/toolkit/metro-ui/grid.less +115 -0
  37. data/vendor/toolkit/metro-ui/hero.less +18 -0
  38. data/vendor/toolkit/metro-ui/icons.less +1168 -0
  39. data/vendor/toolkit/metro-ui/images.less +121 -0
  40. data/vendor/toolkit/metro-ui/jqgrid.less +12 -0
  41. data/vendor/toolkit/metro-ui/layout.less +287 -0
  42. data/vendor/toolkit/metro-ui/listview.less +143 -0
  43. data/vendor/toolkit/metro-ui/menus.less +249 -0
  44. data/vendor/toolkit/metro-ui/modern-responsive-max480.less +147 -0
  45. data/vendor/toolkit/metro-ui/modern-responsive-max767.less +241 -0
  46. data/vendor/toolkit/metro-ui/modern-responsive-max979.less +97 -0
  47. data/vendor/toolkit/metro-ui/modern-responsive-min1200.less +28 -0
  48. data/vendor/toolkit/metro-ui/modern-responsive.less +13 -0
  49. data/vendor/toolkit/metro-ui/modern.less +35 -0
  50. data/vendor/toolkit/metro-ui/notices.less +185 -0
  51. data/vendor/toolkit/metro-ui/pagecontrol.less +100 -0
  52. data/vendor/toolkit/metro-ui/progress.less +22 -0
  53. data/vendor/toolkit/metro-ui/rating.less +80 -0
  54. data/vendor/toolkit/metro-ui/reset.less +504 -0
  55. data/vendor/toolkit/metro-ui/routines.less +141 -0
  56. data/vendor/toolkit/metro-ui/sidebar.less +136 -0
  57. data/vendor/toolkit/metro-ui/slider.less +67 -0
  58. data/vendor/toolkit/metro-ui/tables.less +164 -0
  59. data/vendor/toolkit/metro-ui/theme-dark.less +54 -0
  60. data/vendor/toolkit/metro-ui/tiles.less +285 -0
  61. data/vendor/toolkit/metro-ui/typography.less +347 -0
  62. metadata +139 -0
@@ -0,0 +1,332 @@
1
+ /**
2
+ * jQuery plugin for drag'n'drop tiles
3
+ *
4
+ * to init plugin just add class 'tile-drag' to your tile-group element
5
+ * or add attribute data-role="tile-drag"
6
+ *
7
+ * to handle drag/drop events use next code
8
+
9
+ $(function(){
10
+ $('#tile_group_id').on('drag', function(e, draggingTile, parentGroup){
11
+ ... your code ...
12
+ });
13
+ $('#tile_group_id').on('drop', function(e, draggingTile, targetGroup){
14
+ ... your code ...
15
+ });
16
+ });
17
+
18
+ *
19
+ * if you want to use drag'n'drop between groups use attribute data-param-group="any_id" to link groups
20
+ */
21
+ (function($) {
22
+
23
+ $.TileDrag = function(element, options) {
24
+
25
+ var defaults = {
26
+ // if group sets and exists other same groups, it is possible to drag'n'drop from one group to another
27
+ group: null
28
+ };
29
+
30
+ var plugin = this;
31
+
32
+ plugin.settings = {};
33
+
34
+ var $element = $(element),
35
+ $groups,
36
+ settings,
37
+ tiles,
38
+ $draggingTile,
39
+ $parentGroup, // parent group for dragging tile
40
+ draggingTileWidth,
41
+ draggingTileHeight,
42
+ $phantomTile,
43
+ tileDeltaX,
44
+ tileDeltaY,
45
+ groupOffsetX,
46
+ groupOffsetY,
47
+ tilesCoordinates,
48
+ tileSearchCount = 0, // uses for findTileUnderCursor function
49
+ tileUnderCursorIndex,
50
+ tileUnderCursorSide;
51
+
52
+ plugin.init = function() {
53
+ settings = plugin.settings = $.extend({}, defaults, options);
54
+
55
+ // if group is set
56
+ if (settings.group) {
57
+ // search other elements with same group
58
+ $groups = $('[data-role=tile-drag], .tile-drag').filter('[data-param-group=' + settings.group + ']');
59
+ } else {
60
+ $groups = $element;
61
+ }
62
+
63
+ // any tile-group must be relative
64
+ $groups.css({
65
+ 'position': 'relative'
66
+ });
67
+
68
+ // select all tiles within group
69
+ tiles = $groups.children('.tile');
70
+
71
+ tiles.on('mousedown', startDrag);
72
+
73
+ };
74
+
75
+ var startDrag = function(event) {
76
+ var $tile,
77
+ tilePosition,
78
+ tilePositionX,
79
+ tilePositionY,
80
+ groupOffset;
81
+
82
+ event.preventDefault();
83
+
84
+ // currently dragging tile
85
+ $draggingTile = $tile = $(this);
86
+
87
+ // search parent group
88
+ $parentGroup = $tile.parents('.tile-drag');
89
+
90
+ // dragging tile dimentions
91
+ draggingTileWidth = $tile.outerWidth();
92
+ draggingTileHeight = $tile.outerHeight();
93
+
94
+ // hidden tile to place it where dragging tile will dropped
95
+ $phantomTile = $('<div></div>');
96
+ $phantomTile.css({
97
+ 'background': 'none'
98
+ });
99
+ $phantomTile.addClass('tile');
100
+ if ($tile.hasClass('double')) {
101
+ $phantomTile.addClass('double');
102
+ } else if ($tile.hasClass('triple')) {
103
+ $phantomTile.addClass('triple');
104
+ } else if ($tile.hasClass('quadro')) {
105
+ $phantomTile.addClass('quadro');
106
+ } else if ($tile.hasClass('double-vertical')) {
107
+ $phantomTile.addClass('double-vertical');
108
+ } else if ($tile.hasClass('triple-vertical')) {
109
+ $phantomTile.addClass('triple-vertical');
110
+ } else if ($tile.hasClass('quadro-vertical')) {
111
+ $phantomTile.addClass('quadro-vertical');
112
+ }
113
+
114
+ // dragging tile position within group
115
+ tilePosition = $tile.position();
116
+ tilePositionX = tilePosition.left;
117
+ tilePositionY = tilePosition.top;
118
+
119
+ // group element offset relate to document border
120
+ groupOffset = $parentGroup.offset();
121
+ groupOffsetX = groupOffset.left;
122
+ groupOffsetY = groupOffset.top;
123
+
124
+ // pixels count between cursor and dragging tile border
125
+ tileDeltaX = event.pageX - groupOffsetX - tilePositionX;
126
+ tileDeltaY = event.pageY - groupOffsetY - tilePositionY;
127
+
128
+ // place phantom tile instead dragging one
129
+ $phantomTile.insertAfter($tile);
130
+
131
+ /*$tile.detach();
132
+ $tile.appendTo($parentGroup);*/
133
+
134
+ // still now it absolutely positioned
135
+ $tile.css({
136
+ 'position': 'absolute',
137
+ 'left': tilePositionX,
138
+ 'top': tilePositionY,
139
+ 'z-index': 100000
140
+ });
141
+
142
+ // store it for future
143
+ $tile.data('dragging', true);
144
+ storeTilesCoordinates();
145
+
146
+ // some necessary event handlers
147
+ $(document).on('mousemove.tiledrag', dragTile);
148
+ $(document).on('mouseup.tiledrag', dragStop);
149
+
150
+ // triggering event
151
+ $groups.trigger('drag', [$draggingTile, $parentGroup]);
152
+ };
153
+
154
+ /**
155
+ * it function called on every mousemove event
156
+ */
157
+ var dragTile = function (event) {
158
+
159
+ // all we need is index of tile under cursor (and under dragging tile) if it exists
160
+ var findTileIndex;
161
+
162
+ event.preventDefault();
163
+
164
+ // move dragging tile
165
+ $draggingTile.css({
166
+ 'left': event.pageX - groupOffsetX - tileDeltaX,
167
+ 'top': event.pageY - groupOffsetY - tileDeltaY
168
+ });
169
+
170
+ findTileIndex = findTileUnderCursor(event);
171
+ if (findTileIndex) {
172
+ clearPlaceForTile($(tiles[findTileIndex]));
173
+ }
174
+ };
175
+
176
+ /**
177
+ * when this function called dragging tile dropping to clear place (instead phantom tile)
178
+ * removing events
179
+ * and some other necessary changes
180
+ */
181
+ var dragStop = function (event) {
182
+ var targetGroup;
183
+
184
+ event.preventDefault();
185
+
186
+ $(document).off('mousemove.tiledrag');
187
+ $(document).off('mouseup.tiledrag');
188
+
189
+ $draggingTile.detach();
190
+ $draggingTile.insertAfter($phantomTile);
191
+
192
+ targetGroup = $phantomTile.parents('.tile-drag');
193
+ $phantomTile.remove();
194
+
195
+ $draggingTile.css({
196
+ 'position': '',
197
+ 'left': '',
198
+ 'top': '',
199
+ 'z-index': ''
200
+ });
201
+
202
+ $draggingTile.data('dragging', false);
203
+
204
+ $groups.trigger('drop', [$draggingTile, targetGroup]);
205
+ };
206
+
207
+ /*
208
+ * stores tiles coordinates for future finding one tile under cursor
209
+ * excluding current dragging tile
210
+ */
211
+ var storeTilesCoordinates = function () {
212
+ tilesCoordinates = {};
213
+ tiles.each(function (index, tile) {
214
+ var $tile, offset;
215
+
216
+ $tile = $(tile);
217
+
218
+ // we dont need dragging tile coordinates
219
+ if ($tile.data('dragging')) return;
220
+
221
+ offset = $tile.offset();
222
+ // it is not real coordinates related to document border
223
+ // but corrected for less computing during dragging (tile moving)
224
+ tilesCoordinates[index] = {
225
+ x1: offset.left + tileDeltaX - draggingTileWidth / 2,
226
+ y1: offset.top + tileDeltaY - draggingTileHeight / 2,
227
+ x2: offset.left + $tile.outerWidth() + tileDeltaX - draggingTileWidth / 2,
228
+ y2: offset.top + $tile.outerHeight() + tileDeltaY - draggingTileHeight / 2
229
+ }
230
+ });
231
+ };
232
+
233
+ /**
234
+ * search tile under cursor using tileCoordinates from storeTilesCoordinates function
235
+ * search occurred only one time per ten times for less load and more smooth
236
+ */
237
+ var findTileUnderCursor = function (event) {
238
+ var i, coord,
239
+ tileIndex = false,
240
+ tileSide;
241
+
242
+ if (tileSearchCount < 10) {
243
+ tileSearchCount++;
244
+ return false;
245
+ }
246
+ tileSearchCount = 0;
247
+
248
+ for (i in tilesCoordinates) {
249
+ if (!tilesCoordinates.hasOwnProperty(i)) return;
250
+ coord = tilesCoordinates[i];
251
+ if (coord.x1 < event.pageX && event.pageX < coord.x2 && coord.y1 < event.pageY && event.pageY < coord.y2) {
252
+ tileIndex = i;
253
+ break;
254
+ }
255
+ }
256
+
257
+ // detect side of tile (left or right) to clear place before or after tile
258
+ if (tileIndex) {
259
+ if (event.pageX < coord.x1 + $(tiles[tileIndex]).outerWidth() / 2) {
260
+ tileSide = 'before';
261
+ } else {
262
+ tileSide = 'after';
263
+ }
264
+ }
265
+ if (tileSide === tileUnderCursorSide && tileIndex === tileUnderCursorIndex) {
266
+ return false;
267
+ }
268
+ tileUnderCursorSide = tileSide;
269
+ tileUnderCursorIndex = tileIndex;
270
+
271
+ return tileIndex;
272
+ };
273
+
274
+ /**
275
+ * just put phantom tile near tile under cursor (before or after)
276
+ * and remove previous phantom tile
277
+ */
278
+ var clearPlaceForTile = function ($tileUnderCursor) {
279
+ var $oldPhantomTile,
280
+ groupOffset;
281
+
282
+ $oldPhantomTile = $phantomTile;
283
+ $phantomTile = $oldPhantomTile.clone();
284
+
285
+ // before or after, this is question ...
286
+ if (tileUnderCursorSide === 'before') {
287
+ $phantomTile.insertBefore($tileUnderCursor);
288
+ } else {
289
+ $phantomTile.insertAfter($tileUnderCursor);
290
+ }
291
+
292
+ $oldPhantomTile.remove();
293
+ // it is necessary to store new tile coordinates
294
+ storeTilesCoordinates();
295
+ // and parent group coordinates
296
+ groupOffset = $parentGroup.offset();
297
+ groupOffsetX = groupOffset.left;
298
+ groupOffsetY = groupOffset.top;
299
+ };
300
+
301
+ // return all groups involved to this plugin
302
+ plugin.getGroups = function () {
303
+ return $groups;
304
+ };
305
+
306
+ plugin.init();
307
+
308
+ };
309
+
310
+ $.fn.TileDrag = function(options) {
311
+
312
+ return this.each(function() {
313
+ if (undefined == $(this).data('TileDrag')) {
314
+ var plugin = new $.TileDrag(this, options);
315
+ var $groups = plugin.getGroups();
316
+ $groups.data('TileDrag', plugin);
317
+ }
318
+ });
319
+
320
+ };
321
+
322
+ })(jQuery);
323
+
324
+ $(function(){
325
+ var allTileGroups = $('[data-role=tile-drag], .tile-drag');
326
+ allTileGroups.each(function (index, tileGroup) {
327
+ var params = {};
328
+ $tileGroup = $(tileGroup);
329
+ params.group = $tileGroup.data('paramGroup');
330
+ $tileGroup.TileDrag(params);
331
+ });
332
+ });
@@ -0,0 +1,196 @@
1
+ $.easing.doubleSqrt = function(t, millisecondsSince, startValue, endValue, totalDuration) {
2
+ var res = Math.sqrt(Math.sqrt(t));
3
+ return res;
4
+ };
5
+
6
+ (function($) {
7
+
8
+ $.tileBlockSlider = function(element, options) {
9
+
10
+ // настройки по умолчанию
11
+ var defaults = {
12
+ // период смены картинок
13
+ period: 2000,
14
+ // продолжительность анимации
15
+ duration: 1000,
16
+ // направление анимации (up, down, left, right)
17
+ direction: 'up'
18
+ };
19
+ // объект плагина
20
+ var plugin = this;
21
+ // настройки конкретного объекта
22
+ plugin.settings = {};
23
+
24
+ var $element = $(element), // reference to the jQuery version of DOM element
25
+ element = element; // reference to the actual DOM element
26
+
27
+ var blocks, // все картинки
28
+ currentBlockIndex, // индекс текущего блока
29
+ slideInPosition, // стартовое положение блока перед началом появления
30
+ slideOutPosition, // финальное положение блока при скрытии
31
+ tileWidth, // размеры плитки
32
+ tileHeight;
33
+
34
+ // инициализируем
35
+ plugin.init = function () {
36
+
37
+ plugin.settings = $.extend({}, defaults, options);
38
+
39
+ // все блоки
40
+ blocks = $element.children(".tile-content");
41
+
42
+ // если блок всего 1, то слайдинг не нужен
43
+ if (blocks.length <= 1) {
44
+ return;
45
+ }
46
+
47
+ // индекс активного в данный момент блока
48
+ currentBlockIndex = 0;
49
+
50
+ // размеры текущей плитки
51
+ tileWidth = $element.innerWidth();
52
+ tileHeight = $element.innerHeight();
53
+ // положение блоков
54
+ slideInPosition = getSlideInPosition();
55
+ slideOutPosition = getSlideOutPosition();
56
+
57
+ // подготавливаем блоки к анимации
58
+ blocks.each(function (index, block) {
59
+ block = $(block);
60
+ // блоки должны быть position:absolute
61
+ // возможно этот параметр задан через класс стилей
62
+ // проверяем, и добавляем если это не так
63
+ if (block.css('position') !== 'absolute') {
64
+ block.css('position', 'absolute');
65
+ }
66
+ // скрываем все блоки кроме первого
67
+ if (index !== 0) {
68
+ block.css('left', tileWidth);
69
+ }
70
+ });
71
+
72
+ // запускаем интервал для смены блоков
73
+ setInterval(function () {
74
+ slideBlock();
75
+ }, plugin.settings.period);
76
+ };
77
+
78
+ // смена блоков
79
+ var slideBlock = function() {
80
+
81
+ var slideOutBlock, // блок который надо скрыть
82
+ slideInBlock, // блок который надо показать
83
+ mainPosition = {'left': 0, 'top': 0},
84
+ options;
85
+
86
+ slideOutBlock = $(blocks[currentBlockIndex]);
87
+
88
+ currentBlockIndex++;
89
+ if (currentBlockIndex >= blocks.length) {
90
+ currentBlockIndex = 0;
91
+ }
92
+ slideInBlock = $(blocks[currentBlockIndex]);
93
+
94
+ slideInBlock.css(slideInPosition);
95
+
96
+ options = {
97
+ duration: plugin.settings.duration,
98
+ easing: 'doubleSqrt'
99
+ };
100
+
101
+ slideOutBlock.animate(slideOutPosition, options);
102
+ slideInBlock.animate(mainPosition, options);
103
+ };
104
+
105
+ /**
106
+ * возвращает стартовую позицию для блока который должен появиться {left: xxx, top: yyy}
107
+ */
108
+ var getSlideInPosition = function () {
109
+ var pos;
110
+ if (plugin.settings.direction === 'left') {
111
+ pos = {
112
+ 'left': tileWidth,
113
+ 'top': 0
114
+ }
115
+ } else if (plugin.settings.direction === 'right') {
116
+ pos = {
117
+ 'left': -tileWidth,
118
+ 'top': 0
119
+ }
120
+ } else if (plugin.settings.direction === 'up') {
121
+ pos = {
122
+ 'left': 0,
123
+ 'top': tileHeight
124
+ }
125
+ } else if (plugin.settings.direction === 'down') {
126
+ pos = {
127
+ 'left': 0,
128
+ 'top': -tileHeight
129
+ }
130
+ }
131
+ return pos;
132
+ };
133
+
134
+ /**
135
+ * возвращает финальную позицию для блока который должен скрыться {left: xxx, top: yyy}
136
+ */
137
+ var getSlideOutPosition = function () {
138
+ var pos;
139
+ if (plugin.settings.direction === 'left') {
140
+ pos = {
141
+ 'left': -tileWidth,
142
+ 'top': 0
143
+ }
144
+ } else if (plugin.settings.direction === 'right') {
145
+ pos = {
146
+ 'left': tileWidth,
147
+ 'top': 0
148
+ }
149
+ } else if (plugin.settings.direction === 'up') {
150
+ pos = {
151
+ 'left': 0,
152
+ 'top': -tileHeight
153
+ }
154
+ } else if (plugin.settings.direction === 'down') {
155
+ pos = {
156
+ 'left': 0,
157
+ 'top': tileHeight
158
+ }
159
+ }
160
+ return pos;
161
+ };
162
+
163
+ plugin.getParams = function() {
164
+
165
+ // code goes here
166
+
167
+ }
168
+
169
+ plugin.init();
170
+
171
+ }
172
+
173
+ $.fn.tileBlockSlider = function(options) {
174
+ return this.each(function() {
175
+ if (undefined == $(this).data('tileBlockSlider')) {
176
+ var plugin = new $.tileBlockSlider(this, options);
177
+ $(this).data('tileBlockSlider', plugin);
178
+ }
179
+ });
180
+ }
181
+
182
+ })(jQuery);
183
+
184
+
185
+ $(window).ready(function(){
186
+ var slidedTiles = $('[data-role=tile-slider], .block-slider, .tile-slider');
187
+ slidedTiles.each(function (index, tile) {
188
+ var params = {};
189
+ tile = $(tile);
190
+ params.direction = tile.data('paramDirection');
191
+ params.duration = tile.data('paramDuration');
192
+ params.period = tile.data('paramPeriod');
193
+ tile.tileBlockSlider(params);
194
+ })
195
+
196
+ });
@@ -0,0 +1,10 @@
1
+ //= require metro-ui/input-control
2
+ //= require metro-ui/rating
3
+ //= require metro-ui/dropdown
4
+ //= require metro-ui/slider
5
+ //= require metro-ui/tile-slider
6
+ //= require metro-ui/tile-drag
7
+ //= require metro-ui/pagecontrol
8
+ //= require metro-ui/carousel
9
+ //= require metro-ui/buttonset
10
+ //= require metro-ui/accordion
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Metro UI CSS
3
+ * Copyright 2012 Sergey Pimenov
4
+ * Licensed under the MIT Lilcense
5
+ *
6
+ * Accordion.less
7
+ */
8
+
9
+ @acc-image-collapse: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHpSURBVEhLtZavT8JRFMXBGQgEg5FAYNNgIBAMBhpsEowEIpFgYLMYMBsMFht/gRNHgRn8EzDoCBY2CAQ3g4GAAz/ncUW+ym++nu3swnn3nfu47/se32BgDobDYRie8DEFozAiHXRhB9aDwWAFvjl1CqYWkDGhSDwjykgmL8QW1LgK7cEMPIA3jF/MKzTGYDBIwLYxbfJMkHMIm/B9YT4JWdiDZVa5Y/JCkBtizqXNPTXZCwa0ciXkTFoZFEoyvw/Vuh8wEEZUS8omrQ28Svh8wO8HYiy2iUu3ZRbw2MarMV6srV6tWbihywLPOH5qVUy9z8FXG/MNeD7A8y0+6xBVnOov7mFKBaJ2iHwFns+EqApot90JnQR9XAk2bRItikRUYBt+OukfoAIdFqCLzAOqrwSbNokIvl1XAOri8hWY7xM6KlCH3qPtD45hTZV2eV51KBIjfXOo5fj1iHEn8OUaNhFCTtgQeD3Cqn11FfUrdJ9fmrQ28CjAPp7agx8gpqF+VtKklSFTPHST5k3ygoEiVPUS1PlYGszTymV+ZdJ0kJCxxAZFRps0B+RoQ9VzPSjTV/4bJEZgGeoa161YwCgpM+MRWh7eWU4Vzdtzw9zXFibGCFnoXls4sO5fCrPv15Ya2i18kv4XgcAXTr+7IYi7bgIAAAAASUVORK5CYII%3D);
10
+ @acc-image-expand: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIzSURBVEhLtZYhSENRFIb3HgaDwWA0LAgaBBcMggu2DTQYFwwG44JBsE6MBpOwIhO0iahYJgoqBoNhFjEqaDAIBsOCsvn99509mXub080f/t33/nPuOfedd+7d82ItUK1W++AslykYh4PSwTN8gsee5x3AF6dGIDKBAjMsMS4zKpCC3DI+QNmVaBjOwFGYx77SKlGISqUyDh+NaZObAp8JeAdff/THIQPLsMAq+03+Efj2MmfN5i6aXA8MWrkc5kz6NUg0xfx3qNJ9AUMfokpSMOnPIFaOOG+w1hCh+MjYtCzY5mENOZMbgK2HWKVwsQhavUrT8gXh11YCAXuCeCrVkM+N+vzJ9/1iYO4ctOsNwznM+PxoEx3AbuMQpjwe45KMm3Ar0APwZPN26cD9JD4Ldq2NpwAhIuZPwW21571uTA+B9ivYtBBIcekqUQ/8cOo/QCW6YtzgJe8EUgCS13UK92OUQQ2h63OuL5zBwP13/yTcVYl24arpTYFz220qEHMBXqtEx7B+a3cH07Do82hq0VGyjTu5C+AJ9d+RJvaeEugMz8NtDL1y6BTE0TFxSmxtOCcM8AQ6z9ec0AGIkYXvxBwxKQBiGpYxNOyJdqGgxNBJ6jZkAzAsQWXPQe2PtsE8rVzB102KBg4z5lgiScLkpsAnju8Z1OkZvfLvwHEQFqCO8ROYJZDOFm1/MYmmPt83nyO0+pobWn62MHGIIQPdZwtd4f6lCFb7bCmqFcNuaUAs9glLFQdwvFGvGQAAAABJRU5ErkJggg%3D%3D);
11
+ @acc-image-collapse-black: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKlSURBVEhLtZY/aNNREMeTXzOYkMGxJBkymDSGDua/QyFuERTULYJLBwdBB8HiXBSc7OxQCdJBHIqpUyodClYU8geFFBwCbSB/BJ0kKuavn3t5rX+S2D+JX7jce3fvd3fv3r17MZv+Ab/fb7fZbJd7vV7CbDa7Ebn6GtNHqNLtdteRp/P5/Oe+eBBDHYhhq9V6h+FdDFRwkDYMYxuDu6JHJo5mkF+EzzJ/xHhxmKMBB5FIJIyh5zLG6PVsNptRihEIBoNnWZdiOI2jq3+vn9JcIRwOJ4lkjYUv2u32pUKhUNSqkajX6xWPx/O42Wye5Nslp9P5tVarvdXqX5DIQ6HQd5xc06Ijg+/PQS12JalTUDuQnFssllcSeS6Xu6c0xwC72XU4HFOk7KHL5VqpVqtfDFHoAzW1Wq3bwseB3W6/T6pKnKMK1Kwr5hNerxx0oIcF6T6Dgyx02pA6JzWVSRkXYOsdbJOgkwbbSUDpvmqikGpMGPy48bSthZNEkcDdZspyh8E8t3BTKxSQ9/TwUKD6/ri0sVjM3el0diRFFubtvvg/gEjfjHO5RoELNwfV5R5UoBklnSDIjA9WMajVdSb7V3tSoHAuUEAZqSIp0VnpRX3V+JADJujz2F41pIczkH6+Eo/HT+g1Y4HqSWFzQy6c6kUYX4RNNxqNYze6PXCwN7E3By3IXHVTuuA3+vh7hEt0w9fSFUV+VGDcR+TPsHOLt+SlyPYfHB6JEk5+MHwiLdfr9W6Vy+VuX3swJHJtfBnjD7R48MmUx4IKeMrCEnxeN66R0Dc2xXpJyw2ML2uVwtBHPxqNuqSf80GS6Ra0BhV5lFTqeE5d6HxSinCplg34AgXzQfS/Y6iDPQQCgVMYSWJAOq4brv62MFZ/W5hnoNXRuzSZfgLYkUQRTJGc4wAAAABJRU5ErkJggg%3D%3D);
12
+ @acc-image-expand-black: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALnSURBVEhLrZY/aNNREMeTXzPYksHBQdoMGUxbSkXSpK2gULcKCnas0MEODoIOgqWrRcHJujpEonQQh2LrVKVCgxWEtMVABMFCW0iTDg4iqNikiZ/vy2vMX2v/fOHy7t293929e/fuxe36B7q6urwtLS1DhUJh0O12+xH5ihrXFpTK5/Ovkc8sLy9/LYprUdeBDDc3N9+BHcdACgczjuN8wuC69MjkqAP5ZcZu5o/hJ+o5qnHQ29sbxtBL8Ri9Ho/H54yiAXp6es6yLgp7EkdXq9c32dEgHA4PE8ksC1/lcrkrKysrSatqiEwmkwoEAk+2t7eP8+1kW1vbj3Q6/cGq/0KRh0KhXzgZsaJ9g+8vQFl2pdQZmB0o5x6P550iX1paumc0BwC7WW9tbW0iZQ99Pt/U5ubmd0cKe6CubDZ7W2M9sMNr7K4gIsq7VlwDr9d7n1Stco4mUEfRM47rQBOJxDcJD4NYLJbD1ihORoLB4ClHdU5qUntVy36ArY8MCzgadvA0CM0UVUcKVeOghx8/9NYKS1DOLWtAEOcsq4t2plpP1E8tu4sk34y7ObQ1mFFu4YJVGOgwLftfoPoqLm1/f79/Z2dnTSnyMM8VxUcPRwesNNl5CTieKCdE5ee0UEdfATqBD/mWok9BHUZaBlJWUevKOR8MiWeMVeurwZpOBe+o5TIpXe2jAiV6CQdzSpG23q1eVFQdHjpggr6I7WlHPRxG/XxqYGDgmF1zKFA9UWzO68KZ0qK3nEDwBScRHI6ZVQcEtm4yPIJOY+uz6aZ0wZ/08QQOJumG79UVJd8vMK6DfYGdW7wlbyQrPTg8Eqs4+Q37TC23vb19cWNjI1/U7g1Fbo1HMP7AimufTD0WVMBzFq6qK9rG1RD2xkZZfx66gfGIVRnUOBD6+vp86ud8MMx0EZqFkjxKJnX2EnWqFBlVLfOMY8q59OWo62AXpp/TcjGgjqumaP62wJu/LcznoOnGu3S5/gDwHX69fcclgQAAAABJRU5ErkJggg%3D%3D);
13
+
14
+ .accordion {
15
+ .unstyled;
16
+ .clearfix;
17
+ margin-bottom: 10px;
18
+
19
+ & > li {
20
+ margin-bottom: 5px;
21
+ display: block;
22
+ //margin-left: -25px;
23
+
24
+ & > a {
25
+ display: block;
26
+ height: 32px;
27
+ background: @acc-image-expand-black 5px no-repeat;
28
+ background-color: rgba(217, 217, 217, 0.16);
29
+ padding-left: 36px;
30
+ padding-top: 5px;
31
+ #font > .navigation;
32
+ }
33
+
34
+ & > div {
35
+ border: 1px #ccc dotted;
36
+ padding: 10px;
37
+ margin-top: 5px;
38
+ display: none;
39
+ }
40
+ }
41
+
42
+ & > li.active {
43
+ & > a {
44
+ background-image: @acc-image-collapse-black;
45
+ background-color: rgba(217, 217, 217, 1);
46
+
47
+ }
48
+
49
+ & > div {
50
+ display: block;
51
+ }
52
+ }
53
+
54
+ &.dark {
55
+ & > li {
56
+ & > a {
57
+ background-color: #464646;
58
+ background-image: @acc-image-expand;
59
+ color: #fff;
60
+ }
61
+ }
62
+ & > li.active {
63
+ & > a {
64
+ background-color: #1e1e1e;
65
+ background-image: @acc-image-collapse;
66
+ }
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Metro UI CSS
3
+ * Copyright 2012 Sergey Pimenov
4
+ * Licensed under the MIT Lilcense
5
+ *
6
+ * Bricks.less
7
+ *
8
+ */
9
+
10
+ .item-margin {
11
+ margin: 0 @subunit*2 @subunit*2 0;
12
+ }
13
+ .column-margin {
14
+ margin: 0 @unit @subunit*2 0;
15
+ }
16
+ .group-margin {
17
+ margin: 0 @unit*4 @subunit*2 0;
18
+ }
19
+
20
+ [class*="-brick"] {
21
+ }
22
+
23
+ .brick {
24
+ .pos-rel;
25
+ .item-margin;
26
+ .as-block;
27
+ }
28
+
29
+ .short-brick {
30
+ .brick;
31
+ width: 150px;
32
+ height: 150px;
33
+ }
34
+
35
+ .medium-brick {
36
+ .brick;
37
+ width: 310px;
38
+ height: 150px;
39
+ }
40
+
41
+ /*
42
+ .badge {
43
+ .brick;
44
+ width: @subunit*7;
45
+ height: @subunit*6;
46
+ padding-top: @subunit;
47
+ #font > .control;
48
+ color: @darken;
49
+ text-align: center;
50
+ }
51
+ */
52
+
53
+ .square {
54
+ display: block;
55
+ float: left;
56
+ margin-right: 10px;
57
+ height: 20px;
58
+ width: 20px;
59
+ }