origen 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,9 +13,9 @@
13
13
  # item, use the pattern /about/*/; /about/* will also select the parent,
14
14
  # because * matches zero or more characters.
15
15
 
16
- compile '/stylesheet/' do
17
- # dont filter or layout
18
- end
16
+ #compile '/stylesheet/' do
17
+ # # dont filter or layout
18
+ #end
19
19
 
20
20
 
21
21
  compile '*' do
@@ -29,19 +29,17 @@ compile '*' do
29
29
  filter :codeblocks
30
30
  when "haml"
31
31
  filter :haml
32
- when "html"
32
+ # These filters don't play nice with complete HTML files
33
+ when "html" && !(item[:layout] == "none" || item[:layout] == "None")
33
34
  filter :colorize_syntax,
34
35
  default_colorizer: :coderay,
35
36
  coderay: {css: :style}
36
37
  filter :codeblocks
37
38
  end
38
- unless ["xml", "js"].include?(item[:extension])
39
- if item[:layout] == "bootstrap" || item[:layout] == "bootstrap3" || !item[:layout]
40
- filter :bootstrap
41
- layout 'bootstrap'
42
- else
43
- fail "Unknown web page layout: #{item[:layout]}"
44
- end
39
+ unless ["xml", "js", "css"].include?(item[:extension]) || item[:layout] == "none" || item[:layout] == "None"
40
+ item[:layout] = "bootstrap" if item[:layout] == "bootstrap3"
41
+ filter :bootstrap
42
+ layout item[:layout] || 'bootstrap'
45
43
  filter :search
46
44
  end
47
45
  if item[:zip] || item[:gzip]
@@ -50,12 +48,12 @@ compile '*' do
50
48
  end
51
49
  end
52
50
 
53
- route '/stylesheet/' do
54
- '/style.css'
55
- end
51
+ #route '/stylesheet/' do
52
+ # '/style.css'
53
+ #end
56
54
 
57
55
  route '*' do
58
- if item.binary? || ["xml", "js"].include?(item[:extension])
56
+ if item.binary? || ["xml", "js", "css"].include?(item[:extension])
59
57
  # Write item with identifier /foo/ to /foo.ext
60
58
  item.identifier.chop + '.' + item[:extension]
61
59
  else
@@ -28,9 +28,36 @@
28
28
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
29
29
  <![endif]-->
30
30
 
31
+ <% if @item[:analytics] %>
32
+ <script>
33
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
34
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
35
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
36
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
37
+
38
+ ga('create', '<%= @item[:analytics] %>', 'auto');
39
+ ga('send', 'pageview');
40
+ </script>
41
+ <% end %>
42
+
31
43
  <!-- Fav and touch icons -->
32
- <link rel="shortcut icon" href="http://rgen.freescale.net/favicon.ico"/>
33
- <link rel="icon" type="image/ico" href="http://rgen.freescale.net/favicon.ico"/>
44
+ <link rel="apple-touch-icon" sizes="57x57" href="http://origen-sdk.org/apple-touch-icon-57x57.png">
45
+ <link rel="apple-touch-icon" sizes="60x60" href="http://origen-sdk.org/apple-touch-icon-60x60.png">
46
+ <link rel="apple-touch-icon" sizes="72x72" href="http://origen-sdk.org/apple-touch-icon-72x72.png">
47
+ <link rel="apple-touch-icon" sizes="76x76" href="http://origen-sdk.org/apple-touch-icon-76x76.png">
48
+ <link rel="apple-touch-icon" sizes="114x114" href="http://origen-sdk.org/apple-touch-icon-114x114.png">
49
+ <link rel="apple-touch-icon" sizes="120x120" href="http://origen-sdk.org/apple-touch-icon-120x120.png">
50
+ <link rel="apple-touch-icon" sizes="144x144" href="http://origen-sdk.org/apple-touch-icon-144x144.png">
51
+ <link rel="apple-touch-icon" sizes="152x152" href="http://origen-sdk.org/apple-touch-icon-152x152.png">
52
+ <link rel="apple-touch-icon" sizes="180x180" href="http://origen-sdk.org/apple-touch-icon-180x180.png">
53
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/favicon-32x32.png" sizes="32x32">
54
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/android-chrome-192x192.png" sizes="192x192">
55
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/favicon-96x96.png" sizes="96x96">
56
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/favicon-16x16.png" sizes="16x16">
57
+ <link rel="manifest" href="http://origen-sdk.org/manifest.json">
58
+ <meta name="msapplication-TileColor" content="#da532c">
59
+ <meta name="msapplication-TileImage" content="/mstile-144x144.png">
60
+ <meta name="theme-color" content="#ffffff">
34
61
  </head>
35
62
 
36
63
  <body>
@@ -45,9 +72,9 @@
45
72
  <footer class="footer">
46
73
  <div class="container">
47
74
  <p class="pull-left text-muted">
48
- Freescale Internal Use Only
75
+ Generated with the <a href="http://origen-sdk.org">Origen Semiconductor Developer's Kit</a>
49
76
  </p>
50
- <p class="pull-right text-muted">&copy; Copyright <%= Time.now.year %> Freescale, Inc. All Rights Reserved</p>
77
+ <p class="pull-right text-muted">Origen is released under the terms of the <a href="http://choosealicense.com/licenses/lgpl-3.0/">LGPLv3</a></p>
51
78
  </div>
52
79
  </footer>
53
80
  <!-- Bootstrap core JavaScript
@@ -1,10 +1,10 @@
1
- <div class="pull-right logo-rgen" style="margin-top: 18px; margin-left: 10px">
2
- <a href="http://origen-sdk.org" style="text-decoration: none; color: #e66a08; font-weight: bold; font-size: 20px;">
1
+ <div class="pull-right logo-rgen" style="margin-top: 5px; margin-left: 5px">
2
+ <a href="http://origen-sdk.org" style="text-decoration: none; color: #ffffff; font-weight: 500; font-size: 30px; font-family: 'Roboto','Helvetica Neue',Helvetica,Arial,sans-serif;">
3
3
  <span>Origen</span>
4
4
  </a>
5
5
  </div>
6
6
  <div class="pull-right">
7
7
  <a href="http://origen-sdk.org">
8
- <img src="http://rgen.freescale.net/img/fsl_logo.png" style="height:40px">
8
+ <img src="http://origen-sdk.org/android-chrome-48x48.png" style="height:40px; margin-top: 5px;">
9
9
  </a>
10
10
  </div>
@@ -0,0 +1,3 @@
1
+ .nav a.active {
2
+ color: #ffffff !important;
3
+ }
File without changes
@@ -0,0 +1,23 @@
1
+ % render "layouts/cyborg", footer: false, home: true do
2
+ <div class="container-fluid" style="background-color: #333; box-shadow: inset 0 0 100px rgba(0,0,0,0.5); height: 100%;">
3
+ <div class"main-content">
4
+ <div class="col-centered text-center" style="margin-top: 100px;">
5
+ <img src="http://origen-sdk.org/img/origen.png" height="80" width="80" style="margin-top: -45px; margin-right: 10px;">
6
+ <h1 style="font-size: 75px; display: inline;">Origen</h1>
7
+ <p style="font-size: 30px; margin-top: 15px;">The Semiconductor Developer's Kit</p>
8
+ </div>
9
+ <div class="col-centered text-center" style="margin-top: 50px; margin-bottom: 200px;">
10
+ <p>
11
+ <a class="btn btn-primary btn-lg">Learn more</a>
12
+ </p>
13
+ </div>
14
+ </div>
15
+ <div class="col-centered text-center footer hidden-xs">
16
+ <p>
17
+ Origen is an <a href="https://github.com/Origen-SDK">open source</a> framework for semiconductor engineering professionals, sponsored by:
18
+ </p>
19
+ <div class="sponsors">
20
+ <a href="http://www.freescale.com"><img width="250" src="http://origen-sdk.org/img/freescale-logo.png"></a>
21
+ </div>
22
+ </div>
23
+ % end
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Single Page Nav Plugin
3
+ * Copyright (c) 2014 Chris Wojcik <hello@chriswojcik.net>
4
+ * Dual licensed under MIT and GPL.
5
+ * @author Chris Wojcik
6
+ * @version 1.2.0
7
+ */
8
+ if(typeof Object.create!=="function"){Object.create=function(e){function t(){}t.prototype=e;return new t}}(function(e,t,n,r){"use strict";var i={init:function(n,r){this.options=e.extend({},e.fn.singlePageNav.defaults,n);this.container=r;this.$container=e(r);this.$links=this.$container.find("a");if(this.options.filter!==""){this.$links=this.$links.filter(this.options.filter)}this.$window=e(t);this.$htmlbody=e("html, body");this.$links.on("click.singlePageNav",e.proxy(this.handleClick,this));this.didScroll=false;this.checkPosition();this.setTimer()},handleClick:function(t){var n=this,r=t.currentTarget,i=e(r.hash);t.preventDefault();if(i.length){n.clearTimer();if(typeof n.options.beforeStart==="function"){n.options.beforeStart()}n.setActiveLink(r.hash);n.scrollTo(i,function(){if(n.options.updateHash&&history.pushState){history.pushState(null,null,r.hash)}n.setTimer();if(typeof n.options.onComplete==="function"){n.options.onComplete()}})}},scrollTo:function(e,t){var n=this;var r=n.getCoords(e).top;var i=false;n.$htmlbody.stop().animate({scrollTop:r},{duration:n.options.speed,easing:n.options.easing,complete:function(){if(typeof t==="function"&&!i){t()}i=true}})},setTimer:function(){var e=this;e.$window.on("scroll.singlePageNav",function(){e.didScroll=true});e.timer=setInterval(function(){if(e.didScroll){e.didScroll=false;e.checkPosition()}},250)},clearTimer:function(){clearInterval(this.timer);this.$window.off("scroll.singlePageNav");this.didScroll=false},checkPosition:function(){var e=this.$window.scrollTop();var t=this.getCurrentSection(e);this.setActiveLink(t)},getCoords:function(e){return{top:Math.round(e.offset().top)-this.options.offset}},setActiveLink:function(e){var t=this.$container.find("a[href$='"+e+"']");if(!t.hasClass(this.options.currentClass)){this.$links.removeClass(this.options.currentClass);t.addClass(this.options.currentClass)}},getCurrentSection:function(t){var n,r,i,s;for(n=0;n<this.$links.length;n++){r=this.$links[n].hash;if(e(r).length){i=this.getCoords(e(r));if(t>=i.top-this.options.threshold){s=r}}}return s||this.$links[0].hash}};e.fn.singlePageNav=function(e){return this.each(function(){var t=Object.create(i);t.init(e,this)})};e.fn.singlePageNav.defaults={offset:0,threshold:120,speed:400,currentClass:"current",easing:"swing",updateHash:false,filter:"",onComplete:false,beforeStart:false}})(jQuery,window,document)
@@ -0,0 +1,9 @@
1
+ jQuery(function($) {
2
+ $('.navbar').singlePageNav({
3
+ filter: ':not(.external)',
4
+ offset: 60,
5
+ currentClass: 'active',
6
+ updateHash: true,
7
+ speed: 1000
8
+ });
9
+ });
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: <%= options[:title] || Origen.app.namespace %>
3
+ analytics: UA-64455560-1
3
4
  ---
4
5
  <%= render "templates/web/partials/navbar.html", tab: options[:tab] %>
5
6
 
@@ -0,0 +1,111 @@
1
+ ---
2
+ layout: none
3
+ ---
4
+ <!DOCTYPE html>
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="utf-8">
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
9
+ <meta name="viewport" content="width=device-width, initial-scale=1">
10
+ <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
11
+ <% @item = {} %>
12
+
13
+ <title>Origen, The Semiconductor Developer's Kit</title>
14
+ <% if @item[:description] %>
15
+ <meta name="description" content="<%= @item[:description] %>">
16
+ <% end %>
17
+ <% if @item[:author] %>
18
+ <meta name="author" content="<%= @item[:author] %>">
19
+ <% end %>
20
+
21
+ <!-- Bootstrap core CSS -->
22
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
23
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
24
+ <link rel="stylesheet" href="http://origen-sdk.org/css/cyborg.min.css"></script>
25
+ <link rel="stylesheet" href="css/landing.css"></script>
26
+ <style type="text/css">
27
+ .col-centered{
28
+ float: none;
29
+ margin: 0 auto;
30
+ }
31
+ /* Sticky footer styles */
32
+ html, body {
33
+ position: relative;
34
+ min-height: 100%;
35
+ height: 100%;
36
+ }
37
+ .main-content {
38
+ /* Margin bottom by footer height */
39
+ margin-bottom: 250px;
40
+ }
41
+ .footer {
42
+ position: absolute;
43
+ bottom: 0;
44
+ width: 99%;
45
+ /* Set the fixed height of the footer here */
46
+ height: 250px;
47
+ }
48
+
49
+ </style>
50
+
51
+ <!-- Load this up top to allow pages to execute JQuery snippets -->
52
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
53
+
54
+ <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
55
+ <!--[if lt IE 9]>
56
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
57
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
58
+ <![endif]-->
59
+
60
+ <script>
61
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
62
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
63
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
64
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
65
+
66
+ ga('create', 'UA-64455560-1', 'auto');
67
+ ga('send', 'pageview');
68
+ </script>
69
+
70
+ <!-- Fav and touch icons -->
71
+ <link rel="apple-touch-icon" sizes="57x57" href="http://origen-sdk.org/apple-touch-icon-57x57.png">
72
+ <link rel="apple-touch-icon" sizes="60x60" href="http://origen-sdk.org/apple-touch-icon-60x60.png">
73
+ <link rel="apple-touch-icon" sizes="72x72" href="http://origen-sdk.org/apple-touch-icon-72x72.png">
74
+ <link rel="apple-touch-icon" sizes="76x76" href="http://origen-sdk.org/apple-touch-icon-76x76.png">
75
+ <link rel="apple-touch-icon" sizes="114x114" href="http://origen-sdk.org/apple-touch-icon-114x114.png">
76
+ <link rel="apple-touch-icon" sizes="120x120" href="http://origen-sdk.org/apple-touch-icon-120x120.png">
77
+ <link rel="apple-touch-icon" sizes="144x144" href="http://origen-sdk.org/apple-touch-icon-144x144.png">
78
+ <link rel="apple-touch-icon" sizes="152x152" href="http://origen-sdk.org/apple-touch-icon-152x152.png">
79
+ <link rel="apple-touch-icon" sizes="180x180" href="http://origen-sdk.org/apple-touch-icon-180x180.png">
80
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/favicon-32x32.png" sizes="32x32">
81
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/android-chrome-192x192.png" sizes="192x192">
82
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/favicon-96x96.png" sizes="96x96">
83
+ <link rel="icon" type="image/png" href="http://origen-sdk.org/favicon-16x16.png" sizes="16x16">
84
+ <link rel="manifest" href="http://origen-sdk.org/manifest.json">
85
+ <meta name="msapplication-TileColor" content="#da532c">
86
+ <meta name="msapplication-TileImage" content="/mstile-144x144.png">
87
+ <meta name="theme-color" content="#ffffff">
88
+ </head>
89
+
90
+ <body data-spy="scroll" data-target="#navbar">
91
+
92
+ <%= yield %>
93
+
94
+ % if options[:footer]
95
+ <footer class="footer">
96
+ <div class="container">
97
+ <p class="pull-left text-muted">
98
+ Freescale Internal Use Only
99
+ </p>
100
+ <p class="pull-right text-muted">&copy; Copyright <%= Time.now.year %> Freescale, Inc. All Rights Reserved</p>
101
+ </div>
102
+ </footer>
103
+ % end
104
+ <!-- Bootstrap core JavaScript
105
+ ================================================== -->
106
+ <!-- Placed at the end of the document so the pages load faster -->
107
+ <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
108
+ <script src="js/jquery-singlePageNav.js"></script>
109
+ <script src="js/landing.js"></script>
110
+ </body>
111
+ </html>
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: <%= options[:title] || "#{Origen.app.namespace} - Docs" %>
3
+ analytics: UA-64455560-1
3
4
  ---
4
5
  <%= render "templates/web/partials/navbar.html", tab: :docs %>
5
6
  % s = {}
@@ -0,0 +1,79 @@
1
+ % render "layouts/cyborg" do
2
+ <nav class="navbar navbar-default navbar-fixed-top navbar-inverse">
3
+ <div class="container">
4
+ <div class="navbar-header">
5
+ <a class="navbar-brand" href="#origen">Origen</a>
6
+ </div>
7
+
8
+ <div class="collapse navbar-collapse" id="navbar">
9
+ <ul class="nav navbar-nav">
10
+ <li><a href="#topic1">Topic1</a></li>
11
+ <li><a href="#topic2">Topic2</a></li>
12
+ <li><a href="#topic3">Topic3</a></li>
13
+ <li><a href="#topic4">Topic4</a></li>
14
+ <li><a href="#topic5">Topic5</a></li>
15
+ </ul>
16
+ <ul class="nav navbar-nav navbar-right">
17
+ <li><a class="external" href="http://origen-sdk.org/origen/docs/environment/introduction/">Docs</a></li>
18
+ </ul>
19
+ </div>
20
+ </div>
21
+ </nav>
22
+
23
+ <div class="jumbotron" id="origen" style="margin-top: 60px;">
24
+ <img src="http://origen-sdk.org/img/origen.png" height="70" width="70" style="float: left; margin-top: 20px; margin-right: 10px;">
25
+ <h1>Origen</h1>
26
+ <p>The Semiconductor Developer's Kit</p>
27
+ <p><a class="btn btn-primary btn-lg">Learn more</a></p>
28
+ </div>
29
+
30
+ <div class="bs-docs-section">
31
+ <div class="page-header" id="topic1" style="height: 1000px;">
32
+ <div class="row">
33
+ <div class="col-lg-12">
34
+ <h1 id="buttons">Topic1</h1>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+
40
+ <div class="bs-docs-section">
41
+ <div class="page-header" id="topic2" style="height: 1000px;">
42
+ <div class="row">
43
+ <div class="col-lg-12">
44
+ <h1 id="buttons">Topic2</h1>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+
50
+ <div class="bs-docs-section">
51
+ <div class="page-header" id="topic3" style="height: 1000px;">
52
+ <div class="row">
53
+ <div class="col-lg-12">
54
+ <h1 id="buttons">Topic3</h1>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
59
+
60
+ <div class="bs-docs-section">
61
+ <div class="page-header" id="topic4" style="height: 1000px;">
62
+ <div class="row">
63
+ <div class="col-lg-12">
64
+ <h1 id="buttons">Topic4</h1>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </div>
69
+
70
+ <div class="bs-docs-section">
71
+ <div class="page-header" id="topic5" style="height: 1000px;">
72
+ <div class="row">
73
+ <div class="col-lg-12">
74
+ <h1 id="buttons">Topic5</h1>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ % end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-13 00:00:00.000000000 Z
11
+ date: 2015-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -666,6 +666,7 @@ files:
666
666
  - lib/origen/utility/csv_data.rb
667
667
  - lib/origen/utility/design_sync.rb
668
668
  - lib/origen/utility/diff.rb
669
+ - lib/origen/utility/file_diff.rb
669
670
  - lib/origen/utility/input_capture.rb
670
671
  - lib/origen/utility/mailer.rb
671
672
  - lib/origen/utility/s_record.rb
@@ -691,7 +692,6 @@ files:
691
692
  - templates/j750/program_sheet.txt.erb
692
693
  - templates/nanoc/Rules
693
694
  - templates/nanoc/config.yaml
694
- - templates/nanoc/content/favicon.ico
695
695
  - templates/nanoc/layouts/bootstrap.html.erb
696
696
  - templates/nanoc/lib/bootstrap_filter.rb
697
697
  - templates/nanoc/lib/codeblocks_filter.rb
@@ -721,15 +721,21 @@ files:
721
721
  - templates/time/rules.rb.erb
722
722
  - templates/web/archive.md.erb
723
723
  - templates/web/contact.md.erb
724
+ - templates/web/css/landing.css
725
+ - templates/web/design-engineering.html.erb
724
726
  - templates/web/docs/environment/definitions.md.erb
725
727
  - templates/web/docs/environment/installation.md.erb
726
728
  - templates/web/docs/environment/introduction.md.erb
727
- - templates/web/index.md.erb
729
+ - templates/web/index.html.erb
730
+ - templates/web/js/jquery-singlePageNav.js
731
+ - templates/web/js/landing.js
728
732
  - templates/web/layouts/_basic.html.erb
733
+ - templates/web/layouts/_cyborg.html.erb
729
734
  - templates/web/layouts/_doc.html.erb
730
735
  - templates/web/partials/_navbar.html.erb
731
736
  - templates/web/references.md.erb
732
737
  - templates/web/release_notes.md.erb
738
+ - templates/web/test-engineering.html.erb
733
739
  homepage: http://origen-sdk.org
734
740
  licenses:
735
741
  - LGPL-3
@@ -750,7 +756,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
750
756
  version: 1.8.11
751
757
  requirements: []
752
758
  rubyforge_project:
753
- rubygems_version: 2.4.5
759
+ rubygems_version: 2.2.2
754
760
  signing_key:
755
761
  specification_version: 4
756
762
  summary: A Semiconductor Developer's Kit