@dcrackel/hematournamentui 1.0.7 → 1.0.8

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 (104) hide show
  1. package/.storybook/preview-head.html +3 -1
  2. package/dist/HemaTouranmentUI-lib.es.js +307 -253
  3. package/dist/HemaTouranmentUI-lib.umd.js +1 -1
  4. package/package/.eslintrc.js +18 -0
  5. package/package/.gitattributes +2 -0
  6. package/package/.prettierignore +1 -0
  7. package/package/.storybook/main.js +18 -0
  8. package/package/.storybook/mockRoutes.js +9 -0
  9. package/package/.storybook/preview-head.html +1 -0
  10. package/package/.storybook/preview.js +17 -0
  11. package/package/LICENSE +21 -0
  12. package/package/README.md +83 -0
  13. package/package/index.html +12 -0
  14. package/package/package.json +49 -0
  15. package/package/postcss.config.js +6 -0
  16. package/package/prettier.config.js +10 -0
  17. package/package/src/assets/default-tournament.png +0 -0
  18. package/package/src/index.js +15 -0
  19. package/package/src/main.js +2 -0
  20. package/package/src/mocks/fileMock.js +1 -0
  21. package/package/src/mocks/tournamentMock.js +34 -0
  22. package/package/src/stories/Configure.mdx +320 -0
  23. package/package/tailwind/output.css +1072 -0
  24. package/package/tailwind/tailwind.css +4 -0
  25. package/package/tailwind.config.js +25 -0
  26. package/package/vite.config.js +23 -0
  27. package/package.json +9 -2
  28. package/src/assets/select-tournament.png +0 -0
  29. package/src/stories/Atoms/Icon/BaseIcon.stories.js +54 -0
  30. package/src/stories/Atoms/Icon/BaseIcon.vue +47 -0
  31. package/src/stories/Atoms/Input/BaseInput.stories.js +28 -0
  32. package/src/stories/Atoms/Input/BaseInput.test.js +87 -0
  33. package/src/stories/Atoms/Input/BaseInput.vue +73 -0
  34. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +31 -0
  35. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +49 -0
  36. package/src/stories/Atoms/Tag/BaseTag.stories.js +29 -0
  37. package/src/stories/Atoms/Tag/BaseTag.test.js +42 -0
  38. package/src/stories/Atoms/Tag/BaseTag.vue +57 -0
  39. package/src/stories/Atoms/Text/BaseText.stories.js +77 -0
  40. package/src/stories/Atoms/Text/BaseText.test.js +172 -0
  41. package/src/stories/Atoms/Text/BaseText.vue +170 -0
  42. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +41 -0
  43. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +31 -0
  44. package/src/stories/Molecules/Button/BaseButton.stories.js +76 -0
  45. package/src/stories/Molecules/Button/BaseButton.test.js +147 -0
  46. package/src/stories/Molecules/Button/BaseButton.vue +125 -0
  47. package/src/stories/Molecules/Cards/Detail/TournamentCardDetail.stories.js +33 -0
  48. package/src/stories/Molecules/Cards/Detail/TournamentCardDetail.vue +38 -0
  49. package/src/stories/Molecules/Cards/Header/TournamentCardHeader.stories.js +48 -0
  50. package/src/stories/Molecules/Cards/Header/TournamentCardHeader.vue +40 -0
  51. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +36 -0
  52. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +49 -0
  53. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +32 -0
  54. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +46 -0
  55. package/src/stories/Organisms/AddressAutocomplete/AddressAutocomplete.stories.js +25 -0
  56. package/src/stories/Organisms/AddressAutocomplete/AddressAutocomplete.vue +51 -0
  57. package/src/stories/Organisms/DatePicker/DatePicker.stories.js +25 -0
  58. package/src/stories/Organisms/DatePicker/DatePicker.vue +62 -0
  59. package/src/stories/Organisms/DropDown/DropDownMenu.stories.js +34 -0
  60. package/src/stories/Organisms/DropDown/DropDownMenu.vue +51 -0
  61. package/src/stories/Organisms/Grid/GridContainer.stories.js +47 -0
  62. package/src/stories/Organisms/Grid/GridContainer.vue +108 -0
  63. package/src/stories/Organisms/ImageCropper/ImageCropper.stories.js +28 -0
  64. package/src/stories/Organisms/ImageCropper/ImageCropper.vue +86 -0
  65. package/src/stories/Organisms/TextBoxEditor/TextBoxEditor.stories.js +28 -0
  66. package/src/stories/Organisms/TextBoxEditor/TextBoxEditor.vue +97 -0
  67. package/src/stories/Organisms/TournamentCard/TournamentCard.stories.js +37 -0
  68. package/src/stories/Organisms/TournamentCard/TournamentCard.vue +35 -0
  69. package/src/stories/Templates/Forms/AddTournamentPageOne/AddTournamentPageOne.stories.js +25 -0
  70. package/src/stories/Templates/Forms/AddTournamentPageOne/AddTournamentPageOne.vue +136 -0
  71. package/src/stories/Templates/Menu/Admin/AdminLeftMenu.stories.js +28 -0
  72. package/src/stories/Templates/Menu/Admin/AdminLeftMenu.vue +57 -0
  73. package/tailwind/output.css +147 -7
  74. package/tailwind.config.js +28 -3
  75. /package/{src → package/src}/stories/Base/Button/BaseButton.stories.js +0 -0
  76. /package/{src → package/src}/stories/Base/Button/BaseButton.test.js +0 -0
  77. /package/{src → package/src}/stories/Base/Button/BaseButton.vue +0 -0
  78. /package/{src → package/src}/stories/Base/Input/BaseInput.stories.js +0 -0
  79. /package/{src → package/src}/stories/Base/Input/BaseInput.test.js +0 -0
  80. /package/{src → package/src}/stories/Base/Input/BaseInput.vue +0 -0
  81. /package/{src → package/src}/stories/Base/Tag/BaseTag.stories.js +0 -0
  82. /package/{src → package/src}/stories/Base/Tag/BaseTag.test.js +0 -0
  83. /package/{src → package/src}/stories/Base/Tag/BaseTag.vue +0 -0
  84. /package/{src → package/src}/stories/Base/Text/BaseText.stories.js +0 -0
  85. /package/{src → package/src}/stories/Base/Text/BaseText.test.js +0 -0
  86. /package/{src → package/src}/stories/Base/Text/BaseText.vue +0 -0
  87. /package/{src → package/src}/stories/Breadcrumb/Admin/Breadcrumb.stories.js +0 -0
  88. /package/{src → package/src}/stories/Breadcrumb/Admin/Breadcrumb.vue +0 -0
  89. /package/{src → package/src}/stories/Cards/TournamentCard/Detail/TournamentCardDetail.stories.js +0 -0
  90. /package/{src → package/src}/stories/Cards/TournamentCard/Detail/TournamentCardDetail.vue +0 -0
  91. /package/{src → package/src}/stories/Cards/TournamentCard/Header/TournamentCardHeader.stories.js +0 -0
  92. /package/{src → package/src}/stories/Cards/TournamentCard/Header/TournamentCardHeader.vue +0 -0
  93. /package/{src → package/src}/stories/Cards/TournamentCard/TournamentCard.stories.js +0 -0
  94. /package/{src → package/src}/stories/Cards/TournamentCard/TournamentCard.vue +0 -0
  95. /package/{src → package/src}/stories/Containers/Grid/GridContainer.stories.js +0 -0
  96. /package/{src → package/src}/stories/Containers/Grid/GridContainer.vue +0 -0
  97. /package/{src → package/src}/stories/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +0 -0
  98. /package/{src → package/src}/stories/Filters/FilterAndSortBar/FilterAndSortBar.vue +0 -0
  99. /package/{src → package/src}/stories/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +0 -0
  100. /package/{src → package/src}/stories/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +0 -0
  101. /package/{src → package/src}/stories/Menu/Admin/AdminLeftMenu.stories.js +0 -0
  102. /package/{src → package/src}/stories/Menu/Admin/AdminLeftMenu.vue +0 -0
  103. /package/{src → package/src}/stories/Menu/DropDown/DropDownMenu.stories.js +0 -0
  104. /package/{src → package/src}/stories/Menu/DropDown/DropDownMenu.vue +0 -0
@@ -1 +1 @@
1
- (function(i,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(i=typeof globalThis<"u"?globalThis:i||self,e(i.HemaTournamentUI={},i.Vue))})(this,function(i,e){"use strict";const d=(t,r)=>{const n=t.__vccOpts||t;for(const[o,c]of r)n[o]=c;return n},k={name:"BaseInput",props:{placeholder:{type:String,default:""},value:{type:String,default:""}},data(){return{internalValue:this.value,timeout:null}},watch:{value(t){this.internalValue=t}},methods:{onInput(){clearTimeout(this.timeout),this.timeout=setTimeout(()=>{console.log("this.internalValue",this.internalValue),this.$emit("update:value",this.internalValue)},300)}}},C=["placeholder"];function w(t,r,n,o,c,a){return e.withDirectives((e.openBlock(),e.createElementBlock("input",{class:"appearance-none focus:outline-none w-full text-sm",placeholder:n.placeholder,"onUpdate:modelValue":r[0]||(r[0]=l=>c.internalValue=l),onInput:r[1]||(r[1]=(...l)=>a.onInput&&a.onInput(...l))},null,40,C)),[[e.vModelText,c.internalValue]])}const B=d(k,[["render",w]]),_={name:"BaseText",props:{text:{type:String,required:!0,default:""},weight:{type:String,default:"normal",validator:function(t){return["light","normal","medium","semi-bold","bold","extra-bold"].indexOf(t)!==-1}},size:{type:String,default:"small",validator:function(t){return["xs","sm","md","lg","xl","2xl","3xl"].indexOf(t)!==-1}},color:{type:String,default:"primary",validator:function(t){return["neutral","quaternary","tertiary","secondary","primary","bright","primaryHighlight"].indexOf(t)!==-1}},hoverColor:{type:String,default:"none",validator:function(t){return["primary","secondary","tertiary","quaternary","neutral","bright","none"].indexOf(t)!==-1}}},setup(t){return t=e.reactive(t),{classes:e.computed(()=>{let r="inline-block font-sans";switch(t.color){case"neutral":r+=" text-neutral";break;case"tertiary":r+=" text-tertiary";break;case"secondary":r+=" text-secondary";break;case"quaternary":r+=" text-quaternary";break;case"primary":r+=" text-primary";break;case"primaryHighlight":r+=" text-primaryHighlight";break;case"bright":r+=" text-bright";break}switch(t.hoverColor){case"neutral":r+=" hover:text-neutral";break;case"tertiary":r+=" hover:text-tertiary";break;case"secondary":r+=" hover:text-secondary";break;case"quaternary":r+=" hover:text-quaternary";break;case"primary":r+=" hover:text-primary";break;case"bright":r+=" hover:text-bright";break;case"none":r+="";break}switch(t.weight){case"light":r+=" font-light";break;case"normal":r+=" font-normal";break;case"medium":r+=" font-medium";break;case"semi-bold":r+=" font-semibold";break;case"bold":r+=" font-bold";break;case"extra-bold":r+=" font-extrabold";break}switch(t.size){case"xs":r+=" text-xs";break;case"sm":r+=" text-sm";break;case"md":r+=" text-md";break;case"lg":r+=" text-lg";break;case"xl":r+=" text-xl";break;case"2xl":r+=" text-2xl";break;case"3xl":r+=" text-3xl";break;default:r+=" text-sm";break}return r})}}};function E(t,r,n,o,c,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(o.classes)},e.toDisplayString(n.text),3)}const g=d(_,[["render",E]]),I={name:"base-button",components:{BaseText:g},props:{label:{type:String,required:!0},iconClass:{type:String,default:null},size:{type:String,validator:function(t){return["xs","sm","md","lg","xl"].indexOf(t)!==-1},default:"sm"},type:{type:String,default:"primary",validator:function(t){return["primary","secondary","tertiary","bright","admin","adminSecondary"].indexOf(t)!==-1}},selected:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:r}){return t=e.reactive(t),{textColor:e.computed(()=>{switch(t.type){case"primary":return"primary";case"secondary":return"secondary";case"tertiary":return"tertiary";case"bright":return"bright";case"admin":return"neutral";case"adminSecondary":return"neutral"}}),classes:e.computed(()=>{let n="px-2.5 mx-1 inline-flex ";switch(t.type){case"primary":n+=" py-0.5 items-center gap-2.5 rounded-md text-center shadow border border-dropdownSelect justify-center hover:bg-tertiary",t.selected?n+=" bg-dropdownSelect":n+=" bg-neutral";break;case"secondary":n+=" py-0.5 items-center gap-2.5 rounded-md text-center shadow justify-center hover:bg-primary text-neutral",t.selected?n+=" bg-dropdownSelect":n+=" bg-secondary";break;case"tertiary":n+=" py-0.5 items-center gap-2.5 rounded-md text-center justify-center hover:bg-primary text-primary",t.selected?n+=" bg-primary":n+=" bg-tertiary";break;case"bright":n+=" py-0.5 items-center gap-2.5 rounded-md text-center justify-center hover:bg-primary text-neutral",t.selected?n+=" bg-primary":n+=" bg-bright";break;case"admin":n+=" py-2 items-center rounded-md gap-2.5 text-center hover:bg-primary my-1 text-neutral hover:bg-primaryHighlight",t.selected,n+=" bg-primary";break;case"adminSecondary":n+=" py-0.5 items-center gap-2.5 text-center my-1 pb-0.5 border-b border-secondary hover:border-b hover:border-neutral w-11/12 text-neutral",t.selected?n+=" bg-primary":n+=" bg-tertiary";break}switch(t.size){case"xs":n+=" text-xs";break;case"sm":n+=" text-sm";break;case"md":n+=" text-md";break;case"lg":n+=" text-lg";break;case"xl":n+=" text-xl";break}return n}),onClick(){r("click")}}}};function Q(t,r,n,o,c,a){const l=e.resolveComponent("BaseText");return e.openBlock(),e.createElementBlock("button",{"data-testid":"base-button",class:e.normalizeClass(o.classes),type:"button",onClick:r[0]||(r[0]=(...s)=>o.onClick&&o.onClick(...s))},[n.iconClass?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([n.iconClass,"mr-2 hover:text-highlightedClass"])},null,2)):e.createCommentVNode("",!0),e.createVNode(l,{"data-testid":"base-text",color:o.textColor,size:n.size,text:n.label,weight:"normal"},null,8,["color","size","text"])],2)}const A=d(I,[["render",Q]]),D={name:"base-tag",props:{label:{type:String,required:!0},backgroundColor:{type:String,validator:function(t){return["primary","secondary","tertiary","neutral","bright"].indexOf(t)!==-1}}},setup(t){return t=e.reactive(t),{classes:e.computed(()=>{let r="cursor-pointer inline-block py-1 px-3 my-2 ml-3 text-xs font-normal rounded-full text-neutral";switch(t.backgroundColor){case"primary":r+=" bg-primary";break;case"secondary":r+=" bg-secondary";break;case"tertiary":r+=" bg-tertiary";break;case"neutral":r+=" bg-neutral";break;case"bright":r+=" bg-bright";break;default:r+=" bg-primary";break}return r})}}};function V(t,r,n,o,c,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(o.classes)},e.toDisplayString(n.label),3)}const p=d(D,[["render",V]]),h="data:image/png;base64,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",S={name:"tournament-card-header",components:{BaseTag:p},props:{artwork:{type:String,required:!0,default:h},tags:{type:Array,default:()=>[]}},computed:{backgroundStyle(){return`background-image: url('${this.artwork||h}');`}}},Y={class:"rounded-t-xl w-full"},M={class:"flex flex-row"};function G(t,r,n,o,c,a){const l=e.resolveComponent("BaseTag");return e.openBlock(),e.createElementBlock("div",Y,[e.createElementVNode("div",{style:e.normalizeStyle(a.backgroundStyle),class:"h-36 w-full flex flex-col justify-end rounded-t-xl bg-cover bg-no-repeat bg-center"},[e.createElementVNode("div",M,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tags,s=>(e.openBlock(),e.createBlock(l,{key:s,label:s},null,8,["label"]))),128))])],4)])}const u=d(S,[["render",G]]),U={name:"tournament-card-details",components:{BaseButton:A,BaseText:g},props:{detail:{type:Object,required:!0,default:()=>({name:"",date:"",closes:"",location:""})}}},q={class:"flex flex-col w-full pt-4 pb-3 px-3"},T={class:"mt-4 flex flex-col"},N={class:"flex flex-row w-full justify-end"};function $(t,r,n,o,c,a){const l=e.resolveComponent("BaseText"),s=e.resolveComponent("BaseButton");return e.openBlock(),e.createElementBlock("div",q,[e.createVNode(l,{text:n.detail.name,color:"primary",size:"xl",weight:"semi-bold"},null,8,["text"]),e.createVNode(l,{text:n.detail.location,color:"primary",size:"sm",weight:"normal"},null,8,["text"]),e.createElementVNode("div",T,[e.createVNode(l,{text:`${n.detail.date}`,color:"primaryHighlight",size:"sm",weight:"light"},null,8,["text"]),e.createVNode(l,{text:`${n.detail.closes}`,color:"primaryHighlight",size:"sm",weight:"light"},null,8,["text"])]),e.createElementVNode("div",N,[e.createVNode(s,{label:"Edit",class:"mt-2",primary:""})])])}const b=d(U,[["render",$]]),F={name:"TournamentCard",components:{TournamentHeader:u,TournamentDetail:b},props:{detail:{type:Object,required:!0,default:()=>({artwork:"",tags:[],name:"",description:"",date:"",closes:"",location:""})}}},W={class:"rounded-xl w-72 shadow"};function K(t,r,n,o,c,a){const l=e.resolveComponent("TournamentHeader"),s=e.resolveComponent("TournamentDetail");return e.openBlock(),e.createElementBlock("div",W,[e.createVNode(l,{artwork:n.detail.artwork,tags:n.detail.tags},null,8,["artwork","tags"]),e.createVNode(s,{detail:n.detail},null,8,["detail"])])}const f=d(F,[["render",K]]),H={name:"DropDownMenu",components:{BaseText:g},props:{label:{type:String},items:{type:Array,validator:t=>t.every(r=>typeof r.text=="string")},selectedItem:{type:Object,default:()=>({text:""}),validator:t=>typeof t.text=="string"}},data:()=>({isDropDownOpen:!1}),methods:{handleClick(t){this.isDropDownOpen=!1,this.$emit("update:selectedItem",t)},handleDropDown(){this.isDropDownOpen=!this.isDropDownOpen}}},P={class:"flex flex-row"},j=e.createElementVNode("i",{class:"fa-solid fa-chevron-down text-xs"},null,-1),J={key:0,class:"flex flex-col w-32 shadow mt-2 z-10 rounded-xl py-1 absolute bg-neutral"},z=["onClick"];function L(t,r,n,o,c,a){const l=e.resolveComponent("BaseText");return e.openBlock(),e.createElementBlock("div",P,[e.createElementVNode("span",null,[e.createElementVNode("div",{class:"z-10 rounded-lg shadow px-2 py-2 w-32 flex flex-row justify-between",onClick:r[0]||(r[0]=s=>a.handleDropDown())},[e.createVNode(l,{text:n.label,color:"quaternary",size:"sm",weight:"normal"},null,8,["text"]),e.createVNode(l,{text:n.selectedItem.text,color:"secondary",size:"sm",weight:"normal"},null,8,["text"]),j]),t.isDropDownOpen?(e.openBlock(),e.createElementBlock("div",J,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,s=>(e.openBlock(),e.createElementBlock("a",{key:s.id,onClick:m=>a.handleClick(s),class:"hover:bg-dropdownSelect py-1 px-2 border-b border-dropdownSelect last:border-0"},[e.createVNode(l,{text:s.text,color:"primary",size:"xs",weight:"normal"},null,8,["text"])],8,z))),128))])):e.createCommentVNode("",!0)])])}const y=d(H,[["render",L]]),O={name:"FilterAndSortBar",components:{DropDownMenu:y,BaseInput:B},data(){return{filterText:""}},props:{label:{type:String},items:{type:Array,default:()=>[]},selectedItem:null},methods:{handleFilter(t){this.$emit("filterbar",t)},handleSelectedItem(t){this.$emit("sort",t),console.log("handleSelectedItem",t)}}},Z={class:"flex flex-row w-full justify-between"},R={class:"rounded-lg shadow px-2 py-1 w-full flex flex-row mt-0.5 mr-4"},X=e.createElementVNode("i",{class:"fa-solid fa-magnifying-glass text-primaryHighlight w-6 mt-1"},null,-1);function v(t,r,n,o,c,a){const l=e.resolveComponent("BaseInput"),s=e.resolveComponent("DropDownMenu");return e.openBlock(),e.createElementBlock("section",Z,[e.createElementVNode("div",R,[X,e.createVNode(l,{placeholder:"Search on Name, Location, or Date",class:"text-quaternary",value:c.filterText,"onUpdate:value":a.handleFilter},null,8,["value","onUpdate:value"])]),e.createElementVNode("div",null,[e.createVNode(s,{label:n.label,items:n.items,selectedItem:n.selectedItem,"onUpdate:selectedItem":a.handleSelectedItem},null,8,["label","items","selectedItem","onUpdate:selectedItem"])])])}const x=d(O,[["render",v]]),ee={name:"FilterUpcomingPast",components:{BaseText:g,BaseButton:A,DropDownMenu:y,BaseInput:B},props:{selected:{type:String,default:"All"}},data(){return{localSelected:this.selected}},methods:{handleTimeFrame(t){this.$emit("timeFrame",t),this.localSelected=t}}},te={class:"flex flex-row w-full justify-between"},re={class:"rounded-lg w-3/4"},ne={class:"flex flex-row h-8 w-1/4 justify-end"};function ae(t,r,n,o,c,a){const l=e.resolveComponent("BaseText"),s=e.resolveComponent("BaseButton");return e.openBlock(),e.createElementBlock("section",te,[e.createElementVNode("div",re,[e.createVNode(l,{text:"Tournament",color:"primary",size:"2xl",weight:"normal"})]),e.createElementVNode("div",ne,[e.createVNode(s,{label:"All",color:"primary",size:"sm",selected:c.localSelected==="All",onClick:r[0]||(r[0]=m=>a.handleTimeFrame("ALL"))},null,8,["selected"]),e.createVNode(s,{label:"Upcoming",color:"primary",size:"sm",selected:c.localSelected==="Upcoming",onClick:r[1]||(r[1]=m=>a.handleTimeFrame("Upcoming"))},null,8,["selected"]),e.createVNode(s,{label:"Past",color:"primary",size:"sm",selected:c.localSelected==="Past",onClick:r[2]||(r[2]=m=>a.handleTimeFrame("Past"))},null,8,["selected"])])])}const le={name:"GridContainer",components:{FilterAndSortBar:x,BaseText:g,TournamentCard:f,FilterUpcomingPast:d(ee,[["render",ae]])},props:{items:{type:Array,default:()=>[]},component:{type:String,required:!0},label:{type:String},dropdownItems:{type:Array,default:()=>[]},selectedItem:null},data(){return{filterOn:"",sortCriteria:"Date",selectedTimeFrame:"All"}},computed:{filteredItems(){let t=this.items;if(this.filterOn.trim()){const n=this.filterOn.toLowerCase();t=t.filter(o=>Object.values(o).some(c=>typeof c=="string"&&c.toLowerCase().includes(n)))}const r=new Date;switch(r.setHours(0,0,0,0),this.selectedTimeFrame){case"Upcoming":t=t.filter(n=>new Date(n.date)>=r);break;case"Past":t=t.filter(n=>new Date(n.date)<r);break}switch(this.sortCriteria){case"Date":t=[...t].sort((n,o)=>new Date(n.date)-new Date(o.date));break;case"Name":t=[...t].sort((n,o)=>n.name.localeCompare(o.name));break;case"Location":t=[...t].sort((n,o)=>n.location.localeCompare(o.location));break}return t}},methods:{handleFilter(t){this.filterOn=t},handleSort(t){this.sortCriteria=t.text},handleTimeFrameChange(t){this.selectedTimeFrame=t}}},oe={class:"border border-dropdownSelect rounded-lg p-9 bg-neutral"},se={class:"my-4"},ce={class:"my-4"},ie={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 3xl:grid-cols-4 gap-6 w-full"};function de(t,r,n,o,c,a){const l=e.resolveComponent("FilterUpcomingPast"),s=e.resolveComponent("FilterAndSortBar");return e.openBlock(),e.createElementBlock("div",oe,[e.createElementVNode("div",se,[e.createVNode(l,{selected:c.selectedTimeFrame,onTimeFrame:a.handleTimeFrameChange},null,8,["selected","onTimeFrame"])]),e.createElementVNode("div",ce,[e.createVNode(s,{items:n.dropdownItems,label:n.label,selectedItem:n.selectedItem,onFilterbar:a.handleFilter,onSort:a.handleSort},null,8,["items","label","selectedItem","onFilterbar","onSort"])]),e.createElementVNode("div",ie,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.filteredItems,m=>(e.openBlock(),e.createElementBlock("div",{key:m.id},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.component),{detail:m},null,8,["detail"]))]))),128))])])}const me=d(le,[["render",de]]),ge={name:"AdminLeftMenu",components:{BaseButton:A},props:{buttons:{type:Array,default:()=>[]}},methods:{handleButtonClick(t){this.$emit("button-click",t)}}},Ae={class:"bg-secondary w-64 h-screen flex flex-col justify-between"},Be=e.createElementVNode("section",{class:"h-28 border-b border-neutral"},[e.createElementVNode("div",{class:"flex flex-col justify-center h-28"},[e.createElementVNode("div",{class:"ml-8"},[e.createElementVNode("img",{class:"w-32",src:"https://ferrotas.com/assets/ferrotas-white-small-720502db.png",alt:"logo"})])])],-1),ye={class:"flex flex-col p-2 h-full"},pe={class:"flex flex-col justify-end p-2 flex-grow"},he={class:"border-t border-neutral pt-2"};function ue(t,r,n,o,c,a){const l=e.resolveComponent("BaseButton");return e.openBlock(),e.createElementBlock("div",Ae,[Be,e.createElementVNode("section",ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.buttons,s=>(e.openBlock(),e.createBlock(l,{label:s.label,iconClass:"fa-solid fa-trophy text-white",type:"admin",hover:"admin",onClick:m=>a.handleButtonClick(s)},null,8,["label","onClick"]))),256))]),e.createElementVNode("section",pe,[e.createElementVNode("div",he,[e.createVNode(l,{iconClass:"fa-solid fa-circle-user text-textSecondary",label:"Account",type:"adminSecondary",onClick:r[0]||(r[0]=s=>a.handleButtonClick(t.button))}),e.createVNode(l,{iconClass:"fa-solid fa-right-to-bracket fa-rotate-180 text-textSecondary",label:"Log Out",type:"adminSecondary",onClick:r[1]||(r[1]=s=>a.handleButtonClick(t.button))})])])])}const be=d(ge,[["render",ue]]);i.AdminLeftMenu=be,i.BaseButton=A,i.BaseInput=B,i.BaseTag=p,i.BaseText=g,i.DropDownMenu=y,i.FilterAndSortBar=x,i.GridContainer=me,i.TournamentCard=f,i.TournamentCardDetails=b,i.TournamentCardHeader=u,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
1
+ (function(i,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(i=typeof globalThis<"u"?globalThis:i||self,e(i.HemaTournamentUI={},i.Vue))})(this,function(i,e){"use strict";const d=(t,r)=>{const n=t.__vccOpts||t;for(const[l,s]of r)n[l]=s;return n},C={name:"BaseInput",props:{placeholder:{type:String,default:""},value:{type:String,default:""},type:{type:String,default:"borderless",validator:function(t){return["formInput","borderless"].indexOf(t)!==-1}}},setup(t,{emit:r}){const n=e.ref(t.value),l=e.ref(null);e.watch(()=>t.value,o=>{n.value=o});const s=e.computed(()=>{let o="appearance-none focus:outline-none";switch(t.type){case"borderless":o+=" w-full text-sm";break;case"formInput":o+=" border border-dropdownSelect rounded-lg text-secondary placeholder:text-xs text-sm p-2 w-full";break}return o});return{internalValue:n,baseClasses:s,onInput:()=>{clearTimeout(l.value),l.value=setTimeout(()=>{r("update:value",n.value)},300)}}}},k=["placeholder"];function w(t,r,n,l,s,a){return e.withDirectives((e.openBlock(),e.createElementBlock("input",{class:e.normalizeClass(l.baseClasses),placeholder:n.placeholder,"onUpdate:modelValue":r[0]||(r[0]=o=>l.internalValue=o),onInput:r[1]||(r[1]=(...o)=>l.onInput&&l.onInput(...o))},null,42,k)),[[e.vModelText,l.internalValue]])}const A=d(C,[["render",w]]),_={name:"BaseText",props:{text:{type:String,required:!0,default:""},weight:{type:String,default:"normal",validator:function(t){return["light","normal","medium","semi-bold","bold","extra-bold"].indexOf(t)!==-1}},size:{type:String,default:"small",validator:function(t){return["xs","sm","md","lg","xl","2xl","3xl"].indexOf(t)!==-1}},color:{type:String,default:"primary",validator:function(t){return["neutral","quaternary","tertiary","secondary","primary","bright","primaryHighlight"].indexOf(t)!==-1}},hoverColor:{type:String,default:"none",validator:function(t){return["primary","secondary","tertiary","quaternary","neutral","bright","none"].indexOf(t)!==-1}}},setup(t){return{classes:e.computed(()=>{let r="inline-block font-sans";switch(console.log(`props.color in BaseText: ${t.color}`),t.color){case"neutral":r+=" text-neutral";break;case"tertiary":r+=" text-tertiary";break;case"secondary":r+=" text-secondary";break;case"quaternary":r+=" text-quaternary";break;case"primary":r+=" text-primary";break;case"primaryHighlight":r+=" text-primaryHighlight";break;case"bright":r+=" text-bright";break}switch(t.hoverColor){case"neutral":r+=" hover:text-neutral";break;case"tertiary":r+=" hover:text-tertiary";break;case"secondary":r+=" hover:text-secondary";break;case"quaternary":r+=" hover:text-quaternary";break;case"primary":r+=" hover:text-primary";break;case"bright":r+=" hover:text-bright";break;case"none":r+="";break}switch(t.weight){case"light":r+=" font-light";break;case"normal":r+=" font-normal";break;case"medium":r+=" font-medium";break;case"semi-bold":r+=" font-semibold";break;case"bold":r+=" font-bold";break;case"extra-bold":r+=" font-extrabold";break}switch(t.size){case"xs":r+=" text-xs";break;case"sm":r+=" text-sm";break;case"md":r+=" text-md";break;case"lg":r+=" text-lg";break;case"xl":r+=" text-xl";break;case"2xl":r+=" text-2xl";break;case"3xl":r+=" text-3xl";break;default:r+=" text-sm";break}return r})}}};function I(t,r,n,l,s,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(l.classes)},e.toDisplayString(n.text),3)}const g=d(_,[["render",I]]),E={name:"BaseIcon",props:{iconName:{type:String,required:!0},style:{type:String,default:"fa-solid",validator:function(t){return["fa-solid","fa-regular","fa-solid","fa-light","fa-thing"].indexOf(t)!==-1}},size:{type:String,validator:function(t){return["xs","sm","md","lg","xl","2xl","3xl","4xl"].indexOf(t)!==-1},default:"sm"},color:{type:String,default:"primary"}},computed:{computedIconClass(){return[this.style,this.iconName,`text-${this.size}`,this.colorClass]},colorClass(){return`text-${this.color}`}}};function Q(t,r,n,l,s,a){return e.openBlock(),e.createElementBlock("i",{class:e.normalizeClass(a.computedIconClass)},null,2)}const D={name:"base-button",components:{BaseText:g,BaseIcon:d(E,[["render",Q]])},props:{label:{type:String,required:!0},iconName:{type:String,default:""},iconStyle:{type:String,default:"fa-solid",validator:t=>["fa-solid","fa-regular","fa-light","fa-thing"].includes(t)},size:{type:String,default:"sm",validator:t=>["xs","sm","md","lg","xl","2xl","3xl","4xl"].includes(t)},type:{type:String,default:"primary",validator:t=>["primary","secondary","tertiary","bright","admin","adminSecondary","continue","iconOnly","editor"].includes(t)},selected:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:r}){const n={primary:"px-2.5 mx-1 py-0.5 items-center gap-2.5 rounded-md text-center shadow border border-dropdownSelect justify-center hover:bg-tertiary "+(t.selected?"bg-dropdownSelect":"bg-neutral"),secondary:"px-2.5 mx-1 py-0.5 items-center gap-2.5 rounded-md text-center shadow justify-center hover:bg-primary text-neutral "+(t.selected?"bg-dropdownSelect":"bg-secondary"),tertiary:"px-2.5 mx-1 py-0.5 items-center gap-2.5 rounded-md text-center justify-center hover:bg-primary text-primary "+(t.selected?"bg-primary":"bg-tertiary"),bright:"px-2.5 mx-1 py-0.5 items-center gap-2.5 rounded-md text-center justify-center hover:bg-primary text-neutral "+(t.selected?"bg-primary":"bg-bright"),admin:"px-2.5 mx-1 py-2 items-center rounded-md gap-2.5 text-center hover:bg-primary my-1 text-neutral hover:bg-primaryHighlight "+(t.selected,"bg-primary"),adminSecondary:"px-2.5 mx-1 py-0.5 items-center gap-2.5 text-center my-1 pb-0.5 border-b border-secondary hover:border-b hover:border-neutral w-11/12 text-neutral "+(t.selected,"bg-primary"),continue:"px-2.5 mx-1 items-center gap-2.5 text-center my-1 p-3 border-b border-secondary hover:border-b hover:border-neutral w-full rounded-lg flex flex-row justify-center "+(t.selected?"bg-secondary":"bg-primary"),iconOnly:"py-0.5 items-center rounded-md text-center shadow border border-dropdownSelect justify-center hover:bg-tertiary",editor:"px-1 items-center rounded-md text-center justify-center hover:bg-tertiary"},l={xs:"text-xs",sm:"text-sm",md:"text-md",lg:"text-lg",xl:"text-xl","2xl":"text-2xl","3xl":"text-3xl","4xl":"text-4xl"};return{textColor:e.computed(()=>({primary:"primary",secondary:"secondary",tertiary:"tertiary",bright:"bright",admin:"neutral",adminSecondary:"neutral",continue:"neutral",editor:t.selected?"bright":"quaternary"})[t.type]||"primary"),classes:e.computed(()=>{let s="inline-flex",a=n[t.type]||"";if(t.selected)switch(t.type){case"primary":a=a.replace("bg-neutral","bg-dropdownSelect");break;case"secondary":a=a.replace("bg-secondary","bg-dropdownSelect");break}let o=l[t.size]||"";return`${s} ${a} ${o}`}),onClick(){r("click")}}}};function S(t,r,n,l,s,a){const o=e.resolveComponent("BaseIcon"),c=e.resolveComponent("BaseText");return e.openBlock(),e.createElementBlock("button",{"data-testid":"base-button",class:e.normalizeClass(l.classes),type:"button",onClick:r[0]||(r[0]=(...m)=>l.onClick&&l.onClick(...m))},[n.iconName?(e.openBlock(),e.createBlock(o,{key:0,"data-testid":"base-icon","icon-name":n.iconName,style:e.normalizeStyle(n.iconStyle),color:l.textColor,size:n.size},null,8,["icon-name","style","color","size"])):e.createCommentVNode("",!0),e.createVNode(c,{"data-testid":"base-text",color:l.textColor,size:n.size,text:n.label,weight:"normal"},null,8,["color","size","text"])],2)}const y=d(D,[["render",S]]),V={name:"base-tag",props:{label:{type:String,required:!0},backgroundColor:{type:String,validator:function(t){return["primary","secondary","tertiary","neutral","bright"].indexOf(t)!==-1}}},setup(t){return t=e.reactive(t),{classes:e.computed(()=>{let r="cursor-pointer inline-block py-1 px-3 my-2 ml-3 text-xs font-normal rounded-full text-neutral";switch(t.backgroundColor){case"primary":r+=" bg-primary";break;case"secondary":r+=" bg-secondary";break;case"tertiary":r+=" bg-tertiary";break;case"neutral":r+=" bg-neutral";break;case"bright":r+=" bg-bright";break;default:r+=" bg-primary";break}return r})}}};function M(t,r,n,l,s,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(l.classes)},e.toDisplayString(n.label),3)}const B=d(V,[["render",M]]),x="data:image/png;base64,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",Y={name:"tournament-card-header",components:{BaseTag:B},props:{artwork:{type:String,required:!0,default:x},tags:{type:Array,default:()=>[]}},computed:{backgroundStyle(){return`background-image: url('${this.artwork||x}');`}}},G={class:"rounded-t-xl w-full"},U={class:"flex flex-row"};function q(t,r,n,l,s,a){const o=e.resolveComponent("BaseTag");return e.openBlock(),e.createElementBlock("div",G,[e.createElementVNode("div",{style:e.normalizeStyle(a.backgroundStyle),class:"h-36 w-full flex flex-col justify-end rounded-t-xl bg-cover bg-no-repeat bg-center"},[e.createElementVNode("div",U,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tags,c=>(e.openBlock(),e.createBlock(o,{key:c,label:c},null,8,["label"]))),128))])],4)])}const h=d(Y,[["render",q]]),N={name:"tournament-card-details",components:{BaseButton:y,BaseText:g},props:{detail:{type:Object,required:!0,default:()=>({name:"",date:"",closes:"",location:""})}}},T={class:"flex flex-col w-full pt-4 pb-3 px-3"},$={class:"mt-4 flex flex-col"},F={class:"flex flex-row w-full justify-end"};function W(t,r,n,l,s,a){const o=e.resolveComponent("BaseText"),c=e.resolveComponent("BaseButton");return e.openBlock(),e.createElementBlock("div",T,[e.createVNode(o,{text:n.detail.name,color:"primary",size:"xl",weight:"semi-bold"},null,8,["text"]),e.createVNode(o,{text:n.detail.location,color:"primary",size:"sm",weight:"normal"},null,8,["text"]),e.createElementVNode("div",$,[e.createVNode(o,{text:`${n.detail.date}`,color:"primaryHighlight",size:"sm",weight:"light"},null,8,["text"]),e.createVNode(o,{text:`${n.detail.closes}`,color:"primaryHighlight",size:"sm",weight:"light"},null,8,["text"])]),e.createElementVNode("div",F,[e.createVNode(c,{label:"Edit",class:"mt-2",primary:""})])])}const u=d(N,[["render",W]]),K={name:"TournamentCard",components:{TournamentHeader:h,TournamentDetail:u},props:{detail:{type:Object,required:!0,default:()=>({artwork:"",tags:[],name:"",description:"",date:"",closes:"",location:""})}}},H={class:"rounded-xl w-72 shadow"};function z(t,r,n,l,s,a){const o=e.resolveComponent("TournamentHeader"),c=e.resolveComponent("TournamentDetail");return e.openBlock(),e.createElementBlock("div",H,[e.createVNode(o,{artwork:n.detail.artwork,tags:n.detail.tags},null,8,["artwork","tags"]),e.createVNode(c,{detail:n.detail},null,8,["detail"])])}const f=d(K,[["render",z]]),j={name:"DropDownMenu",components:{BaseText:g},props:{label:{type:String},items:{type:Array,validator:t=>t.every(r=>typeof r.text=="string")},selectedItem:{type:Object,default:()=>({text:""}),validator:t=>typeof t.text=="string"}},data:()=>({isDropDownOpen:!1}),methods:{handleClick(t){this.isDropDownOpen=!1,this.$emit("update:selectedItem",t)},handleDropDown(){this.isDropDownOpen=!this.isDropDownOpen}}},P={class:"flex flex-row"},J=e.createElementVNode("i",{class:"fa-solid fa-chevron-down text-xs"},null,-1),O={key:0,class:"flex flex-col w-32 shadow mt-2 z-10 rounded-xl py-1 absolute bg-neutral"},L=["onClick"];function Z(t,r,n,l,s,a){const o=e.resolveComponent("BaseText");return e.openBlock(),e.createElementBlock("div",P,[e.createElementVNode("span",null,[e.createElementVNode("div",{class:"z-10 rounded-lg shadow px-2 py-2 w-40 flex flex-row justify-between",onClick:r[0]||(r[0]=c=>a.handleDropDown())},[e.createVNode(o,{text:n.label,color:"quaternary",size:"sm",weight:"normal"},null,8,["text"]),e.createVNode(o,{text:n.selectedItem.text,color:"secondary",size:"sm",weight:"normal"},null,8,["text"]),J]),t.isDropDownOpen?(e.openBlock(),e.createElementBlock("div",O,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,c=>(e.openBlock(),e.createElementBlock("a",{key:c.id,onClick:m=>a.handleClick(c),class:"hover:bg-dropdownSelect py-1 px-2 border-b border-dropdownSelect last:border-0"},[e.createVNode(o,{text:c.text,color:"primary",size:"xs",weight:"normal"},null,8,["text"])],8,L))),128))])):e.createCommentVNode("",!0)])])}const p=d(j,[["render",Z]]),R={name:"FilterAndSortBar",components:{DropDownMenu:p,BaseInput:A},props:{label:{type:String},items:{type:Array,default:()=>[]},selectedItem:null},data(){return{filterText:"",localSelectedItem:this.selectedItem}},methods:{handleFilter(t){this.$emit("filterbar",t)},handleSelectedItem(t){this.$emit("sort",t),this.localSelectedItem=t}}},X={class:"flex flex-row w-full justify-between"},v={class:"rounded-lg shadow px-2 py-1 w-full flex flex-row mt-0.5 mr-4"},ee=e.createElementVNode("i",{class:"fa-solid fa-magnifying-glass text-primaryHighlight w-6 mt-1"},null,-1);function te(t,r,n,l,s,a){const o=e.resolveComponent("BaseInput"),c=e.resolveComponent("DropDownMenu");return e.openBlock(),e.createElementBlock("section",X,[e.createElementVNode("div",v,[ee,e.createVNode(o,{placeholder:"Search on Name, Location, or Date",class:"text-quaternary",value:s.filterText,"onUpdate:value":a.handleFilter},null,8,["value","onUpdate:value"])]),e.createElementVNode("div",null,[e.createVNode(c,{label:n.label,items:n.items,selectedItem:s.localSelectedItem,"onUpdate:selectedItem":a.handleSelectedItem},null,8,["label","items","selectedItem","onUpdate:selectedItem"])])])}const b=d(R,[["render",te]]),re={name:"FilterUpcomingPast",components:{BaseText:g,BaseButton:y,DropDownMenu:p,BaseInput:A},props:{selected:{type:String,default:"All"}},data(){return{localSelected:this.selected}},methods:{handleTimeFrame(t){this.$emit("timeFrame",t),this.localSelected=t}}},ne={class:"flex flex-row w-full justify-between"},le={class:"rounded-lg w-3/4"},oe={class:"flex flex-row h-8 w-1/4 justify-end"};function ae(t,r,n,l,s,a){const o=e.resolveComponent("BaseText"),c=e.resolveComponent("BaseButton");return e.openBlock(),e.createElementBlock("section",ne,[e.createElementVNode("div",le,[e.createVNode(o,{text:"Tournament",color:"primary",size:"2xl",weight:"normal"})]),e.createElementVNode("div",oe,[e.createVNode(c,{label:"All",color:"primary",size:"sm",selected:s.localSelected==="All",onClick:r[0]||(r[0]=m=>a.handleTimeFrame("ALL"))},null,8,["selected"]),e.createVNode(c,{label:"Upcoming",color:"primary",size:"sm",selected:s.localSelected==="Upcoming",onClick:r[1]||(r[1]=m=>a.handleTimeFrame("Upcoming"))},null,8,["selected"]),e.createVNode(c,{label:"Past",color:"primary",size:"sm",selected:s.localSelected==="Past",onClick:r[2]||(r[2]=m=>a.handleTimeFrame("Past"))},null,8,["selected"])])])}const se={name:"GridContainer",components:{FilterAndSortBar:b,BaseText:g,TournamentCard:f,FilterUpcomingPast:d(re,[["render",ae]])},props:{items:{type:Array,default:()=>[]},component:{type:String,required:!0},label:{type:String},dropdownItems:{type:Array,default:()=>[]},selectedItem:null},data(){return{filterOn:"",sortCriteria:"Date",selectedTimeFrame:"All"}},computed:{filteredItems(){let t=this.items;if(this.filterOn.trim()){const n=this.filterOn.toLowerCase();t=t.filter(l=>Object.values(l).some(s=>typeof s=="string"&&s.toLowerCase().includes(n)))}const r=new Date;switch(r.setHours(0,0,0,0),this.selectedTimeFrame){case"Upcoming":t=t.filter(n=>new Date(n.date)>=r);break;case"Past":t=t.filter(n=>new Date(n.date)<r);break}switch(this.sortCriteria){case"Date":t=[...t].sort((n,l)=>new Date(n.date)-new Date(l.date));break;case"Name":t=[...t].sort((n,l)=>n.name.localeCompare(l.name));break;case"Location":t=[...t].sort((n,l)=>n.location.localeCompare(l.location));break}return t}},methods:{handleFilter(t){this.filterOn=t},handleSort(t){this.sortCriteria=t.text},handleTimeFrameChange(t){this.selectedTimeFrame=t}}},ce={class:"border border-dropdownSelect rounded-lg p-9 bg-neutral"},ie={class:"my-4"},de={class:"my-4"},me={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 3xl:grid-cols-4 gap-6 w-full"};function ge(t,r,n,l,s,a){const o=e.resolveComponent("FilterUpcomingPast"),c=e.resolveComponent("FilterAndSortBar");return e.openBlock(),e.createElementBlock("div",ce,[e.createElementVNode("div",ie,[e.createVNode(o,{selected:s.selectedTimeFrame,onTimeFrame:a.handleTimeFrameChange},null,8,["selected","onTimeFrame"])]),e.createElementVNode("div",de,[e.createVNode(c,{items:n.dropdownItems,label:n.label,selectedItem:n.selectedItem,onFilterbar:a.handleFilter,onSort:a.handleSort},null,8,["items","label","selectedItem","onFilterbar","onSort"])]),e.createElementVNode("div",me,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.filteredItems,m=>(e.openBlock(),e.createElementBlock("div",{key:m.id},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.component),{detail:m},null,8,["detail"]))]))),128))])])}const ye=d(se,[["render",ge]]),Ae={name:"AdminLeftMenu",components:{BaseButton:y},props:{buttons:{type:Array,default:()=>[]}},methods:{handleButtonClick(t){this.$emit("button-click",t)}}},pe={class:"bg-secondary w-64 h-screen flex flex-col justify-between"},Be=e.createElementVNode("section",{class:"h-28 border-b border-neutral"},[e.createElementVNode("div",{class:"flex flex-col justify-center h-28"},[e.createElementVNode("div",{class:"ml-8"},[e.createElementVNode("img",{class:"w-32",src:"https://ferrotas.com/assets/ferrotas-white-small-720502db.png",alt:"logo"})])])],-1),xe={class:"flex flex-col p-2 h-full"},he={class:"flex flex-col justify-end p-2 flex-grow"},ue={class:"border-t border-neutral pt-2"};function fe(t,r,n,l,s,a){const o=e.resolveComponent("BaseButton");return e.openBlock(),e.createElementBlock("div",pe,[Be,e.createElementVNode("section",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.buttons,c=>(e.openBlock(),e.createBlock(o,{label:c.label,iconClass:"fa-solid fa-trophy text-white",type:"admin",hover:"admin",onClick:m=>a.handleButtonClick(c)},null,8,["label","onClick"]))),256))]),e.createElementVNode("section",he,[e.createElementVNode("div",ue,[e.createVNode(o,{iconClass:"fa-solid fa-circle-user text-textSecondary",label:"Account",type:"adminSecondary",onClick:r[0]||(r[0]=c=>a.handleButtonClick(t.button))}),e.createVNode(o,{iconClass:"fa-solid fa-right-to-bracket fa-rotate-180 text-textSecondary",label:"Log Out",type:"adminSecondary",onClick:r[1]||(r[1]=c=>a.handleButtonClick(t.button))})])])])}const be=d(Ae,[["render",fe]]);i.AdminLeftMenu=be,i.BaseButton=y,i.BaseInput=A,i.BaseTag=B,i.BaseText=g,i.DropDownMenu=p,i.FilterAndSortBar=b,i.GridContainer=ye,i.TournamentCard=f,i.TournamentCardDetails=u,i.TournamentCardHeader=h,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
@@ -0,0 +1,18 @@
1
+ module.exports = {
2
+ root: true,
3
+ env: {
4
+ node: true,
5
+ 'jest/globals': true
6
+ },
7
+ extends: ['plugin:vue/vue3-recommended', 'eslint:recommended', 'plugin:jest/recommended', 'prettier', 'plugin:storybook/recommended'],
8
+ parserOptions: {
9
+ parser: 'babel-eslint'
10
+ },
11
+ rules: {
12
+ 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
13
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
14
+ },
15
+ plugins: [
16
+ 'jest'
17
+ ]
18
+ }
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
@@ -0,0 +1 @@
1
+ node_modules/
@@ -0,0 +1,18 @@
1
+ /** @type { import('@storybook/vue3-vite').StorybookConfig } */
2
+ const config = {
3
+ stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
4
+ addons: [
5
+ "@storybook/addon-links",
6
+ "@storybook/addon-essentials",
7
+ "@storybook/addon-interactions",
8
+ "@storybook/addon-mdx-gfm"
9
+ ],
10
+ framework: {
11
+ name: "@storybook/vue3-vite",
12
+ options: {},
13
+ },
14
+ docs: {
15
+ autodocs: "tag",
16
+ },
17
+ };
18
+ export default config;
@@ -0,0 +1,9 @@
1
+ // .storybook/mockRoutes.js
2
+ import config from "./main.js";
3
+
4
+ export const routes = [
5
+ { path: '/', component: { template: '<div>Home</div>' } },
6
+ { path: '/event', component: { template: '<div>Event</div>' } },
7
+ ];
8
+
9
+ export default routes;
@@ -0,0 +1 @@
1
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" rel="stylesheet">
@@ -0,0 +1,17 @@
1
+ /** @type { import('@storybook/vue3').Preview } */
2
+ import '../tailwind/output.css';
3
+ import 'font-awesome/css/font-awesome.min.css';
4
+
5
+ const preview = {
6
+ parameters: {
7
+ actions: { argTypesRegex: "^on[A-Z].*" },
8
+ controls: {
9
+ matchers: {
10
+ color: /(background|color)$/i,
11
+ date: /Date$/,
12
+ },
13
+ },
14
+ },
15
+ };
16
+
17
+ export default preview;
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Dwain Crackel
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,83 @@
1
+ # Vue 3 + Vite
2
+
3
+ This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
4
+
5
+ ## Recommended IDE Setup
6
+
7
+ - [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
8
+
9
+
10
+
11
+
12
+
13
+ ## Publishing a Storybook Library to NPM
14
+ Follow this guide to publish your Storybook library to NPM, making it available for others to easily npm install.
15
+
16
+ # 1. Setup & Prerequisites
17
+ Ensure you have an account on npm. If not, you can create one for free.
18
+ Verify node and npm installations:
19
+ ```
20
+ Copy code
21
+ node -v
22
+ npm -v
23
+ ```
24
+
25
+ # 2. Preparing Your Storybook Library
26
+ a. Building the Library
27
+ Compile your library with Vite or your bundler:
28
+
29
+ ```
30
+ vite build
31
+ ```
32
+
33
+ b. Update package.json
34
+ Ensure the following fields are set:
35
+
36
+ name: Name of your package.
37
+ version: Version number.
38
+ main: Main entry file (e.g., dist/index.js).
39
+ files: Files to include, e.g., ["dist"].
40
+
41
+ # 3. Logging in to NPM
42
+ Login to npm (if you haven't already):
43
+
44
+ ```
45
+ npm login
46
+ ```
47
+ Provide your username, password, and email.
48
+
49
+ # 4. Publishing to NPM
50
+ a. Default (Private Package)
51
+ For scoped private packages (@username/project-name):
52
+
53
+ ```
54
+ npm publish
55
+ ```
56
+ b. Public Package
57
+ For public packages:
58
+
59
+ ```
60
+ npm publish --access=public
61
+ ```
62
+
63
+ # 5. Verifying Your Package
64
+ Check on the npm website to verify your package's publication.
65
+
66
+ Check the registry name
67
+ ```
68
+ npm get registry
69
+ ```
70
+
71
+ # 6. Installing and Using the Library
72
+ To install the library:
73
+
74
+ ```
75
+ npm install your-library-name
76
+ ```
77
+
78
+ Users can then import and utilize your library's components.
79
+
80
+ Notes:
81
+
82
+ Always update the version in package.json before republishing.
83
+ Ensure only necessary files are bundled to prevent package bloat.
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>StoryBookLib !!!!!</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/main.js"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@dcrackel/hematournamentui",
3
+ "private": false,
4
+ "version": "1.0.7",
5
+ "type": "module",
6
+ "main": "dist/HemaTouranmentUI-lib.umd.js",
7
+ "module": "dist/HemaTouranmentUI-lib.es.js",
8
+ "scripts": {
9
+ "dev": "vite",
10
+ "build": "npm version patch && vite build",
11
+ "publish:package": "npm publish",
12
+ "preview": "vite preview",
13
+ "build-storybook": "npm run build:tailwind && storybook build",
14
+ "build:tailwind": "tailwindcss build ./tailwind/tailwind.css -o ./tailwind/output.css",
15
+ "storybook": "concurrently \"npm run watch:tailwind\" \"npm run watch:storybook\"",
16
+ "watch:storybook": "storybook dev -p 6006",
17
+ "watch:tailwind": "tailwindcss build ./tailwind/tailwind.css -o ./tailwind/output.css --watch",
18
+ "test": "vitest",
19
+ "coverage": "vitest run --coverage"
20
+ },
21
+ "dependencies": {
22
+ "@storybook/addon-actions": "^7.4.5",
23
+ "concurrently": "^8.2.1",
24
+ "font-awesome": "^4.7.0",
25
+ "happy-dom": "^12.8.0",
26
+ "vue": "^3.3.4"
27
+ },
28
+ "devDependencies": {
29
+ "@storybook/addon-docs": "^7.4.5",
30
+ "@storybook/addon-essentials": "^7.4.5",
31
+ "@storybook/addon-interactions": "^7.4.5",
32
+ "@storybook/addon-links": "^7.4.5",
33
+ "@storybook/addon-mdx-gfm": "^7.4.5",
34
+ "@storybook/blocks": "^7.4.5",
35
+ "@storybook/testing-library": "^0.2.2",
36
+ "@storybook/vue3": "^7.4.5",
37
+ "@storybook/vue3-vite": "^7.4.5",
38
+ "@vitejs/plugin-vue": "^4.2.3",
39
+ "@vitest/coverage-v8": "^0.34.6",
40
+ "@vue/cli-plugin-babel": "^5.0.8",
41
+ "@vue/test-utils": "^2.4.0-alpha.2",
42
+ "autoprefixer": "^10.4.16",
43
+ "storybook": "^7.4.5",
44
+ "storybook-vue3-router": "^4.0.1",
45
+ "tailwindcss": "^3.3.3",
46
+ "vite": "^4.4.5",
47
+ "vitest": "^0.34.6"
48
+ }
49
+ }
@@ -0,0 +1,6 @@
1
+ export default {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ }
@@ -0,0 +1,10 @@
1
+ module.exports = {
2
+ semi: true, // Remove semicolons
3
+ trailingComma: 'none', // No trailing commas
4
+ singleQuote: true, // Use single quotes instead of double quotes
5
+ printWidth: 120, // Wrap lines at 120 characters
6
+ tabWidth: 2, // Use 2 spaces for indentation
7
+ useTabs: false, // Use spaces instead of tabs
8
+ bracketSpacing: true, // Space between object literals
9
+ arrowParens: 'avoid' // Avoid parentheses around single arrow function parameters
10
+ };
@@ -0,0 +1,15 @@
1
+ export { default as BaseInput } from './stories/Base/Input/BaseInput.vue';
2
+ export { default as BaseButton } from './stories/Base/Button/BaseButton.vue';
3
+ export { default as BaseTag } from './stories/Base/Tag/BaseTag.vue';
4
+ export { default as BaseText } from './stories/Base/Text/BaseText.vue';
5
+
6
+ export { default as TournamentCard } from './stories/Cards/TournamentCard/TournamentCard.vue';
7
+ export { default as TournamentCardDetails } from './stories/Cards/TournamentCard/Detail/TournamentCardDetail.vue';
8
+ export { default as TournamentCardHeader } from './stories/Cards/TournamentCard/Header/TournamentCardHeader.vue';
9
+
10
+ export { default as GridContainer } from './stories/Containers/Grid/GridContainer.vue';
11
+
12
+ export { default as FilterAndSortBar } from './stories/Filters/FilterAndSortBar/FilterAndSortBar.vue';
13
+ export { default as AdminLeftMenu } from './stories/Menu/Admin/AdminLeftMenu.vue';
14
+ export { default as DropDownMenu } from './stories/Menu/DropDown/DropDownMenu.vue';
15
+
@@ -0,0 +1,2 @@
1
+ import '../tailwind/output.css'
2
+
@@ -0,0 +1 @@
1
+ module.exports = 'test-file-stub';
@@ -0,0 +1,34 @@
1
+ const mockTournaments = [
2
+ {
3
+ id: 1,
4
+ artwork: 'https://node.ferrotas.com:5000/uploads/t-450.png',
5
+ tags: ['Tag1', 'Tag2'],
6
+ name: 'Summer Slam 2023',
7
+ description: 'Join us for the hottest tournament this summer!',
8
+ date: '15 June 2023',
9
+ closes: 'Status Line',
10
+ location: 'Amber Arena, Miami, FL'
11
+ },
12
+ {
13
+ id: 2,
14
+ artwork: 'https://node.ferrotas.com:5000/uploads/t-196.png',
15
+ tags: ['Tag3', 'Tag4', 'Tag5'],
16
+ name: 'Winter Showdown 2023',
17
+ description: 'Cold weather, hot competition!',
18
+ date: '10 December 2023',
19
+ closes: 'Registration Closes 1 December 2023',
20
+ location: 'Snowy Mountain Stadium, Denver, CO'
21
+ },
22
+ {
23
+ id: 3,
24
+ artwork: 'https://usahema.org/img/tournaments/usahema-tournament-45.jpg',
25
+ tags: ['Tag6'],
26
+ name: 'Autumn Cup 2023',
27
+ description: 'Celebrate fall with intense matches!',
28
+ date: '20 October 2023',
29
+ closes: 'Registration Closes 18th October 2023',
30
+ location: 'Withers Field, Portland, OR'
31
+ }
32
+ ];
33
+
34
+ export default mockTournaments;