diff --git a/foundation-sites/foundation-tests.ts b/foundation-sites/foundation-tests.ts
new file mode 100644
index 000000000..225f3c0fa
--- /dev/null
+++ b/foundation-sites/foundation-tests.ts
@@ -0,0 +1,99 @@
+// Tests for type definitions for Foundation Sites v6.0.4
+// Project: http://foundation.zurb.com/
+// Definitions by: Sam Vloeberghs
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+///
+
+$(document).foundation();
+$(document).foundation('method5');
+$(document).foundation(['method', 'method2']);
+
+Foundation.Abide($('.selector'));
+Foundation.Abide($('.selector'), {});
+
+Foundation.Accordion($('.selector'));
+Foundation.Accordion($('.selector'), {});
+
+Foundation.AccordionMenu($('.selector'));
+Foundation.AccordionMenu($('.selector'), {});
+
+Foundation.DrillDown($('.selector'));
+Foundation.DrillDown($('.selector'), {});
+
+Foundation.Dropdown($('.selector'));
+Foundation.Dropdown($('.selector'), {});
+
+Foundation.DropdownMenu($('.selector'));
+Foundation.DropdownMenu($('.selector'), {});
+
+Foundation.Equalizer($('.selector'));
+Foundation.Equalizer($('.selector'), {});
+
+Foundation.Interchange($('.selector'));
+Foundation.Interchange($('.selector'), {});
+
+Foundation.Magellan($('.selector'));
+Foundation.Magellan($('.selector'), {});
+
+Foundation.OffCanvas($('.selector'));
+Foundation.OffCanvas($('.selector'), {});
+
+Foundation.Orbit($('.selector'));
+Foundation.Orbit($('.selector'), {});
+
+Foundation.Reveal($('.selector'));
+Foundation.Reveal($('.selector'), {});
+
+Foundation.Slider($('.selector'));
+Foundation.Slider($('.selector'), {});
+
+Foundation.Sticky($('.selector'));
+Foundation.Sticky($('.selector'), {});
+
+Foundation.Tabs($('.selector'));
+Foundation.Tabs($('.selector'), {});
+
+Foundation.Toggler($('.selector'));
+Foundation.Toggler($('.selector'), {});
+
+Foundation.Tooltip($('.selector'));
+Foundation.Tooltip($('.selector'), {});
+
+/*
+ TODO: fix this:
+ error TS7017: Index signature of object type implicitly has an 'any' type.
+
+ function pluginList() {
+
+ 'use strict';
+
+ return [
+ 'Abide',
+ 'Accordion',
+ 'AccordionMenu',
+ 'DrillDown',
+ 'Dropdown',
+ 'DropdownMenu',
+ 'Equalizer',
+ 'Interchange',
+ 'Magellan',
+ 'OffCanvas',
+ 'Orbit',
+ 'Reveal',
+ 'Slider',
+ 'Sticky',
+ 'Tabs',
+ 'Toggler',
+ 'Tooltip'
+ ];
+ }
+
+ pluginList().forEach((value:string) => {
+ Foundation[value]($('.selector'));
+ Foundation[value]($('.selector'), {});
+ });
+ */
+
+
diff --git a/foundation-sites/foundation.d.ts b/foundation-sites/foundation.d.ts
new file mode 100644
index 000000000..a6dd7682d
--- /dev/null
+++ b/foundation-sites/foundation.d.ts
@@ -0,0 +1,428 @@
+// Type definitions for Foundation Sites v6.0.4
+// Project: http://foundation.zurb.com/
+// Definitions by: Sam Vloeberghs
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module FoundationSites {
+
+ // http://foundation.zurb.com/sites/docs/abide.html#javascript-reference
+ interface Abide {
+ requiredChedck(element:Object): boolean;
+ findLabel(element:Object): boolean;
+ addErrorClasses(element:Object): void;
+ removeErrorClasses(element:Object): void;
+ validateInput(element:Object, form:Object): void;
+ validateForm(element:Object): void;
+ validateText(element:Object): boolean;
+ validateRadio(group:string): boolean;
+ resetForm($form:Object): void;
+ }
+
+ interface IAbidePatterns {
+ alpha?: RegExp;
+ alpha_numeric?: RegExp;
+ integer?: RegExp;
+ number?: RegExp;
+ card?: RegExp;
+ cvv?: RegExp;
+ email ?: RegExp;
+ url?: RegExp;
+ domain?: RegExp;
+ datetime?: RegExp;
+ date?: RegExp;
+ time?: RegExp;
+ dateISO?: RegExp;
+ month_day_year?: RegExp;
+ day_month_year?: RegExp;
+ color?: RegExp;
+ }
+
+ interface IAbideOptions {
+ slideSpeed?: number;
+ multiOpen?: boolean;
+ patters?: IAbidePatterns;
+ }
+
+ // http://foundation.zurb.com/sites/docs/accordion.html#javascript-reference
+ interface Accordion {
+ toggle($target:JQuery): void;
+ down($target:JQuery, firstTime:boolean): void;
+ up($target:JQuery): void;
+ destroy(): void;
+ }
+
+ interface IAccordionOptions {
+ slideSpeed?: number
+ multiOpen?: boolean;
+ }
+
+ // http://foundation.zurb.com/sites/docs/accordion-menu.html#javascript-reference
+ interface AccordionMenu {
+ toggle($target:JQuery): void;
+ down($target:JQuery, firstTime:boolean): void;
+ up($target:JQuery): void;
+ destroy(): void;
+ }
+
+ interface IAccordionMenuOptions {
+ slideSpeed?: number;
+ multiOpen?: boolean;
+ }
+
+ // http://foundation.zurb.com/sites/docs/drilldown-menu.html#javascript-reference
+ interface Drilldown {
+ _hideAll($elem:JQuery): void;
+ _show($elem:JQuery): void;
+ _hide($elem:JQuery): void;
+ destroy(): void;
+ }
+
+ interface IDrilldownOptions {
+ backButton?: string;
+ wrapper?: string
+ closeOnClick?: boolean
+ }
+
+ // http://foundation.zurb.com/sites/docs/dropdown.html#javascript-reference
+ interface Dropdown {
+ getPositionClass(): string;
+ open(): void;
+ close(): void;
+ toggle(): void;
+ destroy(): void;
+ }
+
+ interface IDropdownOptions {
+ hoverDelay?: number;
+ hover?: boolean;
+ vOffset?: number;
+ hOffset?: number;
+ positionClass?: string;
+ trapFocus?: boolean;
+ autoFocus?: boolean;
+ }
+
+ // http://foundation.zurb.com/sites/docs/dropdown-menu.html#javascript-reference
+ interface DropdownMenu {
+ destroy(): void;
+ }
+
+ interface IDropdownMenuOptions {
+ disableHover?: boolean;
+ autoclose?: boolean;
+ hoverDelay?: number;
+ clickOpen?: boolean;
+ closingTime?: number;
+ alignments?: string;
+ verticalClasss?: string;
+ rightClasss?: string;
+ }
+
+ // http://foundation.zurb.com/sites/docs/equalizer.html#javascript-reference
+ interface Equalizer {
+ getHeights(element:Object): Array;
+ applyHeight($eqParent:Object, heights:Array): void;
+ destroy(): void;
+ }
+
+ interface IEqualizerOptions {
+ equalizeOnStack?: boolean;
+ throttleInterval?: number;
+ }
+
+ // http://foundation.zurb.com/sites/docs/interchange.html#javascript-reference
+ interface Interchange {
+ replace(path:string): void;
+ destroy(): void;
+ }
+
+ interface IInterchangeOptions {
+ rules?: Array
+ }
+
+ // http://foundation.zurb.com/sites/docs/magellan.html#javascript-reference
+ interface Magellan {
+ calcPoints(): void;
+ reflow(): void;
+ destroy(): void;
+ }
+
+ interface IMagellanOptions {
+ animationDuration?: number;
+ animationEasing?: string;
+ threshold?: number;
+ activeClass?: string;
+ deepLinking?: boolean;
+ }
+
+ // http://foundation.zurb.com/sites/docs/offcanvas.html#javascript-reference
+ interface OffCanvas {
+ open(event:Object, trigger:JQuery): void;
+ toggle(event:Object, trigger:JQuery): void;
+ close(): void;
+ destroy(): void;
+ }
+
+ interface IOffCanvasOptions {
+ closeOnClick?: boolean;
+ transitionTime?: number;
+ position?: string;
+ forceTop?: boolean;
+ isRevealed?: boolean;
+ revealOn?: string;
+ autoFocus?: boolean;
+ revealClass?: string;
+ }
+
+ // http://foundation.zurb.com/sites/docs/orbit.html#javascript-reference
+ interface Orbit {
+ changeSlide(isLTR:boolean, chosenSlide?:Object, idx?:number): void;
+ geoSync(): void;
+ destroy(): void;
+ }
+
+ interface IOrbitOptions {
+ bullets?: boolean;
+ navButtons?: boolean;
+ animInFromRight?: string;
+ animOutToRight?: string;
+ animInFromLeft?: string;
+ animOutToLeft?: string;
+ autoPlay?: boolean;
+ timerDelay?: number;
+ infiniteWrap?: boolean;
+ swipe?: boolean;
+ pauseOnHover?: boolean;
+ accessible?: boolean;
+ containerClass?: string;
+ slideClass?: string;
+ boxOfBullets?: string;
+ nextClass?: string;
+ prevClass?: string;
+ }
+
+ // http://foundation.zurb.com/sites/docs/reveal.html#javascript-reference
+ interface Reveal {
+ open(): void;
+ toggle(): void;
+ close(): void;
+ destroy(): void;
+ }
+
+ interface IRevealOptions {
+ animationIn?: string;
+ animationOut?: string;
+ showDelay?: number;
+ hideDelay?: number;
+ closeOnClick?: boolean;
+ closeOnEsc?: boolean;
+ multipleOpened?: boolean;
+ vOffset?: number;
+ hOffset?: number;
+ fullScreen?: boolean;
+ btmOffsetPct?: number;
+ overlay?: boolean;
+ resetOnClose?: boolean;
+ }
+
+ // http://foundation.zurb.com/sites/docs/slider.html#javascript-reference
+ interface Slider {
+ destroy(): void;
+ }
+
+ interface ISliderOptions {
+ start?: number;
+ end?: number;
+ step?: number;
+ initialStart ?: number;
+ initialEnd?: number;
+ binding?: boolean;
+ clickSelect?: boolean;
+ vertical?: boolean;
+ draggable?: boolean;
+ disabled?: boolean;
+ doubleSided?: boolean;
+ decimal?: number;
+ moveTime?: number;
+ disabledClass?: string;
+ }
+
+ // http://foundation.zurb.com/sites/docs/sticky.html#javascript-reference
+ interface Sticky {
+ _pauseListeners(scrollListener:string): void;
+ _calc(checkSizes:boolean, scroll:number): void;
+ destroy(): void;
+ emCalc(number:any): void;
+ }
+
+ interface IStickyOptions {
+ container?: string;
+ stickTo?: string;
+ anchor?: string;
+ topAnchor?: string;
+ btmAnchor?: string;
+ marginTop?: number;
+ marginBottom?: number;
+ stickyOn?: string;
+ stickyClass?: string;
+ containerClass?: string;
+ checkEvery?: number;
+ }
+
+ // http://foundation.zurb.com/sites/docs/tabs.html#javascript-reference
+ interface Tabs {
+ _handleTabChange($target:JQuery): void;
+ selectTab($target:JQuery): void;
+ destroy(): void;
+ }
+
+ interface ITabsOptions {
+ animate?: boolean;
+ }
+
+ // http://foundation.zurb.com/sites/docs/toggler.html#javascript-reference
+ interface Toggler {
+ toggle(): void;
+ destroy(): void;
+ }
+
+ interface ITogglerOptions {
+ animate?: boolean;
+ }
+
+ // http://foundation.zurb.com/sites/docs/tooltip.html#javascript-reference
+ interface Tooltip {
+ show(): void;
+ hide(): void;
+ toggle(): void;
+ destroy(): void;
+ }
+
+ interface ITooltipOptions {
+ hoverDelay?: number;
+ fadeInDuration?: number;
+ fadeOutDuration?: number;
+ disableHover?: boolean;
+ templateClasses?: string;
+ tooltipClass?: string;
+ triggerClass?: string;
+ showOn?: string;
+ template?: string;
+ tipText?: string;
+ clickOpen?: boolean;
+ positionClass?: string;
+ vOffset?: number;
+ hOffset?:number;
+ }
+
+ // Utilities
+ // ---------
+
+ interface Box {
+ ImNotTouchingYou(element:Object, parent?:Object, lrOnly?:boolean, tbOnly?:boolean): boolean;
+ GetDimensions(element:Object): Object;
+ GetOffsets(element:Object, anchor:Object, position:string, vOffset:number, hOffset:number, isOverflow:boolean): Object;
+ }
+
+ interface KeyBoard {
+ parseKey(event:any): string;
+ findFocusable($element:Object): Object;
+ }
+
+ interface MediaQuery {
+ get(size:string): string;
+ atLeast(size:string): boolean;
+ queries:Array;
+ current:any;
+ }
+
+ interface Motion {
+ animateIn(element:Object, animation:any, cb:Function): void;
+ animateOut(element:Object, animation:any, cb:Function): void;
+ }
+
+ interface Move {
+ // TODO
+ }
+
+ interface Nest {
+ // TODO
+ //Feather: function(menu, type)
+ // Burn: function(menu, type){
+ }
+
+ interface Timer {
+ start(): void;
+ restart(): void;
+ pause(): void;
+ }
+
+ interface Touch {
+ // TODO :extension on jQuery
+ }
+
+ interface Triggers {
+ // TODO :extension on jQuery
+ }
+
+ interface FoundationSitesStatic {
+ version : string;
+
+ rtl(): boolean;
+ plugin(plugin:Object, name:string): void;
+ registerPlugin(plugin:Object): void;
+ unregisterPlugin(plugin:Object): void;
+ GetYoDigits(length:number, namespace?:string): string;
+ reflow(elem:Object, plugins?:Array|string): void;
+ getFnName(fn:string): string;
+ transitionend(): string;
+
+ util : {
+ throttle(func:(...args:any[]) => any, delay:number): (...args:any[]) => any;
+ };
+ onImagesLoaded(images:Object, cb:Function): void;
+
+ Abide(element:Object, options?:IAbideOptions): Abide;
+ Accordion(element:Object, options?:IAccordionOptions): Accordion;
+ AccordionMenu(element:Object, options?:IAccordionMenuOptions): AccordionMenu;
+ DrillDown(element:Object, options?:IDrilldownOptions): Drilldown;
+ Dropdown(element:Object, options?:IDropdownOptions): Dropdown;
+ DropdownMenu(element:Object, options?:IDropdownMenuOptions): DropdownMenu;
+ Equalizer(element:Object, options?:IEqualizerOptions): Equalizer;
+ Interchange(element:Object, options?:IInterchangeOptions): Interchange;
+ Magellan(element:Object, options?:IMagellanOptions): Magellan;
+ OffCanvas(element:Object, options?:IOffCanvasOptions): OffCanvas;
+ Orbit(element:Object, options?:IOrbitOptions): Orbit;
+ Reveal(element:Object, options?:IRevealOptions): Reveal;
+ Slider(element:Object, options?:ISliderOptions): Slider;
+ Sticky(element:Object, options?:IStickyOptions): Sticky;
+ Tabs(element:Object, options?:ITabsOptions): Tabs;
+ Toggler(element:Object, options?:ITogglerOptions): Toggler;
+ Tooltip(element:Object, options?:ITooltipOptions): Tooltip;
+
+ // utils
+ Box: Box;
+ KeyBoard: KeyBoard;
+ MediaQuery: MediaQuery;
+ Motion: Motion;
+ Move: Move;
+ Nest: Nest;
+ Timer: Timer;
+ Touch: Touch;
+ Triggers: Triggers;
+
+ }
+
+}
+
+interface JQuery {
+ foundation(method?:string|Array) : JQuery;
+}
+
+declare var Foundation:FoundationSites.FoundationSitesStatic;
+
+declare module "Foundation" {
+ export = Foundation;
+}
diff --git a/foundation/foundation.d.ts b/foundation/foundation.d.ts
index a51e47ae9..ce782fd92 100644
--- a/foundation/foundation.d.ts
+++ b/foundation/foundation.d.ts
@@ -304,6 +304,16 @@ declare module Foundation {
add_custom_rule(rule : string, media : string) : void;
image_loaded(images : JQuery, callback : (...args : any[]) => any) : void;
random_str(length? : number) : string;
+ is_small_only(): boolean;
+ is_small_up(): boolean;
+ is_medium_only(): boolean;
+ is_medium_up(): boolean;
+ is_large_only(): boolean;
+ is_large_up(): boolean;
+ is_xlarge_only(): boolean;
+ is_xlarge_up(): boolean;
+ is_xxlarge_only(): boolean;
+ is_xxlarge_up(): boolean;
};
}
}