deckr 0.1.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 (89) hide show
  1. data/Gemfile +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +29 -0
  4. data/Rakefile +9 -0
  5. data/bin/deckr +3 -0
  6. data/lib/deckr.rb +7 -0
  7. data/lib/deckr/cli.rb +22 -0
  8. data/lib/deckr/deck.rb +64 -0
  9. data/lib/deckr/package.rb +22 -0
  10. data/lib/deckr/resource.rb +37 -0
  11. data/lib/deckr/templates/Gemfile +5 -0
  12. data/lib/deckr/templates/config.ru +12 -0
  13. data/lib/deckr/templates/deck/GPL-license.txt +278 -0
  14. data/lib/deckr/templates/deck/MIT-license.txt +21 -0
  15. data/lib/deckr/templates/deck/README.md +64 -0
  16. data/lib/deckr/templates/deck/boilerplate.html +96 -0
  17. data/lib/deckr/templates/deck/core/deck.core.css +407 -0
  18. data/lib/deckr/templates/deck/core/deck.core.js +498 -0
  19. data/lib/deckr/templates/deck/core/deck.core.scss +450 -0
  20. data/lib/deckr/templates/deck/extensions/goto/deck.goto.css +41 -0
  21. data/lib/deckr/templates/deck/extensions/goto/deck.goto.html +7 -0
  22. data/lib/deckr/templates/deck/extensions/goto/deck.goto.js +170 -0
  23. data/lib/deckr/templates/deck/extensions/goto/deck.goto.scss +46 -0
  24. data/lib/deckr/templates/deck/extensions/hash/deck.hash.css +13 -0
  25. data/lib/deckr/templates/deck/extensions/hash/deck.hash.html +2 -0
  26. data/lib/deckr/templates/deck/extensions/hash/deck.hash.js +142 -0
  27. data/lib/deckr/templates/deck/extensions/hash/deck.hash.scss +15 -0
  28. data/lib/deckr/templates/deck/extensions/menu/deck.menu.css +47 -0
  29. data/lib/deckr/templates/deck/extensions/menu/deck.menu.js +187 -0
  30. data/lib/deckr/templates/deck/extensions/menu/deck.menu.scss +58 -0
  31. data/lib/deckr/templates/deck/extensions/navigation/deck.navigation.css +43 -0
  32. data/lib/deckr/templates/deck/extensions/navigation/deck.navigation.html +3 -0
  33. data/lib/deckr/templates/deck/extensions/navigation/deck.navigation.js +92 -0
  34. data/lib/deckr/templates/deck/extensions/navigation/deck.navigation.scss +56 -0
  35. data/lib/deckr/templates/deck/extensions/scale/deck.scale.css +28 -0
  36. data/lib/deckr/templates/deck/extensions/scale/deck.scale.js +170 -0
  37. data/lib/deckr/templates/deck/extensions/scale/deck.scale.scss +31 -0
  38. data/lib/deckr/templates/deck/extensions/status/deck.status.css +18 -0
  39. data/lib/deckr/templates/deck/extensions/status/deck.status.html +6 -0
  40. data/lib/deckr/templates/deck/extensions/status/deck.status.js +95 -0
  41. data/lib/deckr/templates/deck/extensions/status/deck.status.scss +22 -0
  42. data/lib/deckr/templates/deck/introduction/index.html +215 -0
  43. data/lib/deckr/templates/deck/jquery-1.7.2.min.js +4 -0
  44. data/lib/deckr/templates/deck/modernizr.custom.js +4 -0
  45. data/lib/deckr/templates/deck/test/fixtures/complex.html +24 -0
  46. data/lib/deckr/templates/deck/test/fixtures/empty.html +19 -0
  47. data/lib/deckr/templates/deck/test/fixtures/iframe_simple.html +10 -0
  48. data/lib/deckr/templates/deck/test/fixtures/iframes.html +32 -0
  49. data/lib/deckr/templates/deck/test/fixtures/nesteds.html +36 -0
  50. data/lib/deckr/templates/deck/test/fixtures/standard.html +42 -0
  51. data/lib/deckr/templates/deck/test/index.html +39 -0
  52. data/lib/deckr/templates/deck/test/lib/jasmine-html.js +190 -0
  53. data/lib/deckr/templates/deck/test/lib/jasmine-jquery.js +288 -0
  54. data/lib/deckr/templates/deck/test/lib/jasmine.css +166 -0
  55. data/lib/deckr/templates/deck/test/lib/jasmine.js +2477 -0
  56. data/lib/deckr/templates/deck/test/settings.js +3 -0
  57. data/lib/deckr/templates/deck/test/spec.core.js +436 -0
  58. data/lib/deckr/templates/deck/test/spec.goto.js +142 -0
  59. data/lib/deckr/templates/deck/test/spec.hash.js +81 -0
  60. data/lib/deckr/templates/deck/test/spec.menu.js +66 -0
  61. data/lib/deckr/templates/deck/test/spec.navigation.js +51 -0
  62. data/lib/deckr/templates/deck/test/spec.scale.js +57 -0
  63. data/lib/deckr/templates/deck/test/spec.status.js +58 -0
  64. data/lib/deckr/templates/deck/themes/style/neon.css +123 -0
  65. data/lib/deckr/templates/deck/themes/style/neon.scss +155 -0
  66. data/lib/deckr/templates/deck/themes/style/swiss.css +84 -0
  67. data/lib/deckr/templates/deck/themes/style/swiss.scss +107 -0
  68. data/lib/deckr/templates/deck/themes/style/web-2.0.css +214 -0
  69. data/lib/deckr/templates/deck/themes/style/web-2.0.scss +250 -0
  70. data/lib/deckr/templates/deck/themes/transition/fade.css +43 -0
  71. data/lib/deckr/templates/deck/themes/transition/fade.scss +69 -0
  72. data/lib/deckr/templates/deck/themes/transition/horizontal-slide.css +76 -0
  73. data/lib/deckr/templates/deck/themes/transition/horizontal-slide.scss +90 -0
  74. data/lib/deckr/templates/deck/themes/transition/vertical-slide.css +94 -0
  75. data/lib/deckr/templates/deck/themes/transition/vertical-slide.scss +112 -0
  76. data/lib/deckr/templates/views/index.slim +13 -0
  77. data/lib/deckr/templates/views/layout.slim +48 -0
  78. data/lib/deckr/version.rb +3 -0
  79. data/lib/rack/deckr.rb +31 -0
  80. data/lib/sinatra/deckr.rb +17 -0
  81. data/spec/deck_spec.rb +118 -0
  82. data/spec/fixtures/foo.txt +1 -0
  83. data/spec/fixtures/foo/bar.txt +1 -0
  84. data/spec/package_spec.rb +45 -0
  85. data/spec/rack/deckr_spec.rb +38 -0
  86. data/spec/resource_spec.rb +62 -0
  87. data/spec/sinatra/deckr_spec.rb +32 -0
  88. data/spec/spec_helper.rb +27 -0
  89. metadata +161 -0
@@ -0,0 +1,81 @@
1
+ describe('Deck JS Hash Extension', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should assign ids to slides that do not have them', function() {
14
+ var slides = $.deck('getSlides');
15
+ $.each(slides, function(i, $e) {
16
+ expect($e.attr('id')).toBeTruthy();
17
+ });
18
+ });
19
+
20
+ it('should reassign ids on reinitialization', function() {
21
+ var $firstSlide = $.deck('getSlide', 0),
22
+ firstID = $firstSlide.attr('id');
23
+
24
+ $firstSlide.before('<div class="slide"></div>');
25
+ $.deck('.slide');
26
+ expect($firstSlide).not.toHaveId(firstID);
27
+ });
28
+
29
+ it('should update container with a state class including the slide id', function() {
30
+ var $c = $.deck('getContainer'),
31
+ osp = defaults.classes.onPrefix;
32
+
33
+ expect($c).toHaveClass(osp + $.deck('getSlide', 0).attr('id'));
34
+ $.deck('next');
35
+ expect($c).toHaveClass(osp + $.deck('getSlide', 1).attr('id'));
36
+ $.deck('next');
37
+ expect($c).not.toHaveClass(osp + $.deck('getSlide', 1).attr('id'));
38
+ expect($c).toHaveClass(osp + $.deck('getSlide', 2).attr('id'));
39
+ });
40
+
41
+ it('should update the href on slide change', function() {
42
+ var $hashLink = $(defaults.selectors.hashLink);
43
+ $.deck('go', 3);
44
+ expect($hashLink.attr('href')).toMatch('#slide-3');
45
+ });
46
+
47
+ it('should use existing ids if they exist', function() {
48
+ var $hashLink = $(defaults.selectors.hashLink);
49
+ $.deck('go', 1);
50
+ expect($hashLink.attr('href')).toMatch('#custom-id');
51
+ });
52
+
53
+ it('should update the URL on slide change (if supported)', function() {
54
+ if (Modernizr.history) {
55
+ $.deck('go', 3);
56
+ expect(window.location.hash).toEqual('#slide-3');
57
+ }
58
+ });
59
+
60
+ it('should deep link to slide on deck init', function() {
61
+ window.location.hash = "#slide-3";
62
+ $.deck('.slide');
63
+ expect($.deck('getSlide')).toHaveId('slide-3');
64
+ });
65
+
66
+ it('should follow internal hash links using hashchange (if supported)', function() {
67
+ if (Modernizr.hashchange) {
68
+ window.location.hash = "#slide-3";
69
+
70
+ // Hashchange event doesn't fire right when the hash changes?
71
+ waitsFor(function() {
72
+ return $.deck('getSlide').attr('id') === 'slide-3';
73
+ }, 'hash to change to slide-3', 2000);
74
+ }
75
+ });
76
+
77
+ it('should follow internal hash links on click', function() {
78
+ /* Triggered clicks dont generate hashchanges, so until I find
79
+ a way to do this in an automated fashion, needs to be hand tested. */
80
+ });
81
+ });
@@ -0,0 +1,66 @@
1
+ describe('Deck JS Menu', function() {
2
+ var $d = $(document),
3
+ dsc = defaults.selectors.container;
4
+
5
+ beforeEach(function() {
6
+ loadFixtures('standard.html');
7
+ if (Modernizr.history) {
8
+ history.replaceState({}, "", "#")
9
+ }
10
+ else {
11
+ window.location.hash = '#';
12
+ }
13
+ $.deck('.slide');
14
+ });
15
+
16
+ describe('showMenu()', function() {
17
+ it('should show the menu', function() {
18
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
19
+ $.deck('showMenu');
20
+ expect($(dsc)).toHaveClass(defaults.classes.menu);
21
+ });
22
+
23
+ it('should do nothing if menu is already showing', function() {
24
+ if (Modernizr.csstransforms) {
25
+ $.deck('showMenu');
26
+ $.deck('showMenu');
27
+ $.deck('hideMenu');
28
+ expect($('.slide').attr('style')).toBeFalsy();
29
+ }
30
+ });
31
+ });
32
+
33
+ describe('hideMenu()', function() {
34
+ it('should hide the menu', function() {
35
+ $.deck('showMenu');
36
+ $.deck('hideMenu');
37
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
38
+ });
39
+ });
40
+
41
+ describe('toggleMenu()', function() {
42
+ it('should toggle menu on and off', function() {
43
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
44
+ $.deck('toggleMenu');
45
+ expect($(dsc)).toHaveClass(defaults.classes.menu);
46
+ $.deck('toggleMenu');
47
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
48
+ });
49
+ });
50
+
51
+ describe('key bindings', function() {
52
+ var e;
53
+
54
+ beforeEach(function() {
55
+ e = jQuery.Event('keydown.deckmenu');
56
+ });
57
+
58
+ it('should toggle the menu if the specified key is pressed', function() {
59
+ e.which = 77; // m
60
+ $d.trigger(e);
61
+ expect($(dsc)).toHaveClass(defaults.classes.menu);
62
+ $d.trigger(e);
63
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
64
+ });
65
+ });
66
+ });
@@ -0,0 +1,51 @@
1
+ describe('Deck JS Navigation Buttons', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should go to the next slide if next link is clicked', function() {
14
+ $(defaults.selectors.nextLink).click();
15
+ expect($.deck('getSlide')).toHaveClass('slide2');
16
+ });
17
+
18
+ it('should go to the previous slide if previous link is clicked', function() {
19
+ $.deck('go', 2);
20
+ $(defaults.selectors.previousLink).click();
21
+ expect($.deck('getSlide')).toHaveClass('slide2');
22
+ });
23
+
24
+ it('should add the disabled class to the previous link if on first slide', function() {
25
+ expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled);
26
+ $(defaults.selectors.nextLink).click();
27
+ expect($(defaults.selectors.previousLink)).not.toHaveClass(defaults.classes.navDisabled);
28
+ $(defaults.selectors.previousLink).click();
29
+ expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled);
30
+ });
31
+
32
+ it('should add the disabled class to the next link if on last slide', function() {
33
+ expect($(defaults.selectors.nextLink)).not.toHaveClass(defaults.classes.navDisabled);
34
+ $.deck('go', $.deck('getSlides').length - 1);
35
+ expect($(defaults.selectors.nextLink)).toHaveClass(defaults.classes.navDisabled);
36
+ });
37
+
38
+ it('should not start disabled if deck initialized in the middle', function() {
39
+ $.deck('go', 2);
40
+ $.deck('.slide');
41
+ expect($(defaults.selectors.previousLink)).not.toHaveClass(defaults.classes.navDisabled);
42
+ });
43
+
44
+ it('should update the links hrefs with real fragment ids', function() {
45
+ expect($(defaults.selectors.previousLink).attr('href')).toMatch(/#$/);
46
+ expect($(defaults.selectors.nextLink).attr('href')).toMatch('#custom-id');
47
+ $.deck('go', 2);
48
+ expect($(defaults.selectors.previousLink).attr('href')).toMatch('#custom-id');
49
+ expect($(defaults.selectors.nextLink).attr('href')).toMatch('#slide-3');
50
+ });
51
+ });
@@ -0,0 +1,57 @@
1
+ describe('Deck JS Status Indicator', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should start with scaling enabled', function() {
14
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
15
+ });
16
+
17
+ describe('disableScale()', function() {
18
+ it('should remove the scale class from the container', function() {
19
+ $.deck('disableScale');
20
+ expect($.deck('getContainer')).not.toHaveClass(defaults.classes.scale);
21
+ });
22
+ });
23
+
24
+ describe('enableScale()', function() {
25
+ it('should add the scale class to the container', function() {
26
+ $.deck('disableScale');
27
+ $.deck('enableScale');
28
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
29
+ });
30
+ });
31
+
32
+ describe('toggleScale()', function() {
33
+ it('should toggle between adding and removing the scale class', function() {
34
+ $.deck('toggleScale');
35
+ expect($.deck('getContainer')).not.toHaveClass(defaults.classes.scale);
36
+ $.deck('toggleScale');
37
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
38
+ });
39
+ });
40
+
41
+ describe('key bindings', function() {
42
+ var e,
43
+ $d = $(document);
44
+
45
+ beforeEach(function() {
46
+ e = jQuery.Event('keydown.deckscale');
47
+ });
48
+
49
+ it('should toggle scaling if the specified key is pressed', function() {
50
+ e.which = 83; // s
51
+ $d.trigger(e);
52
+ expect($.deck('getContainer')).not.toHaveClass(defaults.classes.scale);
53
+ $d.trigger(e);
54
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
55
+ });
56
+ });
57
+ });
@@ -0,0 +1,58 @@
1
+ describe('Deck JS Status Indicator', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should show the correct total number of slides', function() {
14
+ expect($(defaults.selectors.statusTotal)).toHaveText($.deck('getSlides').length);
15
+ });
16
+
17
+ it('should start at the right current slide', function() {
18
+ expect($(defaults.selectors.statusCurrent)).toHaveText(1);
19
+ $.deck('go', 2);
20
+ $.deck('.slide');
21
+ expect($(defaults.selectors.statusCurrent)).toHaveText(3);
22
+ });
23
+
24
+ it('should update to the correct number on slide change', function() {
25
+ $.deck('go', 2);
26
+ expect($(defaults.selectors.statusCurrent)).toHaveText('3');
27
+ });
28
+ });
29
+
30
+ describe('countNested false indicator', function() {
31
+ beforeEach(function() {
32
+ loadFixtures('nesteds.html');
33
+ if (Modernizr.history) {
34
+ history.replaceState({}, "", "#")
35
+ }
36
+ else {
37
+ window.location.hash = '#';
38
+ }
39
+ $.deck('.slide', {
40
+ countNested: false
41
+ });
42
+ });
43
+
44
+ it('should ignore nested slides in the total', function() {
45
+ expect($(defaults.selectors.statusTotal)).toHaveText('5');
46
+ });
47
+
48
+ it('should update to the root slide number when nested becomes active', function() {
49
+ $.deck('go', 10);
50
+ expect($(defaults.selectors.statusCurrent)).toHaveText('4');
51
+ $.deck('prev');
52
+ expect($(defaults.selectors.statusCurrent)).toHaveText('3');
53
+ $.deck('go', 3);
54
+ expect($(defaults.selectors.statusCurrent)).toHaveText('3');
55
+ $.deck('go', 1);
56
+ expect($(defaults.selectors.statusCurrent)).toHaveText('2');
57
+ });
58
+ });
@@ -0,0 +1,123 @@
1
+ .deck-container {
2
+ font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
3
+ font-size: 1.75em;
4
+ color: #aaa;
5
+ background: #000;
6
+ }
7
+ .deck-container .slide {
8
+ background: #000;
9
+ }
10
+ .deck-container .slide h1 {
11
+ color: #0af;
12
+ font-weight: normal;
13
+ font-weight: 100;
14
+ text-shadow: 0 0 50px #0af, 0 0 3px #fff;
15
+ }
16
+ .deck-container .slide h2 {
17
+ color: #af0;
18
+ border-bottom-color: #ccc;
19
+ font-weight: normal;
20
+ font-weight: 100;
21
+ text-shadow: 0 0 15px #af0, 0 0 2px #fff;
22
+ border-bottom: 1px solid #333;
23
+ }
24
+ .deck-container .slide h3 {
25
+ color: #fff;
26
+ font-weight: normal;
27
+ font-weight: 100;
28
+ text-shadow: 0 0 10px #fff, 0 0 2px #fff;
29
+ }
30
+ .deck-container .slide pre {
31
+ border-color: #333;
32
+ }
33
+ .deck-container .slide pre code {
34
+ color: #fff;
35
+ }
36
+ .deck-container .slide code {
37
+ color: #f0a;
38
+ }
39
+ .deck-container .slide blockquote {
40
+ font-size: 2em;
41
+ padding: 1em 2em;
42
+ color: #fff;
43
+ border-left: 5px solid #fff;
44
+ }
45
+ .deck-container .slide blockquote p {
46
+ margin: 0;
47
+ }
48
+ .deck-container .slide blockquote cite {
49
+ font-size: .5em;
50
+ font-style: normal;
51
+ font-weight: normal;
52
+ font-weight: 100;
53
+ color: #aaa;
54
+ text-shadow: 0 0 15px #fff, 0 0 2px #fff;
55
+ }
56
+ .deck-container .slide ::-moz-selection {
57
+ background: #a0f;
58
+ }
59
+ .deck-container .slide ::selection {
60
+ background: #a0f;
61
+ }
62
+ .deck-container .slide a, .deck-container .slide a:hover, .deck-container .slide a:focus, .deck-container .slide a:active, .deck-container .slide a:visited {
63
+ color: #f0a;
64
+ text-decoration: none;
65
+ }
66
+ .deck-container .slide a:hover, .deck-container .slide a:focus {
67
+ text-decoration: underline;
68
+ }
69
+ .deck-container .deck-prev-link, .deck-container .deck-next-link {
70
+ background: #f0a;
71
+ text-shadow: 0 0 3px #fff;
72
+ }
73
+ .deck-container .deck-prev-link, .deck-container .deck-prev-link:hover, .deck-container .deck-prev-link:focus, .deck-container .deck-prev-link:active, .deck-container .deck-prev-link:visited, .deck-container .deck-next-link, .deck-container .deck-next-link:hover, .deck-container .deck-next-link:focus, .deck-container .deck-next-link:active, .deck-container .deck-next-link:visited {
74
+ color: #fff;
75
+ }
76
+ .deck-container .deck-prev-link:hover, .deck-container .deck-prev-link:focus, .deck-container .deck-next-link:hover, .deck-container .deck-next-link:focus {
77
+ text-decoration: none;
78
+ }
79
+ .boxshadow .deck-container .deck-prev-link:hover, .boxshadow .deck-container .deck-prev-link:focus, .boxshadow .deck-container .deck-next-link:hover, .boxshadow .deck-container .deck-next-link:focus {
80
+ -webkit-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
81
+ -moz-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
82
+ box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
83
+ }
84
+ .deck-container > .slide .deck-before, .deck-container > .slide .deck-previous {
85
+ opacity: 0.4;
86
+ }
87
+ .deck-container > .slide .deck-before:not(.deck-child-current) .deck-before, .deck-container > .slide .deck-before:not(.deck-child-current) .deck-previous, .deck-container > .slide .deck-previous:not(.deck-child-current) .deck-before, .deck-container > .slide .deck-previous:not(.deck-child-current) .deck-previous {
88
+ opacity: 1;
89
+ }
90
+ .deck-container > .slide .deck-child-current {
91
+ opacity: 1;
92
+ }
93
+ .deck-container .deck-status {
94
+ font-size: 0.6666em;
95
+ }
96
+ .deck-container .goto-form {
97
+ background: #000;
98
+ border: 1px solid #f0a;
99
+ }
100
+ .deck-container .goto-form label {
101
+ color: #fff;
102
+ }
103
+ .deck-container.deck-menu .slide {
104
+ background: #333;
105
+ }
106
+ .deck-container.deck-menu .deck-current {
107
+ background: #444;
108
+ }
109
+ .boxshadow .deck-container.deck-menu .deck-current {
110
+ background: #000;
111
+ -webkit-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
112
+ -moz-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
113
+ box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
114
+ }
115
+ .no-touch .deck-container.deck-menu .slide:hover {
116
+ background: #444;
117
+ }
118
+ .no-touch.boxshadow .deck-container.deck-menu .slide:hover {
119
+ background: #000;
120
+ -webkit-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
121
+ -moz-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
122
+ box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
123
+ }
@@ -0,0 +1,155 @@
1
+ .deck-container {
2
+ font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
3
+ font-size:1.75em;
4
+ color:#aaa;
5
+ background:#000;
6
+
7
+ .slide {
8
+ background:#000;
9
+
10
+ h1 {
11
+ color:#0af;
12
+ font-weight:normal;
13
+ font-weight:100;
14
+ text-shadow:0 0 50px #0af, 0 0 3px #fff;
15
+ }
16
+
17
+ h2 {
18
+ color:#af0;
19
+ border-bottom-color:#ccc;
20
+ font-weight:normal;
21
+ font-weight:100;
22
+ text-shadow:0 0 15px #af0, 0 0 2px #fff;
23
+ border-bottom:1px solid #333;
24
+ }
25
+
26
+ h3 {
27
+ color:#fff;
28
+ font-weight:normal;
29
+ font-weight:100;
30
+ text-shadow:0 0 10px #fff, 0 0 2px #fff;
31
+ }
32
+
33
+ pre {
34
+ border-color:#333;
35
+
36
+ code {
37
+ color:#fff;
38
+ }
39
+ }
40
+
41
+ code {
42
+ color:#f0a;
43
+ }
44
+
45
+ blockquote {
46
+ font-size:2em;
47
+ padding:1em 2em;
48
+ color:#fff;
49
+ border-left:5px solid #fff;
50
+
51
+ p {
52
+ margin:0;
53
+ }
54
+
55
+ cite {
56
+ font-size:.5em;
57
+ font-style:normal;
58
+ font-weight:normal;
59
+ font-weight:100;
60
+ color:#aaa;
61
+ text-shadow:0 0 15px #fff, 0 0 2px #fff;
62
+ }
63
+ }
64
+
65
+ ::-moz-selection{ background:#a0f; }
66
+ ::selection { background:#a0f; }
67
+
68
+ a {
69
+ &, &:hover, &:focus, &:active, &:visited {
70
+ color:#f0a;
71
+ text-decoration:none;
72
+ }
73
+
74
+ &:hover, &:focus {
75
+ text-decoration:underline;
76
+ }
77
+ }
78
+ }
79
+
80
+ .deck-prev-link, .deck-next-link {
81
+ background:#f0a;
82
+ text-shadow:0 0 3px #fff;
83
+
84
+ &, &:hover, &:focus, &:active, &:visited {
85
+ color:#fff;
86
+ }
87
+
88
+ &:hover, &:focus {
89
+ text-decoration:none;
90
+
91
+ .boxshadow & {
92
+ -webkit-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
93
+ -moz-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
94
+ box-shadow:0 0 20px #f0a, 0 0 5px #fff;
95
+ }
96
+ }
97
+ }
98
+
99
+ > .slide {
100
+ .deck-before, .deck-previous {
101
+ opacity:0.4;
102
+
103
+ &:not(.deck-child-current) {
104
+ .deck-before, .deck-previous {
105
+ opacity:1;
106
+ }
107
+ }
108
+ }
109
+
110
+ .deck-child-current {
111
+ opacity:1;
112
+ }
113
+ }
114
+
115
+ .deck-status {
116
+ font-size:0.6666em;
117
+ }
118
+
119
+ .goto-form {
120
+ background:#000;
121
+ border:1px solid #f0a;
122
+
123
+ label {
124
+ color:#fff;
125
+ }
126
+ }
127
+
128
+ &.deck-menu {
129
+ .slide {
130
+ background:#333;
131
+ }
132
+
133
+ .deck-current {
134
+ background:#444;
135
+
136
+ .boxshadow & {
137
+ background:#000;
138
+ -webkit-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
139
+ -moz-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
140
+ box-shadow:0 0 20px #f0a, 0 0 5px #fff;
141
+ }
142
+ }
143
+
144
+ .no-touch & .slide:hover {
145
+ background:#444;
146
+ }
147
+
148
+ .no-touch.boxshadow & .slide:hover {
149
+ background:#000;
150
+ -webkit-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
151
+ -moz-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
152
+ box-shadow:0 0 20px #f0a, 0 0 5px #fff;
153
+ }
154
+ }
155
+ }