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(R,j,V){"use strict";function q(e){return"function"==typeof e&&"number"!=typeof e.nodeType}j=void 0!==j&&j.Math===Math?j:globalThis,R.fn.sidebar=function(...e){const i=R(this),w=R(j),A=R(V),F=R("body");R("html");const P=R("head");let H=Date.now(),M=[];const B=e[0],O="string"==typeof B,E=e.slice(1),L=function(e,i){let n;return[j,V].includes(e)?n=F:0===(n=R(i.document).find(e)).length&&(n=i.frameElement?L(e,i.parent):F),n};let D;return i.each(function(){const r=R.isPlainObject(B)?R.extend(!0,{},R.fn.sidebar.settings,B):R.extend({},R.fn.sidebar.settings),i=r.selector,s=r.className;var e=r.namespace;const n=r.regExp,a=r.error,t="."+e,o="module-"+e,l=R(this);let c=L(r.context,j);const d=c[0]===F[0];let u=l.children(i.sidebar),f=void c.children(i.fixed),h=c.children(i.pusher),g;const b=this;let m=l.data(o),v,p,y,S="",x=0,C=0,T=!1;const k={initialize:function(){k.debug("Initializing sidebar",B),k.create.id(),r.delaySetup?requestAnimationFrame(k.setup.layout):k.setup.layout(),requestAnimationFrame(function(){k.setup.cache()}),k.instantiate()},instantiate:function(){k.verbose("Storing instance of module",k),m=k,l.data(o,k)},create:{id:function(){p=(Math.random().toString(16)+"000000000").slice(2,10),v="."+p,k.verbose("Creating unique id for element",p)}},destroy:function(){k.verbose("Destroying previous module for",l),l.off(t).removeData(o),c.off(v),w.off(v),A.off(v)},event:{clickaway:function(e){var i;r.closable&&(i=0<h.find(e.target).length||h.is(e.target),e=c.is(e.target),i&&(k.verbose("User clicked on dimmed page"),k.hide()),e&&(k.verbose("User clicked on dimmable context (scaled out page)"),k.hide()))},touch:function(e){},containScroll:function(e){b.scrollTop<=0&&(b.scrollTop=1),b.scrollTop+b.offsetHeight>=b.scrollHeight&&(b.scrollTop=b.scrollHeight-b.offsetHeight-1)},scroll:function(e){0===R(e.target).closest(i.sidebar).length&&e.preventDefault()}},bind:{clickaway:function(){k.verbose("Adding clickaway events to context",c),c.on("click"+v,k.event.clickaway).on("touchend"+v,k.event.clickaway)},scrollLock:function(){r.scrollLock&&(k.debug("Disabling page scroll"),(T=k.has.scrollbar())&&(k.save.bodyMargin(),k.set.bodyMargin()),c.addClass(s.locked)),k.verbose("Adding events to contain sidebar scroll"),A.on("touchmove"+v,k.event.touch),l.on("scroll"+t,k.event.containScroll)}},unbind:{clickaway:function(){k.verbose("Removing clickaway events from context",c),c.off(v)},scrollLock:function(){k.verbose("Removing scroll lock from page"),T&&k.restore.bodyMargin(),c.removeClass(s.locked),A.off(v),l.off("scroll"+t)}},add:{inlineCSS:function(){var e=k.cache.width||l.outerWidth(),i=k.cache.height||l.outerHeight(),n=k.is.rtl(),t=k.get.direction();const o={left:e,right:-e,top:i,bottom:-i};let r;n&&(k.verbose("RTL detected, flipping widths"),o.left=-e,o.right=e),r="<style>","left"===t||"right"===t?(k.debug("Adding CSS rules for animation distance",e),r+=" .ui.visible."+t+".sidebar ~ .fixed, .ui.visible."+t+".sidebar ~ .pusher { transform: translate3d("+o[t]+"px, 0, 0); }"):"top"!==t&&"bottom"!==t||(r+=" .ui.visible."+t+".sidebar ~ .fixed, .ui.visible."+t+".sidebar ~ .pusher { transform: translate3d(0, "+o[t]+"px, 0); }"),r+="</style>",g=R(r).appendTo(P),k.debug("Adding sizing css to head",g)}},refresh:function(){k.verbose("Refreshing selector cache"),c=L(r.context,j),k.refreshSidebars(),h=c.children(i.pusher),f=c.children(i.fixed),k.clear.cache()},refreshSidebars:function(){k.verbose("Refreshing other sidebars"),u=c.children(i.sidebar)},repaint:function(){k.verbose("Forcing repaint event"),b.style.display="none";b.offsetHeight;b.scrollTop=b.scrollTop,b.style.display=""},setup:{cache:function(){k.cache={width:l.outerWidth(),height:l.outerHeight()}},layout:function(){0===c.children(i.pusher).length&&(k.debug("Adding wrapper element for sidebar"),k.error(a.pusher),h=R('<div class="pusher" />'),c.children().not(i.omitted).not(u).wrapAll(h),k.refresh()),0!==l.nextAll(i.pusher).length&&l.nextAll(i.pusher)[0]===h[0]||(k.debug("Moved sidebar to correct parent element"),k.error(a.movedSidebar,b),l.detach().prependTo(c),k.refresh()),k.clear.cache(),k.set.pushable(),k.set.direction()}},attachEvents:function(e,i){const n=R(e);i=q(k[i])?k[i]:k.toggle,0<n.length?(k.debug("Attaching sidebar events to element",e,i),n.on("click"+t,i)):k.error(a.notFound,e)},can:{leftBodyScrollbar:function(){return void 0===k.cache.leftBodyScrollbar&&(k.cache.leftBodyScrollbar=k.is.rtl()&&(k.is.iframe&&!k.is.firefox()||k.is.safari())),k.cache.leftBodyScrollbar}},save:{bodyMargin:function(){S=c.css((d?"margin-":"padding-")+(k.can.leftBodyScrollbar()?"left":"right")),x=Number.parseInt(S.replace(/[^\d.]/g,""),10);var e=d?j.innerWidth-V.documentElement.clientWidth:c[0].offsetWidth-c[0].clientWidth;C=x+e}},show:function(e){if(e=q(e)?e:function(){},k.is.hidden())if(!1===r.onShow.call(b))k.verbose("Show callback returned false cancelling show");else{if(r.overlay&&(k.error(a.overlay),r.transition="overlay"),k.refresh(),k.othersActive())if(k.debug("Other sidebars currently visible"),r.exclusive){if("overlay"!==r.transition)return void k.hideOthers(k.show);k.hideOthers()}else r.transition="overlay";k.set.dimmerStyles(),k.pushPage(function(){e.call(b),r.onVisible.call(b)}),r.onChange.call(b)}else k.debug("Sidebar is already visible")},hide:function(e){e=q(e)?e:function(){},(k.is.visible()||k.is.animating())&&!1!==r.onHide.call(b)&&(k.debug("Hiding sidebar",e),k.refreshSidebars(),k.pullPage(function(){e.call(b),r.onHidden.call(b)}),r.onChange.call(b))},othersAnimating:function(){return 0<u.not(l).filter("."+s.animating).length},othersVisible:function(){return 0<u.not(l).filter("."+s.visible).length},othersActive:function(){return k.othersVisible()||k.othersAnimating()},hideOthers:function(e=function(){}){const i=u.not(l).filter("."+s.visible),n=i.length;let t=0;i.sidebar("hide",function(){++t===n&&q(e)&&e()})},toggle:function(){k.verbose("Determining toggled direction"),k.is.hidden()?k.show():k.hide()},pushPage:function(i){var e=k.get.transition();const n="overlay"===e||k.othersActive()?l:h;i=q(i)?i:function(){},r.returnScroll&&(y=(d?w:c).scrollTop()),"scale down"===r.transition&&k.scrollToTop(),k.bind.scrollLock(),k.set.transition(e),k.repaint();function t(e){e.target===n[0]&&(n.off("transitionend"+v,t),k.remove.animating(),i.call(b))}n.off("transitionend"+v),n.on("transitionend"+v,t),requestAnimationFrame(function(){k.bind.clickaway(),k.add.inlineCSS(),k.set.animating(),k.set.visible()}),r.dimPage&&!k.othersVisible()&&requestAnimationFrame(function(){k.set.dimmed()})},pullPage:function(i){const n=k.get.transition(),t="overlay"===n||k.othersActive()?l:h;i=q(i)?i:function(){},k.verbose("Removing context push state",k.get.direction()),k.unbind.clickaway(),k.unbind.scrollLock();function o(e){e.target===t[0]&&(t.off("transitionend"+v,o),k.remove.animating(),k.remove.closing(),k.remove.transition(),k.remove.inlineCSS(),"scale down"!==n&&!r.returnScroll||k.scrollBack(),r.dimPage&&!k.othersVisible()&&h.removeClass(s.dimmed),i.call(b))}t.off("transitionend"+v),t.on("transitionend"+v,o),requestAnimationFrame(function(){k.set.transition(n),k.set.animating(),r.dimPage&&!k.othersVisible()&&k.set.closing(),k.remove.visible()})},scrollToTop:function(){k.verbose("Scrolling to top of page to avoid animation issues"),l.scrollTop(0),(d?w:c)[0].scrollTo(0,0)},scrollBack:function(){k.verbose("Scrolling back to original page position"),(d?w:c)[0].scrollTo(0,y)},clear:{cache:function(){k.verbose("Clearing cached dimensions"),k.cache={}}},set:{bodyMargin:function(){const n=k.can.leftBodyScrollbar()?"left":"right";c.css((d?"margin-":"padding-")+n,C+"px"),c.find(i.bodyFixed.replace("right",n)).each(function(){const e=R(this);var i="fixed"===e.css("position")?"padding-"+n:n;e.css(i,"calc("+e.css(i)+" + "+C+"px)")})},dimmerStyles:function(){r.blurring?h.addClass(s.blurring):h.removeClass(s.blurring)},pushed:function(){c.addClass(s.pushed)},pushable:function(){c.addClass(s.pushable)},dimmed:function(){h.addClass(s.dimmed)},active:function(){l.addClass(s.active)},animating:function(){l.addClass(s.animating)},closing:function(){h.addClass(s.closing)},transition:function(e=k.get.transition()){l.addClass(e)},direction:function(e=k.get.direction()){l.addClass(s[e])},visible:function(){l.addClass(s.visible)},overlay:function(){l.addClass(s.overlay)}},remove:{inlineCSS:function(){k.debug("Removing inline css styles",g),g&&0<g.length&&g.remove()},pushed:function(){c.removeClass(s.pushed)},pushable:function(){c.removeClass(s.pushable)},active:function(){l.removeClass(s.active)},animating:function(){l.removeClass(s.animating)},closing:function(){h.removeClass(s.closing)},transition:function(e=k.get.transition()){l.removeClass(e)},direction:function(e=k.get.direction()){l.removeClass(s[e])},visible:function(){l.removeClass(s.visible)},overlay:function(){l.removeClass(s.overlay)}},restore:{bodyMargin:function(){const n=k.can.leftBodyScrollbar()?"left":"right";c.css((d?"margin-":"padding-")+n,0===x?"":S),c.find(i.bodyFixed.replace("right",n)).each(function(){const e=R(this);var i="fixed"===e.css("position")?"padding-"+n:n;e.css(i,"")})}},get:{direction:function(){return l.hasClass(s.top)?s.top:l.hasClass(s.right)?s.right:l.hasClass(s.bottom)?s.bottom:s.left},transition:function(){var e=k.get.direction(),e=k.is.mobile()?"auto"===r.mobileTransition?r.defaultTransition.mobile[e]:r.mobileTransition:"auto"===r.transition?r.defaultTransition.computer[e]:r.transition;return k.verbose("Determined transition",e),e}},has:{scrollbar:function(){return d||"hidden"!==c.css("overflow-y")}},is:{safari:function(){return void 0===k.cache.isSafari&&(k.cache.isSafari=/constructor/i.test(j.HTMLElement)||!!j.ApplePaySession),k.cache.isSafari},firefox:function(){return void 0===k.cache.isFirefox&&(k.cache.isFirefox=!!j.InstallTrigger),k.cache.isFirefox},iframe:function(){return!(j.self===j.top)},mobile:function(){const e=navigator.userAgent;return e.match(n.mobile)?(k.verbose("Browser was found to be mobile",e),!0):(k.verbose("Browser is not mobile, using regular transition",e),!1)},hidden:function(){return!k.is.visible()},visible:function(){return l.hasClass(s.visible)},open:function(){return k.is.visible()},closed:function(){return k.is.hidden()},vertical:function(){return l.hasClass(s.top)},animating:function(){return c.hasClass(s.animating)},rtl:function(){return void 0===k.cache.isRTL&&(k.cache.isRTL="rtl"===l.attr("dir")||"rtl"===l.css("direction")||"rtl"===F.attr("dir")||"rtl"===F.css("direction")||"rtl"===c.attr("dir")||"rtl"===c.css("direction")),k.cache.isRTL}},setting:function(e,i){if(k.debug("Changing setting",e,i),R.isPlainObject(e))R.extend(!0,r,e);else{if(void 0===i)return r[e];R.isPlainObject(r[e])?R.extend(!0,r[e],i):r[e]=i}},internal:function(e,i){if(R.isPlainObject(e))R.extend(!0,k,e);else{if(void 0===i)return k[e];k[e]=i}},debug:function(...e){!r.silent&&r.debug&&(r.performance?k.performance.log(e):(k.debug=Function.prototype.bind.call(console.info,console,r.name+":"),k.debug.apply(console,e)))},verbose:function(...e){!r.silent&&r.verbose&&r.debug&&(r.performance?k.performance.log(e):(k.verbose=Function.prototype.bind.call(console.info,console,r.name+":"),k.verbose.apply(console,e)))},error:function(...e){r.silent||(k.error=Function.prototype.bind.call(console.error,console,r.name+":"),k.error.apply(console,e))},performance:{log:function(e){var i,n;r.performance&&(n=(i=Date.now())-(H||i),H=i,M.push({Name:e[0],Arguments:e.slice(1),Element:b,"Execution Time":n})),clearTimeout(k.performance.timer),k.performance.timer=setTimeout(function(){k.performance.display()},500)},display:function(){var e=r.name+":";let n=0;H=!1,clearTimeout(k.performance.timer),R.each(M,function(e,i){n+=i["Execution Time"]}),e+=" "+n+"ms",0<M.length&&(console.groupCollapsed(e),console.table(M),console.groupEnd()),M=[]}},invoke:function(t,e=E,i=b){let o=m,r,s,n;return"string"==typeof t&&void 0!==o&&(t=t.split(/[ .]/),r=t.length-1,R.each(t,function(e,i){var n=e!==r?i+t[e+1].charAt(0).toUpperCase()+t[e+1].slice(1):t;if(R.isPlainObject(o[n])&&e!==r)o=o[n];else{if(void 0!==o[n])return s=o[n],!1;{if(!R.isPlainObject(o[i])||e===r)return void 0!==o[i]?s=o[i]:k.error(a.method,t),!1;o=o[i]}}})),q(s)?n=s.apply(i,e):void 0!==s&&(n=s),Array.isArray(D)?D.push(n):void 0!==D?D=[D,n]:void 0!==n&&(D=n),s}};O?(void 0===m&&k.initialize(),k.invoke(B)):(void 0!==m&&k.invoke("destroy"),k.initialize())}),void 0!==D?D:this},R.fn.sidebar.settings={name:"Sidebar",namespace:"sidebar",silent:!1,debug:!1,verbose:!1,performance:!0,transition:"auto",mobileTransition:"auto",defaultTransition:{computer:{left:"uncover",right:"uncover",top:"overlay",bottom:"overlay"},mobile:{left:"uncover",right:"uncover",top:"overlay",bottom:"overlay"}},context:"body",exclusive:!1,closable:!0,dimPage:!0,scrollLock:!1,returnScroll:!1,delaySetup:!1,onChange:function(){},onShow:function(){},onHide:function(){},onHidden:function(){},onVisible:function(){},className:{active:"active",animating:"animating",blurring:"blurring",closing:"closing",dimmed:"dimmed",locked:"locked",pushable:"pushable",pushed:"pushed",right:"right",top:"top",left:"left",bottom:"bottom",visible:"visible"},selector:{bodyFixed:"> .ui.fixed.menu, > .ui.right.toast-container, > .ui.right.sidebar, > .ui.fixed.nag, > .ui.fixed.nag > .close",fixed:".fixed",omitted:"script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed",pusher:".pusher",sidebar:".ui.sidebar"},regExp:{mobile:/Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g},error:{method:"The method you called is not defined.",pusher:"Had to add pusher element. For optimal performance make sure body content is inside a pusher element",movedSidebar:"Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag",overlay:"The overlay setting is no longer supported, use animation: overlay",notFound:"There were no elements that matched the specified selector"}}}(jQuery,window,document);
@@ -0,0 +1,415 @@
1
+ /*!
2
+ * # Fomantic-UI 2.9.4 - Site
3
+ * https://github.com/fomantic/Fomantic-UI/
4
+ *
5
+ *
6
+ * Released under the MIT license
7
+ * https://opensource.org/licenses/MIT
8
+ *
9
+ */
10
+
11
+ (function ($, window, document) {
12
+ 'use strict';
13
+
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
17
+
18
+ window = window !== undefined && window.Math === Math
19
+ ? window
20
+ : globalThis;
21
+
22
+ $.fn.site = function (...args) {
23
+ let time = Date.now();
24
+ let performance = [];
25
+
26
+ const parameters = args[0];
27
+ const methodInvoked = typeof parameters === 'string';
28
+ const queryArguments = args.slice(1);
29
+
30
+ const settings = $.isPlainObject(parameters)
31
+ ? $.extend(true, {}, $.site.settings, parameters)
32
+ : $.extend({}, $.site.settings);
33
+
34
+ const namespace = settings.namespace;
35
+ const error = settings.error;
36
+
37
+ const moduleNamespace = 'module-' + namespace;
38
+
39
+ const $document = $(document);
40
+ const $module = $document;
41
+ const element = this;
42
+ let instance = $module.data(moduleNamespace);
43
+
44
+ let returnedValue;
45
+ const module = {
46
+
47
+ initialize: function () {
48
+ module.instantiate();
49
+ },
50
+
51
+ instantiate: function () {
52
+ module.verbose('Storing instance of site', module);
53
+ instance = module;
54
+ $module
55
+ .data(moduleNamespace, module);
56
+ },
57
+
58
+ normalize: function () {
59
+ // keep the function for backward compatibility
60
+ // eslint-disable-next-line no-useless-return
61
+ return;
62
+ },
63
+
64
+ fix: {
65
+ consoleClear: function () {
66
+ module.debug('Disabling programmatic console clearing');
67
+ window.console.clear = function () {};
68
+ },
69
+ },
70
+
71
+ moduleExists: function (name) {
72
+ return $.fn[name] !== undefined && $.fn[name].settings !== undefined;
73
+ },
74
+
75
+ enabled: {
76
+ modules: function (modules = settings.modules) {
77
+ const enabledModules = [];
78
+ $.each(modules, function (index, name) {
79
+ if (module.moduleExists(name)) {
80
+ enabledModules.push(name);
81
+ }
82
+ });
83
+
84
+ return enabledModules;
85
+ },
86
+ },
87
+
88
+ disabled: {
89
+ modules: function (modules = settings.modules) {
90
+ const disabledModules = [];
91
+ $.each(modules, function (index, name) {
92
+ if (!module.moduleExists(name)) {
93
+ disabledModules.push(name);
94
+ }
95
+ });
96
+
97
+ return disabledModules;
98
+ },
99
+ },
100
+
101
+ change: {
102
+ setting: function (setting, value, modules, modifyExisting = true) {
103
+ modules = typeof modules === 'string'
104
+ ? (modules === 'all'
105
+ ? settings.modules
106
+ : [modules])
107
+ : modules || settings.modules;
108
+ $.each(modules, function (index, name) {
109
+ const namespace = module.moduleExists(name)
110
+ ? $.fn[name].settings.namespace || false
111
+ : true;
112
+ let $existingModules;
113
+ if (module.moduleExists(name)) {
114
+ module.verbose('Changing default setting', setting, value, name);
115
+ $.fn[name].settings[setting] = value;
116
+ if (modifyExisting && namespace) {
117
+ $existingModules = $(':data(module-' + namespace + ')');
118
+ if ($existingModules.length > 0) {
119
+ module.verbose('Modifying existing settings', $existingModules);
120
+ $existingModules[name]('setting', setting, value);
121
+ }
122
+ }
123
+ }
124
+ });
125
+ },
126
+ settings: function (newSettings, modules, modifyExisting = true) {
127
+ modules = typeof modules === 'string'
128
+ ? [modules]
129
+ : modules || settings.modules;
130
+ $.each(modules, function (index, name) {
131
+ let $existingModules;
132
+ if (module.moduleExists(name)) {
133
+ module.verbose('Changing default setting', newSettings, name);
134
+ $.extend(true, $.fn[name].settings, newSettings);
135
+ if (modifyExisting && namespace) {
136
+ $existingModules = $(':data(module-' + namespace + ')');
137
+ if ($existingModules.length > 0) {
138
+ module.verbose('Modifying existing settings', $existingModules);
139
+ $existingModules[name]('setting', newSettings);
140
+ }
141
+ }
142
+ }
143
+ });
144
+ },
145
+ },
146
+
147
+ enable: {
148
+ console: function () {
149
+ module.console(true);
150
+ },
151
+ debug: function (modules = settings.modules, modifyExisting = true) {
152
+ module.debug('Enabling debug for modules', modules);
153
+ module.change.setting('debug', true, modules, modifyExisting);
154
+ },
155
+ verbose: function (modules = settings.modules, modifyExisting = true) {
156
+ module.debug('Enabling verbose debug for modules', modules);
157
+ module.change.setting('verbose', true, modules, modifyExisting);
158
+ },
159
+ },
160
+ disable: {
161
+ console: function () {
162
+ module.console(false);
163
+ },
164
+ debug: function (modules = settings.modules, modifyExisting = true) {
165
+ module.debug('Disabling debug for modules', modules);
166
+ module.change.setting('debug', false, modules, modifyExisting);
167
+ },
168
+ verbose: function (modules = settings.modules, modifyExisting = true) {
169
+ module.debug('Disabling verbose debug for modules', modules);
170
+ module.change.setting('verbose', false, modules, modifyExisting);
171
+ },
172
+ },
173
+
174
+ console: function (enable) {
175
+ if (enable) {
176
+ if (instance.cache.console === undefined) {
177
+ module.error(error.console);
178
+
179
+ return;
180
+ }
181
+ module.debug('Restoring console function');
182
+ window.console = instance.cache.console;
183
+ } else {
184
+ module.debug('Disabling console function');
185
+ instance.cache.console = window.console;
186
+ window.console = {
187
+ clear: function () {},
188
+ error: function () {},
189
+ group: function () {},
190
+ groupCollapsed: function () {},
191
+ groupEnd: function () {},
192
+ info: function () {},
193
+ log: function () {},
194
+ table: function () {},
195
+ warn: function () {},
196
+ };
197
+ }
198
+ },
199
+
200
+ destroy: function () {
201
+ module.verbose('Destroying previous site for', $module);
202
+ $module
203
+ .removeData(moduleNamespace);
204
+ },
205
+
206
+ cache: {},
207
+
208
+ setting: function (name, value) {
209
+ if ($.isPlainObject(name)) {
210
+ $.extend(true, settings, name);
211
+ } else if (value !== undefined) {
212
+ settings[name] = value;
213
+ } else {
214
+ return settings[name];
215
+ }
216
+ },
217
+ internal: function (name, value) {
218
+ if ($.isPlainObject(name)) {
219
+ $.extend(true, module, name);
220
+ } else if (value !== undefined) {
221
+ module[name] = value;
222
+ } else {
223
+ return module[name];
224
+ }
225
+ },
226
+ debug: function (...args) {
227
+ if (settings.debug) {
228
+ if (settings.performance) {
229
+ module.performance.log(args);
230
+ } else {
231
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
232
+ module.debug.apply(console, args);
233
+ }
234
+ }
235
+ },
236
+ verbose: function (...args) {
237
+ if (settings.verbose && settings.debug) {
238
+ if (settings.performance) {
239
+ module.performance.log(args);
240
+ } else {
241
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
242
+ module.verbose.apply(console, args);
243
+ }
244
+ }
245
+ },
246
+ error: function (...args) {
247
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
248
+ module.error.apply(console, args);
249
+ },
250
+ performance: {
251
+ log: function (message) {
252
+ let currentTime;
253
+ let executionTime;
254
+ let previousTime;
255
+ if (settings.performance) {
256
+ currentTime = Date.now();
257
+ previousTime = time || currentTime;
258
+ executionTime = currentTime - previousTime;
259
+ time = currentTime;
260
+ performance.push({
261
+ Element: element,
262
+ Name: message[0],
263
+ Arguments: message.slice(1),
264
+ 'Execution Time': executionTime,
265
+ });
266
+ }
267
+ clearTimeout(module.performance.timer);
268
+ module.performance.timer = setTimeout(function () {
269
+ module.performance.display();
270
+ }, 500);
271
+ },
272
+ display: function () {
273
+ let title = settings.name + ':';
274
+ let totalTime = 0;
275
+ time = false;
276
+ clearTimeout(module.performance.timer);
277
+ $.each(performance, function (index, data) {
278
+ totalTime += data['Execution Time'];
279
+ });
280
+ title += ' ' + totalTime + 'ms';
281
+ if (performance.length > 0) {
282
+ console.groupCollapsed(title);
283
+ console.table(performance);
284
+ console.groupEnd();
285
+ }
286
+ performance = [];
287
+ },
288
+ },
289
+ invoke: function (query, passedArguments = queryArguments, context = element) {
290
+ let object = instance;
291
+ let maxDepth;
292
+ let found;
293
+ let response;
294
+ if (typeof query === 'string' && object !== undefined) {
295
+ query = query.split(/[ .]/);
296
+ maxDepth = query.length - 1;
297
+ $.each(query, function (depth, value) {
298
+ const camelCaseValue = depth !== maxDepth
299
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
300
+ : query;
301
+ if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
302
+ object = object[camelCaseValue];
303
+ } else if (object[camelCaseValue] !== undefined) {
304
+ found = object[camelCaseValue];
305
+
306
+ return false;
307
+ } else if ($.isPlainObject(object[value]) && (depth !== maxDepth)) {
308
+ object = object[value];
309
+ } else if (object[value] !== undefined) {
310
+ found = object[value];
311
+
312
+ return false;
313
+ } else {
314
+ module.error(error.method, query);
315
+
316
+ return false;
317
+ }
318
+ });
319
+ }
320
+ if (isFunction(found)) {
321
+ response = found.apply(context, passedArguments);
322
+ } else if (found !== undefined) {
323
+ response = found;
324
+ }
325
+ if (Array.isArray(returnedValue)) {
326
+ returnedValue.push(response);
327
+ } else if (returnedValue !== undefined) {
328
+ returnedValue = [returnedValue, response];
329
+ } else if (response !== undefined) {
330
+ returnedValue = response;
331
+ }
332
+
333
+ return found;
334
+ },
335
+ };
336
+
337
+ if (methodInvoked) {
338
+ if (instance === undefined) {
339
+ module.initialize();
340
+ }
341
+ module.invoke(parameters);
342
+ } else {
343
+ if (instance !== undefined) {
344
+ module.destroy();
345
+ }
346
+ module.initialize();
347
+ }
348
+
349
+ return returnedValue !== undefined
350
+ ? returnedValue
351
+ : this;
352
+ };
353
+ $.site = $.fn.site;
354
+
355
+ $.site.settings = {
356
+
357
+ name: 'Site',
358
+ namespace: 'site',
359
+
360
+ error: {
361
+ console: 'Console cannot be restored, most likely it was overwritten outside of module',
362
+ method: 'The method you called is not defined.',
363
+ },
364
+
365
+ debug: false,
366
+ verbose: false,
367
+ performance: true,
368
+
369
+ modules: [
370
+ 'accordion',
371
+ 'api',
372
+ 'calendar',
373
+ 'checkbox',
374
+ 'dimmer',
375
+ 'dropdown',
376
+ 'embed',
377
+ 'flyout',
378
+ 'form',
379
+ 'modal',
380
+ 'nag',
381
+ 'popup',
382
+ 'progress',
383
+ 'rating',
384
+ 'search',
385
+ 'shape',
386
+ 'sidebar',
387
+ 'slider',
388
+ 'state',
389
+ 'sticky',
390
+ 'tab',
391
+ 'toast',
392
+ 'transition',
393
+ 'visibility',
394
+ ],
395
+
396
+ siteNamespace: 'site',
397
+ namespaceStub: {
398
+ cache: {},
399
+ config: {},
400
+ sections: {},
401
+ section: {},
402
+ utilities: {},
403
+ },
404
+
405
+ };
406
+
407
+ // allows for selection of elements with data attributes
408
+ $.extend($.expr.pseudos, {
409
+ data: $.expr.createPseudo(function (dataName) {
410
+ return function (elem) {
411
+ return !!$.data(elem, dataName);
412
+ };
413
+ }),
414
+ });
415
+ })(jQuery, window, document);
@@ -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(b,p,v){"use strict";p=void 0!==p&&p.Math===Math?p:globalThis,b.fn.site=function(...e){let t=Date.now(),i=[];var n=e[0],o="string"==typeof n;const a=e.slice(1),c=b.isPlainObject(n)?b.extend(!0,{},b.site.settings,n):b.extend({},b.site.settings),s=c.namespace,u=c.error,r="module-"+s,l=b(v),d=this;let f=l.data(r),g;const m={initialize:function(){m.instantiate()},instantiate:function(){m.verbose("Storing instance of site",m),f=m,l.data(r,m)},normalize:function(){},fix:{consoleClear:function(){m.debug("Disabling programmatic console clearing"),p.console.clear=function(){}}},moduleExists:function(e){return void 0!==b.fn[e]&&void 0!==b.fn[e].settings},enabled:{modules:function(e=c.modules){const o=[];return b.each(e,function(e,n){m.moduleExists(n)&&o.push(n)}),o}},disabled:{modules:function(e=c.modules){const o=[];return b.each(e,function(e,n){m.moduleExists(n)||o.push(n)}),o}},change:{setting:function(i,s,e,r=!0){e="string"==typeof e?"all"===e?c.modules:[e]:e||c.modules,b.each(e,function(e,n){var o=!m.moduleExists(n)||(b.fn[n].settings.namespace||!1);let t;m.moduleExists(n)&&(m.verbose("Changing default setting",i,s,n),b.fn[n].settings[i]=s,r&&o&&0<(t=b(":data(module-"+o+")")).length&&(m.verbose("Modifying existing settings",t),t[n]("setting",i,s)))})},settings:function(t,e,i=!0){e="string"==typeof e?[e]:e||c.modules,b.each(e,function(e,n){let o;m.moduleExists(n)&&(m.verbose("Changing default setting",t,n),b.extend(!0,b.fn[n].settings,t),i&&s&&0<(o=b(":data(module-"+s+")")).length&&(m.verbose("Modifying existing settings",o),o[n]("setting",t)))})}},enable:{console:function(){m.console(!0)},debug:function(e=c.modules,n=!0){m.debug("Enabling debug for modules",e),m.change.setting("debug",!0,e,n)},verbose:function(e=c.modules,n=!0){m.debug("Enabling verbose debug for modules",e),m.change.setting("verbose",!0,e,n)}},disable:{console:function(){m.console(!1)},debug:function(e=c.modules,n=!0){m.debug("Disabling debug for modules",e),m.change.setting("debug",!1,e,n)},verbose:function(e=c.modules,n=!0){m.debug("Disabling verbose debug for modules",e),m.change.setting("verbose",!1,e,n)}},console:function(e){e?void 0===f.cache.console?m.error(u.console):(m.debug("Restoring console function"),p.console=f.cache.console):(m.debug("Disabling console function"),f.cache.console=p.console,p.console={clear:function(){},error:function(){},group:function(){},groupCollapsed:function(){},groupEnd:function(){},info:function(){},log:function(){},table:function(){},warn:function(){}})},destroy:function(){m.verbose("Destroying previous site for",l),l.removeData(r)},cache:{},setting:function(e,n){if(b.isPlainObject(e))b.extend(!0,c,e);else{if(void 0===n)return c[e];c[e]=n}},internal:function(e,n){if(b.isPlainObject(e))b.extend(!0,m,e);else{if(void 0===n)return m[e];m[e]=n}},debug:function(...e){c.debug&&(c.performance?m.performance.log(e):(m.debug=Function.prototype.bind.call(console.info,console,c.name+":"),m.debug.apply(console,e)))},verbose:function(...e){c.verbose&&c.debug&&(c.performance?m.performance.log(e):(m.verbose=Function.prototype.bind.call(console.info,console,c.name+":"),m.verbose.apply(console,e)))},error:function(...e){m.error=Function.prototype.bind.call(console.error,console,c.name+":"),m.error.apply(console,e)},performance:{log:function(e){var n,o;c.performance&&(o=(n=Date.now())-(t||n),t=n,i.push({Element:d,Name:e[0],Arguments:e.slice(1),"Execution Time":o})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(function(){m.performance.display()},500)},display:function(){var e=c.name+":";let o=0;t=!1,clearTimeout(m.performance.timer),b.each(i,function(e,n){o+=n["Execution Time"]}),e+=" "+o+"ms",0<i.length&&(console.groupCollapsed(e),console.table(i),console.groupEnd()),i=[]}},invoke:function(t,e=a,n=d){let i=f,s,r,o;var c;return"string"==typeof t&&void 0!==i&&(t=t.split(/[ .]/),s=t.length-1,b.each(t,function(e,n){var o=e!==s?n+t[e+1].charAt(0).toUpperCase()+t[e+1].slice(1):t;if(b.isPlainObject(i[o])&&e!==s)i=i[o];else{if(void 0!==i[o])return r=i[o],!1;{if(!b.isPlainObject(i[n])||e===s)return void 0!==i[n]?r=i[n]:m.error(u.method,t),!1;i=i[n]}}})),"function"==typeof(c=r)&&"number"!=typeof c.nodeType?o=r.apply(n,e):void 0!==r&&(o=r),Array.isArray(g)?g.push(o):void 0!==g?g=[g,o]:void 0!==o&&(g=o),r}};return o?(void 0===f&&m.initialize(),m.invoke(n)):(void 0!==f&&m.destroy(),m.initialize()),void 0!==g?g:this},b.site=b.fn.site,b.site.settings={name:"Site",namespace:"site",error:{console:"Console cannot be restored, most likely it was overwritten outside of module",method:"The method you called is not defined."},debug:!1,verbose:!1,performance:!0,modules:["accordion","api","calendar","checkbox","dimmer","dropdown","embed","flyout","form","modal","nag","popup","progress","rating","search","shape","sidebar","slider","state","sticky","tab","toast","transition","visibility"],siteNamespace:"site",namespaceStub:{cache:{},config:{},sections:{},section:{},utilities:{}}},b.extend(b.expr.pseudos,{data:b.expr.createPseudo(function(n){return function(e){return!!b.data(e,n)}})})}(jQuery,window,document);