rails-active-ui 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 (167) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +6 -0
  3. data/app/assets/stylesheets.css +73555 -0
  4. data/app/components/accordion_component.rb +34 -0
  5. data/app/components/ad_component.rb +28 -0
  6. data/app/components/api_component.rb +24 -0
  7. data/app/components/breadcrumb_component.rb +26 -0
  8. data/app/components/button_component.rb +49 -0
  9. data/app/components/calendar_component.rb +34 -0
  10. data/app/components/card_component.rb +56 -0
  11. data/app/components/checkbox_component.rb +41 -0
  12. data/app/components/column_component.rb +62 -0
  13. data/app/components/comment_component.rb +45 -0
  14. data/app/components/concerns/alignable.rb +21 -0
  15. data/app/components/concerns/attachable.rb +16 -0
  16. data/app/components/concerns/orientable.rb +21 -0
  17. data/app/components/concerns/positionable.rb +21 -0
  18. data/app/components/concerns/sizeable.rb +18 -0
  19. data/app/components/container_component.rb +23 -0
  20. data/app/components/dimmer_component.rb +30 -0
  21. data/app/components/divider_component.rb +30 -0
  22. data/app/components/dropdown_component.rb +63 -0
  23. data/app/components/embed_component.rb +32 -0
  24. data/app/components/emoji_component.rb +15 -0
  25. data/app/components/feed_component.rb +22 -0
  26. data/app/components/flag_component.rb +15 -0
  27. data/app/components/flyout_component.rb +41 -0
  28. data/app/components/form_component.rb +39 -0
  29. data/app/components/grid_component.rb +85 -0
  30. data/app/components/h_stack_component.rb +67 -0
  31. data/app/components/header_component.rb +60 -0
  32. data/app/components/icon_component.rb +41 -0
  33. data/app/components/image_component.rb +46 -0
  34. data/app/components/input_component.rb +52 -0
  35. data/app/components/item_component.rb +39 -0
  36. data/app/components/item_group_component.rb +30 -0
  37. data/app/components/label_component.rb +49 -0
  38. data/app/components/link_component.rb +23 -0
  39. data/app/components/list_component.rb +39 -0
  40. data/app/components/loader_component.rb +33 -0
  41. data/app/components/menu_component.rb +64 -0
  42. data/app/components/menu_item_component.rb +52 -0
  43. data/app/components/message_component.rb +54 -0
  44. data/app/components/modal_component.rb +50 -0
  45. data/app/components/nag_component.rb +25 -0
  46. data/app/components/overlay_component.rb +16 -0
  47. data/app/components/placeholder_component.rb +39 -0
  48. data/app/components/popup_component.rb +31 -0
  49. data/app/components/progress_component.rb +48 -0
  50. data/app/components/pusher_component.rb +18 -0
  51. data/app/components/rail_component.rb +31 -0
  52. data/app/components/rating_component.rb +41 -0
  53. data/app/components/reset_component.rb +12 -0
  54. data/app/components/reveal_component.rb +39 -0
  55. data/app/components/row_component.rb +39 -0
  56. data/app/components/search_component.rb +44 -0
  57. data/app/components/segment_component.rb +57 -0
  58. data/app/components/segment_group_component.rb +36 -0
  59. data/app/components/shape_component.rb +25 -0
  60. data/app/components/sidebar_component.rb +33 -0
  61. data/app/components/site_component.rb +12 -0
  62. data/app/components/slider_component.rb +46 -0
  63. data/app/components/state_component.rb +25 -0
  64. data/app/components/statistic_component.rb +43 -0
  65. data/app/components/step_component.rb +56 -0
  66. data/app/components/step_group_component.rb +38 -0
  67. data/app/components/sticky_component.rb +22 -0
  68. data/app/components/sub_header_component.rb +15 -0
  69. data/app/components/sub_menu_component.rb +24 -0
  70. data/app/components/tab_component.rb +24 -0
  71. data/app/components/table_cell_component.rb +60 -0
  72. data/app/components/table_component.rb +160 -0
  73. data/app/components/table_row_component.rb +43 -0
  74. data/app/components/text_component.rb +73 -0
  75. data/app/components/toast_component.rb +36 -0
  76. data/app/components/transition_component.rb +32 -0
  77. data/app/components/v_stack_component.rb +31 -0
  78. data/app/components/visibility_component.rb +22 -0
  79. data/app/helpers/component_helper.rb +109 -0
  80. data/app/helpers/fui_helper.rb +53 -0
  81. data/app/javascript/accordion.js +547 -0
  82. data/app/javascript/accordion.min.js +11 -0
  83. data/app/javascript/api.js +1112 -0
  84. data/app/javascript/api.min.js +11 -0
  85. data/app/javascript/calendar.js +1960 -0
  86. data/app/javascript/calendar.min.js +11 -0
  87. data/app/javascript/checkbox.js +819 -0
  88. data/app/javascript/checkbox.min.js +11 -0
  89. data/app/javascript/dimmer.js +686 -0
  90. data/app/javascript/dimmer.min.js +11 -0
  91. data/app/javascript/dropdown.js +4019 -0
  92. data/app/javascript/dropdown.min.js +11 -0
  93. data/app/javascript/embed.js +646 -0
  94. data/app/javascript/embed.min.js +11 -0
  95. data/app/javascript/flyout.js +1405 -0
  96. data/app/javascript/flyout.min.js +11 -0
  97. data/app/javascript/form.js +2070 -0
  98. data/app/javascript/form.min.js +11 -0
  99. data/app/javascript/jquery.js +10716 -0
  100. data/app/javascript/jquery.min.js +2 -0
  101. data/app/javascript/modal.js +1507 -0
  102. data/app/javascript/modal.min.js +11 -0
  103. data/app/javascript/nag.js +522 -0
  104. data/app/javascript/nag.min.js +11 -0
  105. data/app/javascript/popup.js +1457 -0
  106. data/app/javascript/popup.min.js +11 -0
  107. data/app/javascript/progress.js +922 -0
  108. data/app/javascript/progress.min.js +11 -0
  109. data/app/javascript/rating.js +496 -0
  110. data/app/javascript/rating.min.js +11 -0
  111. data/app/javascript/search.js +1519 -0
  112. data/app/javascript/search.min.js +11 -0
  113. data/app/javascript/shape.js +721 -0
  114. data/app/javascript/shape.min.js +11 -0
  115. data/app/javascript/sidebar.js +952 -0
  116. data/app/javascript/sidebar.min.js +11 -0
  117. data/app/javascript/site.js +415 -0
  118. data/app/javascript/site.min.js +11 -0
  119. data/app/javascript/slider.js +1449 -0
  120. data/app/javascript/slider.min.js +11 -0
  121. data/app/javascript/state.js +653 -0
  122. data/app/javascript/state.min.js +11 -0
  123. data/app/javascript/sticky.js +852 -0
  124. data/app/javascript/sticky.min.js +11 -0
  125. data/app/javascript/tab.js +867 -0
  126. data/app/javascript/tab.min.js +11 -0
  127. data/app/javascript/toast.js +916 -0
  128. data/app/javascript/toast.min.js +11 -0
  129. data/app/javascript/transition.js +955 -0
  130. data/app/javascript/transition.min.js +11 -0
  131. data/app/javascript/ui/controllers/fui_accordion_controller.js +45 -0
  132. data/app/javascript/ui/controllers/fui_api_controller.js +80 -0
  133. data/app/javascript/ui/controllers/fui_calendar_controller.js +66 -0
  134. data/app/javascript/ui/controllers/fui_checkbox_controller.js +48 -0
  135. data/app/javascript/ui/controllers/fui_dimmer_controller.js +45 -0
  136. data/app/javascript/ui/controllers/fui_dropdown_controller.js +68 -0
  137. data/app/javascript/ui/controllers/fui_embed_controller.js +49 -0
  138. data/app/javascript/ui/controllers/fui_flyout_controller.js +49 -0
  139. data/app/javascript/ui/controllers/fui_form_controller.js +62 -0
  140. data/app/javascript/ui/controllers/fui_modal_controller.js +61 -0
  141. data/app/javascript/ui/controllers/fui_nag_controller.js +52 -0
  142. data/app/javascript/ui/controllers/fui_popup_controller.js +58 -0
  143. data/app/javascript/ui/controllers/fui_progress_controller.js +60 -0
  144. data/app/javascript/ui/controllers/fui_rating_controller.js +49 -0
  145. data/app/javascript/ui/controllers/fui_search_controller.js +76 -0
  146. data/app/javascript/ui/controllers/fui_shape_controller.js +45 -0
  147. data/app/javascript/ui/controllers/fui_sidebar_controller.js +48 -0
  148. data/app/javascript/ui/controllers/fui_site_controller.js +29 -0
  149. data/app/javascript/ui/controllers/fui_slider_controller.js +53 -0
  150. data/app/javascript/ui/controllers/fui_state_controller.js +63 -0
  151. data/app/javascript/ui/controllers/fui_sticky_controller.js +50 -0
  152. data/app/javascript/ui/controllers/fui_tab_controller.js +57 -0
  153. data/app/javascript/ui/controllers/fui_toast_controller.js +60 -0
  154. data/app/javascript/ui/controllers/fui_transition_controller.js +60 -0
  155. data/app/javascript/ui/controllers/fui_visibility_controller.js +55 -0
  156. data/app/javascript/ui/index.js +114 -0
  157. data/app/javascript/visibility.js +1196 -0
  158. data/app/javascript/visibility.min.js +11 -0
  159. data/app/lib/component.rb +63 -0
  160. data/config/importmap.rb +27 -0
  161. data/config/initializers/ruby_template_handler.rb +31 -0
  162. data/config/routes.rb +2 -0
  163. data/lib/tasks/ui_tasks.rake +4 -0
  164. data/lib/ui/engine.rb +27 -0
  165. data/lib/ui/version.rb +3 -0
  166. data/lib/ui.rb +6 -0
  167. metadata +220 -0
@@ -0,0 +1,11 @@
1
+ /*
2
+ * # Fomantic UI - 2.9.4
3
+ * https://github.com/fomantic/Fomantic-UI
4
+ * https://fomantic-ui.com/
5
+ *
6
+ * Copyright 2026 Contributors
7
+ * Released under the MIT license
8
+ * https://opensource.org/licenses/MIT
9
+ *
10
+ */
11
+ !function(F,O,n){"use strict";function j(e){return"function"==typeof e&&"number"!=typeof e.nodeType}O=void 0!==O&&O.Math===Math?O:globalThis,F.fn.tab=function(...e){const r=j(this)?F(O):F(this),c=F(n);let l=Date.now(),d=[];const u=e[0],g="string"==typeof u,x=e.slice(1),L=function(e,t){let a;return[O,n].includes(e)?a=F(e):0===(a=F(t.document).find(e)).length&&(a=t.frameElement?L(e,t.parent):O),a};let w=!1,E;return r.each(function(){const b=F.isPlainObject(u)?F.extend(!0,{},F.fn.tab.settings,u):F.extend({},F.fn.tab.settings),f=b.className,h=b.metadata,t=b.selector,p=b.error,a="."+b.namespace,e="module-"+b.namespace,v=F(this);let m,o;const n={};let y=!0,i=0;const T=this;let s=v.data(e),C,S,A;const P={initialize:function(){P.debug("Initializing tab menu item",v),P.determineTabs(),P.debug("Determining tabs",b.context,o),b.auto&&P.set.auto(),P.bind.events(),b.history&&!w&&(b.history=P.initializeHistory(),w=!0);let e=P.determine.activeTab();var t;b.autoTabActivation&&void 0===s&&null===e&&(e=!0===b.autoTabActivation?P.get.initialPath():b.autoTabActivation,P.debug("No active tab detected, setting tab active",e),P.changeTab(e)),null!==e&&b.history&&"state"===b.historyType&&(t=F.address.autoUpdate(),F.address.autoUpdate(!1),F.address.value(e),F.address.autoUpdate(t)),P.instantiate()},instantiate:function(){P.verbose("Storing instance of module",P),s=P,v.data(e,P)},destroy:function(){P.debug("Destroying tabs",v),v.removeData(e).off(a)},bind:{events:function(){var e;null!==(e=T)&&e===e.window||(P.debug("Attaching tab activation events to element",v),v.on("click"+a,P.event.click))}},determineTabs:function(){let e;"parent"===b.context?(0<v.closest(t.ui).length?(e=v.closest(t.ui),P.verbose("Using closest UI element as parent",e)):e=v,m=e.parent(),P.verbose("Determined parent element for creating context",m)):b.context?(m=L(b.context,O),P.verbose("Using selector for tab context",b.context,m)):m=F("body"),b.childrenOnly?(o=m.children(t.tabs),P.debug("Searching tab context children for tabs",m,o)):(o=m.find(t.tabs),P.debug("Searching tab context for tabs",m,o))},initializeHistory:function(){if(P.debug("Initializing page state"),void 0===F.address)return P.error(p.state),!1;if("state"===b.historyType){if(P.debug("Using HTML5 to manage state"),!1===b.path)return P.error(p.path),!1;F.address.history(!0).state(b.path),F(O).trigger("popstate")}return F.address.bind("change",P.event.history.change),!0},event:{click:function(e){var t=F(this).data(h.tab);void 0!==t?(b.history?(P.verbose("Updating page state",e),F.address.value(t)):(P.verbose("Changing tab",e),P.changeTab(t)),e.preventDefault()):P.debug("No tab specified")},history:{change:function(e){var t=e.pathNames.join("/")||P.get.initialPath(),a=b.templates.determineTitle(t)||!1;P.performance.display(),P.debug("History change event",t,e),A=e,void 0!==t&&P.changeTab(t),a&&F.address.title(a)}}},refresh:function(){C&&(P.debug("Refreshing tab",C),P.changeTab(C))},cache:{read:function(e){return void 0!==e&&n[e]},add:function(e=C,t=""){P.debug("Adding cached content for",e),n[e]=t},remove:function(e=C){P.debug("Removing cached content for",e),delete n[e]}},set:{auto:function(){var e="string"==typeof b.path?b.path.replace(/\/$/,"")+"/{$tab}":"/{$tab}";P.verbose("Setting up automatic tab retrieval from server",e),F.isPlainObject(b.apiSettings)?b.apiSettings.url=e:b.apiSettings={url:e}},loading:function(e){const t=P.get.tabElement(e);t.hasClass(f.loading)||(P.verbose("Setting loading state for",t),t.addClass(f.loading).siblings(o).removeClass(f.active+" "+f.loading),0<t.length&&b.onRequest.call(t[0],e))},state:function(e){F.address.value(e)}},changeTab:function(l){const d=O.history&&O.history.pushState&&b.ignoreFirstLoad&&y,u=b.auto||F.isPlainObject(b.apiSettings),g=u&&!d?P.utilities.pathToArray(l):P.get.defaultPathArray(l);l=P.utilities.arrayToPath(g),F.each(g,function(e,t){var a=g.slice(0,e+1);let n=P.utilities.arrayToPath(a);var i=P.is.tab(n),o=e+1===g.length;let r=P.get.tabElement(n),s,c;return P.verbose("Looking for tab",t),i?(P.verbose("Tab was found",t),C=n,S=P.utilities.filterArray(g,a),o?c=!0:(i=g.slice(0,e+2),t=P.utilities.arrayToPath(i),(c=!P.is.tab(t))&&P.verbose("Tab parameters found",i)),!1===b.onBeforeChange.call(T,n)?(P.debug("onBeforeChange returned false, cancelling tab change",r),!1):c&&u?(d?(P.debug("Ignoring remote content on first tab load",n),y=!1,P.cache.add(l,r.html()),P.activate.all(n),b.onFirstLoad.call(r[0],n,S,A),b.onLoad.call(r[0],n,S,A)):(P.activate.navigation(n),P.fetch.content(n,l)),!1):(P.debug("Opened local tab",n),P.activate.all(n),P.cache.read(n)||(P.cache.add(n,!0),P.debug("First time tab loaded calling tab init"),b.onFirstLoad.call(r[0],n,S,A)),void b.onLoad.call(r[0],n,S,A))):-1!==l.search("/")||""===l?(P.error(p.missingTab,v,m,n),!1):(s=F("#"+CSS.escape(l)+', a[name="'+CSS.escape(l)+'"]'),n=s.closest("[data-tab]").data(h.tab),r=P.get.tabElement(n),s&&0<s.length&&n?(P.debug("Anchor link used, opening parent tab",r,s),!1===b.onBeforeChange.call(T,n)?P.debug("onBeforeChange returned false, cancelling tab change",r):(r.hasClass(f.active)||setTimeout(function(){P.scrollTo(s)},0),P.activate.all(n),P.cache.read(n)||(P.cache.add(n,!0),P.debug("First time tab loaded calling tab init"),b.onFirstLoad.call(r[0],n,S,A)),b.onLoad.call(r[0],n,S,A)),!1):void 0)})},scrollTo:function(e){var t=!!(e&&0<e.length)&&e.offset().top;!1!==t&&(P.debug("Forcing scroll to an in-page link in a hidden tab",t,e),c.scrollTop(t))},update:{content:function(e,t,a=b.evaluateScripts){const n=P.get.tabElement(e),i=n[0];"string"==typeof b.cacheType&&"dom"===b.cacheType.toLowerCase()&&"string"!=typeof t?n.empty().append(F(t).clone(!0)):a?(P.debug("Updating HTML and evaluating inline scripts",e,t),n.html(t)):(P.debug("Updating HTML",e,t),i.innerHTML=t)}},fetch:{content:function(t,a=t){const n=P.get.tabElement(t);var e={dataType:"html",encodeParameters:!1,on:"now",cache:b.alwaysRefresh,onSuccess:function(e){"response"===b.cacheType&&P.cache.add(a,e),P.update.content(t,e),t==C?(P.debug("Content loaded",t),P.activate.tab(t)):P.debug("Content loaded in background",t),b.onFirstLoad.call(n[0],t,S,A),b.onLoad.call(n[0],t,S,A),b.loadOnce?P.cache.add(a,!0):"string"==typeof b.cacheType&&"dom"===b.cacheType.toLowerCase()&&0<n.children().length?setTimeout(function(){let e=n.children().clone(!0);e=e.not("script"),P.cache.add(a,e)},0):P.cache.add(a,n.html())},urlData:{tab:a}};const i=n.api("get request")||!1;var o=i&&"pending"===i.state(),r=P.cache.read(a);b.cache&&r?(P.activate.tab(t),P.debug("Adding cached content",a),b.loadOnce||("once"===b.evaluateScripts?P.update.content(t,r,!1):P.update.content(t,r)),b.onLoad.call(n[0],t,S,A)):o?(P.set.loading(t),P.debug("Content is already loading",a)):void 0!==F.api?(r=F.extend(!0,{},b.apiSettings,e),P.debug("Retrieving remote content",a,r),P.set.loading(t),n.api(r)):P.error(p.api)}},activate:{all:function(e){P.activate.tab(e),P.activate.navigation(e)},tab:function(e){const t=P.get.tabElement(e),a="siblings"===b.deactivate?t.siblings(o):o.not(t);var n=t.hasClass(f.active);P.verbose("Showing tab content for",t),n||(t.addClass(f.active),a.removeClass(f.active+" "+f.loading),0<t.length&&b.onVisible.call(t[0],e))},navigation:function(e){const t=P.get.navElement(e),a="siblings"===b.deactivate?t.siblings(r):r.not(t);var n=t.hasClass(f.active);P.verbose("Activating tab navigation for",t,e),n||(t.addClass(f.active),a.removeClass(f.active+" "+f.loading))}},deactivate:{all:function(){P.deactivate.navigation(),P.deactivate.tabs()},navigation:function(){r.removeClass(f.active)},tabs:function(){o.removeClass(f.active+" "+f.loading)}},is:{tab:function(e){return void 0!==e&&0<P.get.tabElement(e).length}},get:{initialPath:function(){return r.eq(0).data(h.tab)||o.eq(0).data(h.tab)},path:function(){return F.address.value()},defaultPathArray:function(e){return P.utilities.pathToArray(P.get.defaultPath(e))},defaultPath:function(e){const t=r.filter("[data-"+h.tab+'^="'+CSS.escape(e)+'/"]').eq(0);var a=t.data(h.tab)||!1;if(a){if(P.debug("Found default tab",a),i<b.maxDepth)return i++,P.get.defaultPath(a);P.error(p.recursion)}else P.debug("No default tabs found for",e,o);return i=0,e},navElement:function(e=C){return r.filter("[data-"+h.tab+'="'+CSS.escape(e)+'"]')},tabElement:function(e=C){var t=P.utilities.pathToArray(e),t=P.utilities.last(t),e=o.filter("[data-"+h.tab+'="'+CSS.escape(e)+'"]'),t=o.filter("[data-"+h.tab+'="'+CSS.escape(t)+'"]');return 0<e.length?e:t},tab:function(){return C}},determine:{activeTab:function(){let i=null;return o.each(function(e,t){const a=F(t);if(a.hasClass(f.active)){t=F(this).data(h.tab);const n=r.filter("[data-"+h.tab+'="'+CSS.escape(t)+'"]');n.hasClass(f.active)&&(i=t)}}),i}},utilities:{filterArray:function(e,t){return F.grep(e,function(e){return!t.includes(e)})},last:function(e){return!!Array.isArray(e)&&e[e.length-1]},pathToArray:function(e){return"string"==typeof(e=void 0===e?C:e)?e.split("/"):[e]},arrayToPath:function(e){return!!Array.isArray(e)&&e.join("/")}},setting:function(e,t){if(P.debug("Changing setting",e,t),F.isPlainObject(e))F.extend(!0,b,e);else{if(void 0===t)return b[e];F.isPlainObject(b[e])?F.extend(!0,b[e],t):b[e]=t}},internal:function(e,t){if(F.isPlainObject(e))F.extend(!0,P,e);else{if(void 0===t)return P[e];P[e]=t}},debug:function(...e){!b.silent&&b.debug&&(b.performance?P.performance.log(e):(P.debug=Function.prototype.bind.call(console.info,console,b.name+":"),P.debug.apply(console,e)))},verbose:function(...e){!b.silent&&b.verbose&&b.debug&&(b.performance?P.performance.log(e):(P.verbose=Function.prototype.bind.call(console.info,console,b.name+":"),P.verbose.apply(console,e)))},error:function(...e){b.silent||(P.error=Function.prototype.bind.call(console.error,console,b.name+":"),P.error.apply(console,e))},performance:{log:function(e){var t,a;b.performance&&(a=(t=Date.now())-(l||t),l=t,d.push({Name:e[0],Arguments:e.slice(1),Element:T,"Execution Time":a})),clearTimeout(P.performance.timer),P.performance.timer=setTimeout(function(){P.performance.display()},500)},display:function(){var e=b.name+":";let a=0;l=!1,clearTimeout(P.performance.timer),F.each(d,function(e,t){a+=t["Execution Time"]}),e+=" "+a+"ms",0<d.length&&(console.groupCollapsed(e),console.table(d),console.groupEnd()),d=[]}},invoke:function(n,e=x,t=T){let i=s,o,r,a;return"string"==typeof n&&void 0!==i&&(n=n.split(/[ .]/),o=n.length-1,F.each(n,function(e,t){var a=e!==o?t+n[e+1].charAt(0).toUpperCase()+n[e+1].slice(1):n;if(F.isPlainObject(i[a])&&e!==o)i=i[a];else{if(void 0!==i[a])return r=i[a],!1;{if(!F.isPlainObject(i[t])||e===o)return void 0!==i[t]?r=i[t]:P.error(p.method,n),!1;i=i[t]}}})),j(r)?a=r.apply(t,e):void 0!==r&&(a=r),Array.isArray(E)?E.push(a):void 0!==E?E=[E,a]:void 0!==a&&(E=a),r}};g?(void 0===s&&P.initialize(),P.invoke(u)):(void 0!==s&&s.invoke("destroy"),P.initialize())}),void 0!==E?E:this},F.tab=F.fn.tab,F.fn.tab.settings={name:"Tab",namespace:"tab",silent:!1,debug:!1,verbose:!1,performance:!0,auto:!1,history:!1,historyType:"hash",path:!1,context:!1,childrenOnly:!1,maxDepth:25,deactivate:"siblings",alwaysRefresh:!1,cache:!0,loadOnce:!1,cacheType:"response",ignoreFirstLoad:!1,apiSettings:!1,evaluateScripts:"once",autoTabActivation:!0,onFirstLoad:function(e,t,a){},onLoad:function(e,t,a){},onVisible:function(e,t,a){},onRequest:function(e,t,a){},onBeforeChange:function(e){},templates:{determineTitle:function(e){}},error:{api:"You attempted to load content without API module",method:"The method you called is not defined",missingTab:"Activated tab cannot be found. Tabs are case-sensitive.",noContent:"The tab you specified is missing a content url.",path:"History enabled, but no path was specified",recursion:"Max recursive depth reached",state:"History requires Asual's Address library <https://github.com/asual/jquery-address>"},metadata:{tab:"tab",loaded:"loaded",promise:"promise"},className:{loading:"loading",active:"active"},selector:{tabs:".ui.tab",ui:".ui"}}}(jQuery,window,document);