@gspa/ui 0.1.3 → 0.2.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 (280) hide show
  1. package/README.md +35 -0
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js +205 -0
  3. package/dist/Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs +1 -0
  4. package/dist/DataTable.css +1 -0
  5. package/dist/DataTableToolBar.css +1 -0
  6. package/dist/FormField.vue_vue_type_script_setup_true_lang-DimMUyA-.js +205 -0
  7. package/dist/FormField.vue_vue_type_script_setup_true_lang-mEO-VA6R.cjs +1 -0
  8. package/dist/Header.css +1 -0
  9. package/dist/Input.vue_vue_type_script_setup_true_lang-C1OQn24h.cjs +1 -0
  10. package/dist/Input.vue_vue_type_script_setup_true_lang-CpBoY97r.js +137 -0
  11. package/dist/Loader.css +1 -0
  12. package/dist/ReminderConfig.css +1 -0
  13. package/dist/ReusableForm.css +1 -0
  14. package/dist/Sidebar.css +1 -0
  15. package/dist/Toast.css +1 -0
  16. package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +1 -0
  17. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  18. package/dist/components/Accordion.cjs +1 -0
  19. package/dist/components/Accordion.js +192 -0
  20. package/dist/components/AccordionItem.cjs +1 -0
  21. package/dist/components/AccordionItem.js +109 -0
  22. package/dist/components/AddReminderModal.cjs +1 -0
  23. package/dist/components/AddReminderModal.js +107 -0
  24. package/dist/components/Alert.cjs +1 -0
  25. package/dist/components/Alert.js +227 -0
  26. package/dist/components/Avatar.cjs +1 -0
  27. package/dist/components/Avatar.js +86 -0
  28. package/dist/components/Badge.cjs +1 -0
  29. package/dist/components/Badge.js +109 -0
  30. package/dist/components/Breadcrumb.cjs +1 -0
  31. package/dist/components/Breadcrumb.js +72 -0
  32. package/dist/components/Button.cjs +1 -0
  33. package/dist/components/Button.js +4 -0
  34. package/dist/components/ButtonGroup.cjs +1 -0
  35. package/dist/components/ButtonGroup.js +46 -0
  36. package/dist/components/Calendar.cjs +1 -0
  37. package/dist/components/Calendar.js +341 -0
  38. package/dist/components/Card.cjs +1 -0
  39. package/dist/components/Card.js +316 -0
  40. package/dist/components/CardBody.cjs +1 -0
  41. package/dist/components/CardBody.js +34 -0
  42. package/dist/components/CardContent.cjs +1 -0
  43. package/dist/components/CardContent.js +17 -0
  44. package/dist/components/CardFooter.cjs +1 -0
  45. package/dist/components/CardFooter.js +34 -0
  46. package/dist/components/CardHeader.cjs +1 -0
  47. package/dist/components/CardHeader.js +91 -0
  48. package/dist/components/CardTitle.cjs +1 -0
  49. package/dist/components/CardTitle.js +17 -0
  50. package/dist/components/Checkbox.cjs +1 -0
  51. package/dist/components/Checkbox.js +185 -0
  52. package/dist/components/CircularProgress.cjs +1 -0
  53. package/dist/components/CircularProgress.js +141 -0
  54. package/dist/components/DataTable.cjs +1 -0
  55. package/dist/components/DataTable.js +863 -0
  56. package/dist/components/DataTableCell.cjs +1 -0
  57. package/dist/components/DataTableCell.js +95 -0
  58. package/dist/components/DataTableFilters.cjs +1 -0
  59. package/dist/components/DataTableFilters.js +519 -0
  60. package/dist/components/DataTableHeader.cjs +1 -0
  61. package/dist/components/DataTableHeader.js +116 -0
  62. package/dist/components/DataTablePagination.cjs +1 -0
  63. package/dist/components/DataTablePagination.js +290 -0
  64. package/dist/components/DataTableRow.cjs +1 -0
  65. package/dist/components/DataTableRow.js +199 -0
  66. package/dist/components/DataTableToolBar.cjs +1 -0
  67. package/dist/components/DataTableToolBar.js +477 -0
  68. package/dist/components/DatePicker.cjs +1 -0
  69. package/dist/components/DatePicker.js +401 -0
  70. package/dist/components/Divider.cjs +1 -0
  71. package/dist/components/Divider.js +103 -0
  72. package/dist/components/Dropdown.cjs +1 -0
  73. package/dist/components/Dropdown.js +104 -0
  74. package/dist/components/DropdownItem.cjs +1 -0
  75. package/dist/components/DropdownItem.js +60 -0
  76. package/dist/components/EventsCalendar.cjs +1 -0
  77. package/dist/components/EventsCalendar.js +863 -0
  78. package/dist/components/FileUpload.cjs +1 -0
  79. package/dist/components/FileUpload.js +195 -0
  80. package/dist/components/FilterDrawer.cjs +1 -0
  81. package/dist/components/FilterDrawer.js +412 -0
  82. package/dist/components/Footer.cjs +1 -0
  83. package/dist/components/Footer.js +157 -0
  84. package/dist/components/FormField.cjs +1 -0
  85. package/dist/components/FormField.js +4 -0
  86. package/dist/components/Graph.cjs +1 -0
  87. package/dist/components/Graph.js +164 -0
  88. package/dist/components/GraphFilters.cjs +1 -0
  89. package/dist/components/GraphFilters.js +305 -0
  90. package/dist/components/Header.cjs +1 -0
  91. package/dist/components/Header.js +674 -0
  92. package/dist/components/Icon.cjs +1 -0
  93. package/dist/components/Icon.js +58 -0
  94. package/dist/components/Image.cjs +1 -0
  95. package/dist/components/Image.js +112 -0
  96. package/dist/components/Input.cjs +1 -0
  97. package/dist/components/Input.js +4 -0
  98. package/dist/components/InputGroup.cjs +1 -0
  99. package/dist/components/InputGroup.js +45 -0
  100. package/dist/components/Label.cjs +1 -0
  101. package/dist/components/Label.js +46 -0
  102. package/dist/components/Link.cjs +1 -0
  103. package/dist/components/Link.js +119 -0
  104. package/dist/components/ListItem.cjs +1 -0
  105. package/dist/components/ListItem.js +89 -0
  106. package/dist/components/Loader.cjs +1 -0
  107. package/dist/components/Loader.js +154 -0
  108. package/dist/components/Logo.cjs +1 -0
  109. package/dist/components/Logo.js +67 -0
  110. package/dist/components/MenuItem.cjs +1 -0
  111. package/dist/components/MenuItem.js +66 -0
  112. package/dist/components/Modal.cjs +1 -0
  113. package/dist/components/Modal.js +110 -0
  114. package/dist/components/ModalBody.cjs +1 -0
  115. package/dist/components/ModalBody.js +33 -0
  116. package/dist/components/ModalFooter.cjs +1 -0
  117. package/dist/components/ModalFooter.js +33 -0
  118. package/dist/components/ModalHeader.cjs +1 -0
  119. package/dist/components/ModalHeader.js +24 -0
  120. package/dist/components/MultiSelect.cjs +1 -0
  121. package/dist/components/MultiSelect.js +211 -0
  122. package/dist/components/Notification.cjs +1 -0
  123. package/dist/components/Notification.js +121 -0
  124. package/dist/components/Option.cjs +1 -0
  125. package/dist/components/Option.js +44 -0
  126. package/dist/components/Progress.cjs +1 -0
  127. package/dist/components/Progress.js +77 -0
  128. package/dist/components/ProgressBar.cjs +1 -0
  129. package/dist/components/ProgressBar.js +101 -0
  130. package/dist/components/Radio.cjs +1 -0
  131. package/dist/components/Radio.js +81 -0
  132. package/dist/components/RailNav.cjs +1 -0
  133. package/dist/components/RailNav.js +124 -0
  134. package/dist/components/ReminderConfig.cjs +1 -0
  135. package/dist/components/ReminderConfig.js +375 -0
  136. package/dist/components/ReusableForm.cjs +1 -0
  137. package/dist/components/ReusableForm.js +686 -0
  138. package/dist/components/ReusableFormModal.cjs +1 -0
  139. package/dist/components/ReusableFormModal.js +112 -0
  140. package/dist/components/RightDrawer.cjs +1 -0
  141. package/dist/components/RightDrawer.js +143 -0
  142. package/dist/components/Search.cjs +1 -0
  143. package/dist/components/Search.js +252 -0
  144. package/dist/components/Select.cjs +1 -0
  145. package/dist/components/Select.js +243 -0
  146. package/dist/components/Sidebar.cjs +1 -0
  147. package/dist/components/Sidebar.js +372 -0
  148. package/dist/components/Slider.cjs +1 -0
  149. package/dist/components/Slider.js +42 -0
  150. package/dist/components/Spinner.cjs +1 -0
  151. package/dist/components/Spinner.js +87 -0
  152. package/dist/components/Stepper.cjs +1 -0
  153. package/dist/components/Stepper.js +12 -0
  154. package/dist/components/StepperItem.cjs +1 -0
  155. package/dist/components/StepperItem.js +33 -0
  156. package/dist/components/Switch.cjs +1 -0
  157. package/dist/components/Switch.js +112 -0
  158. package/dist/components/Tab.cjs +1 -0
  159. package/dist/components/Tab.js +134 -0
  160. package/dist/components/TabPanel.cjs +1 -0
  161. package/dist/components/TabPanel.js +49 -0
  162. package/dist/components/Text.cjs +1 -0
  163. package/dist/components/Text.js +84 -0
  164. package/dist/components/Textarea.cjs +1 -0
  165. package/dist/components/Textarea.js +102 -0
  166. package/dist/components/ThemeConfigurator.cjs +1 -0
  167. package/dist/components/ThemeConfigurator.js +73 -0
  168. package/dist/components/Timeline.cjs +1 -0
  169. package/dist/components/Timeline.js +24 -0
  170. package/dist/components/TimelineItem.cjs +1 -0
  171. package/dist/components/TimelineItem.js +63 -0
  172. package/dist/components/Toast.cjs +1 -0
  173. package/dist/components/Toast.js +231 -0
  174. package/dist/components/Tooltip.cjs +1 -0
  175. package/dist/components/Tooltip.js +124 -0
  176. package/dist/components/Typography.cjs +1 -0
  177. package/dist/components/Typography.js +267 -0
  178. package/dist/components/charts/BarChart.cjs +1 -0
  179. package/dist/components/charts/BarChart.js +323 -0
  180. package/dist/components/charts/LineChart.cjs +1 -0
  181. package/dist/components/charts/LineChart.js +322 -0
  182. package/dist/components/charts/PieChart.cjs +1 -0
  183. package/dist/components/charts/PieChart.js +311 -0
  184. package/dist/components/charts/StackedBarChart.cjs +1 -0
  185. package/dist/components/charts/StackedBarChart.js +348 -0
  186. package/dist/components/widgets/DashboardWidget.cjs +1 -0
  187. package/dist/components/widgets/DashboardWidget.js +309 -0
  188. package/dist/directives/tooltip.cjs +47 -0
  189. package/dist/directives/tooltip.js +115 -0
  190. package/dist/gspa-ui.css +1 -1
  191. package/dist/index.cjs +1 -0
  192. package/dist/index.esm.js +315 -19546
  193. package/dist/layouts/AuthLayout.cjs +1 -0
  194. package/dist/layouts/AuthLayout.js +188 -0
  195. package/dist/layouts/DashboardLayout.cjs +1 -0
  196. package/dist/layouts/DashboardLayout.js +244 -0
  197. package/dist/layouts/DefaultLayout.cjs +1 -0
  198. package/dist/layouts/DefaultLayout.js +94 -0
  199. package/dist/layouts/ErrorLayout.cjs +1 -0
  200. package/dist/layouts/ErrorLayout.js +452 -0
  201. package/dist/lib/auth.cjs +1 -0
  202. package/dist/lib/auth.js +4 -0
  203. package/dist/lib/form-field.cjs +1 -0
  204. package/dist/lib/form-field.js +4 -0
  205. package/dist/lib/icon.cjs +1 -0
  206. package/dist/lib/icon.js +4 -0
  207. package/dist/lib/theme.cjs +1 -0
  208. package/dist/lib/theme.js +145 -0
  209. package/dist/lib/toast.cjs +1 -0
  210. package/dist/lib/toast.js +81 -0
  211. package/dist/src/components/Alert.vue.d.ts.map +1 -1
  212. package/dist/src/components/Button.vue.d.ts +127 -29
  213. package/dist/src/components/Button.vue.d.ts.map +1 -1
  214. package/dist/src/components/Checkbox.vue.d.ts +2 -2
  215. package/dist/src/components/DataTable.vue.d.ts +1 -1
  216. package/dist/src/components/FormField.vue.d.ts +106 -38
  217. package/dist/src/components/FormField.vue.d.ts.map +1 -1
  218. package/dist/src/components/Icon.vue.d.ts.map +1 -1
  219. package/dist/src/components/Input.vue.d.ts +137 -33
  220. package/dist/src/components/Input.vue.d.ts.map +1 -1
  221. package/dist/src/components/ReusableForm.vue.d.ts +1 -1
  222. package/dist/src/components/ReusableForm.vue.d.ts.map +1 -1
  223. package/dist/src/components/ReusableFormModal.vue.d.ts +1 -1
  224. package/dist/src/components/Textarea.vue.d.ts +2 -2
  225. package/dist/src/index.d.ts +9 -4
  226. package/dist/src/index.d.ts.map +1 -1
  227. package/dist/src/layouts/AuthLayout.vue.d.ts +2 -0
  228. package/dist/src/layouts/AuthLayout.vue.d.ts.map +1 -1
  229. package/dist/src/lib/form-field.d.ts +2 -0
  230. package/dist/src/lib/form-field.d.ts.map +1 -0
  231. package/dist/src/lib/icon.d.ts +2 -0
  232. package/dist/src/lib/icon.d.ts.map +1 -0
  233. package/dist/src/lib/theme.d.ts +4 -0
  234. package/dist/src/lib/theme.d.ts.map +1 -1
  235. package/dist/src/types.d.ts +44 -0
  236. package/dist/src/types.d.ts.map +1 -0
  237. package/dist/styles/auth-layout.css +1 -0
  238. package/dist/styles/button.css +1 -0
  239. package/dist/styles/form-field.css +1 -0
  240. package/dist/styles/input.css +1 -0
  241. package/dist/styles/tokens.css +1 -0
  242. package/dist/tsconfig.tsbuildinfo +1 -1
  243. package/dist/utils/cn.cjs +1 -0
  244. package/dist/utils/cn.js +7 -0
  245. package/package.json +45 -8
  246. package/dist/index.js +0 -605
  247. package/dist/src/__tests__/Alert.spec.d.ts +0 -2
  248. package/dist/src/__tests__/Alert.spec.d.ts.map +0 -1
  249. package/dist/src/__tests__/App.spec.d.ts +0 -2
  250. package/dist/src/__tests__/App.spec.d.ts.map +0 -1
  251. package/dist/src/__tests__/AuthLayout.spec.d.ts +0 -2
  252. package/dist/src/__tests__/AuthLayout.spec.d.ts.map +0 -1
  253. package/dist/src/__tests__/Badge.spec.d.ts +0 -2
  254. package/dist/src/__tests__/Badge.spec.d.ts.map +0 -1
  255. package/dist/src/__tests__/Button.spec.d.ts +0 -2
  256. package/dist/src/__tests__/Button.spec.d.ts.map +0 -1
  257. package/dist/src/__tests__/Card.spec.d.ts +0 -2
  258. package/dist/src/__tests__/Card.spec.d.ts.map +0 -1
  259. package/dist/src/__tests__/Checkbox.spec.d.ts +0 -2
  260. package/dist/src/__tests__/Checkbox.spec.d.ts.map +0 -1
  261. package/dist/src/__tests__/Dropdown.spec.d.ts +0 -2
  262. package/dist/src/__tests__/Dropdown.spec.d.ts.map +0 -1
  263. package/dist/src/__tests__/Input.spec.d.ts +0 -2
  264. package/dist/src/__tests__/Input.spec.d.ts.map +0 -1
  265. package/dist/src/__tests__/Modal.spec.d.ts +0 -2
  266. package/dist/src/__tests__/Modal.spec.d.ts.map +0 -1
  267. package/dist/src/__tests__/Radio.spec.d.ts +0 -2
  268. package/dist/src/__tests__/Radio.spec.d.ts.map +0 -1
  269. package/dist/src/__tests__/ReusableForm.spec.d.ts +0 -2
  270. package/dist/src/__tests__/ReusableForm.spec.d.ts.map +0 -1
  271. package/dist/src/__tests__/Tabs.spec.d.ts +0 -2
  272. package/dist/src/__tests__/Tabs.spec.d.ts.map +0 -1
  273. package/dist/src/__tests__/integration/CardIntegration.spec.d.ts +0 -2
  274. package/dist/src/__tests__/integration/CardIntegration.spec.d.ts.map +0 -1
  275. package/dist/src/__tests__/integration/FormIntegration.spec.d.ts +0 -2
  276. package/dist/src/__tests__/integration/FormIntegration.spec.d.ts.map +0 -1
  277. package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts +0 -2
  278. package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts.map +0 -1
  279. package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts +0 -2
  280. package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),f={key:0,class:"ui-danger ml-1","aria-hidden":"true"},b={__name:"Typography",props:{variant:{type:String,default:"body-md",validator:e=>["body-2xs","body-xs","body-sm","body-md","body-lg","body-xl","body-2xl","text-2xs","text-xs","text-sm","text-md","text-lg","text-xl","text-2xl","display-xs","display-sm","display-md","display-lg","display-xl","display-2xl","caption","overline","label"].includes(e)},color:{type:String,default:"default",validator:e=>["default","primary","secondary","accent","success","warning","danger","info","muted","disabled","white","black"].includes(e)},align:{type:String,default:"left",validator:e=>["left","center","right","justify"].includes(e)},weight:{type:String,default:null,validator:e=>["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"].includes(e)},transform:{type:String,default:null,validator:e=>["uppercase","lowercase","capitalize","normal"].includes(e)},leading:{type:String,default:null,validator:e=>["none","tight","snug","normal","relaxed","loose"].includes(e)},tracking:{type:String,default:null,validator:e=>["tighter","tight","normal","wide","wider","widest"].includes(e)},italic:Boolean,underline:Boolean,lineThrough:Boolean,truncate:Boolean,noWrap:Boolean,required:Boolean,gradient:Boolean,maxLines:{type:Number,default:null},shadow:{type:String,default:null,validator:e=>["sm","md","lg","xl","2xl"].includes(e)},spacing:{type:String,default:null,validator:e=>["tight","normal","relaxed","loose"].includes(e)},responsive:Boolean,opacity:{type:Number,default:null,validator:e=>e>=0&&e<=100}},setup(e){const t=e,n=l.computed(()=>({"body-2xs":"p","body-xs":"p","body-sm":"p","body-md":"p","body-lg":"p","body-xl":"p","body-2xl":"p","text-2xs":"h6","text-xs":"h6","text-sm":"h5","text-md":"h4","text-lg":"h3","text-xl":"h2","text-2xl":"h1","display-xs":"h2","display-sm":"h2","display-md":"h1","display-lg":"h1","display-xl":"h1","display-2xl":"h1",caption:"span",overline:"span",label:"label"})[t.variant]||"p"),i=l.computed(()=>({"body-2xs":"text-[10px] leading-normal","body-xs":"text-xs leading-normal","body-sm":"text-sm leading-relaxed","body-md":"text-base leading-relaxed","body-lg":"text-lg leading-relaxed","body-xl":"text-xl leading-relaxed","body-2xl":"text-2xl leading-relaxed","text-2xs":"text-xs font-semibold leading-snug","text-xs":"text-sm font-semibold leading-snug","text-sm":"text-lg font-semibold leading-snug","text-md":"text-xl font-semibold leading-snug","text-lg":"text-2xl font-bold leading-snug","text-xl":"text-3xl font-bold leading-snug","text-2xl":"text-4xl font-bold leading-snug","display-xs":"text-3xl font-bold leading-tight tracking-tight","display-sm":"text-4xl font-bold leading-tight tracking-tight","display-md":"text-5xl font-bold leading-tight tracking-tight","display-lg":"text-6xl font-bold leading-tight tracking-tight","display-xl":"text-7xl font-bold leading-tight tracking-tighter","display-2xl":"text-8xl font-bold leading-tight tracking-tighter",caption:"text-xs leading-normal ui-text",overline:"text-xs font-medium uppercase tracking-wider leading-normal",label:"text-sm font-medium leading-normal"})[t.variant]),o=l.computed(()=>t.gradient?"bg-linear-to-r from-(--ui-primary) to-(--ui-accent) bg-clip-text text-transparent":{default:"ui-text",primary:"ui-primary",secondary:"ui-text",accent:"ui-accent",success:"ui-success",warning:"ui-warning",danger:"ui-danger",info:"ui-primary",muted:"ui-text",disabled:"ui-text",white:"ui-text",black:"ui-text"}[t.color]),s=l.computed(()=>({left:"text-left",center:"text-center",right:"text-right",justify:"text-justify"})[t.align]),r=l.computed(()=>t.weight?{thin:"font-thin",extralight:"font-extralight",light:"font-light",normal:"font-normal",medium:"font-medium",semibold:"font-semibold",bold:"font-bold",extrabold:"font-extrabold",black:"font-black"}[t.weight]:""),d=l.computed(()=>t.transform?{uppercase:"uppercase",lowercase:"lowercase",capitalize:"capitalize",normal:"normal-case"}[t.transform]:""),g=l.computed(()=>t.leading?{none:"leading-none",tight:"leading-tight",snug:"leading-snug",normal:"leading-normal",relaxed:"leading-relaxed",loose:"leading-loose"}[t.leading]:""),u=l.computed(()=>t.tracking?{tighter:"tracking-tighter",tight:"tracking-tight",normal:"tracking-normal",wide:"tracking-wide",wider:"tracking-wider",widest:"tracking-widest"}[t.tracking]:""),c=l.computed(()=>t.shadow?{sm:"drop-shadow-sm",md:"drop-shadow-md",lg:"drop-shadow-lg",xl:"drop-shadow-xl","2xl":"drop-shadow-2xl"}[t.shadow]:""),x=l.computed(()=>t.spacing?{tight:"mb-1",normal:"mb-2",relaxed:"mb-4",loose:"mb-6"}[t.spacing]:""),m=l.computed(()=>t.responsive?"text-sm sm:text-base md:text-lg lg:text-xl":""),p=l.computed(()=>t.maxLines?`line-clamp-${t.maxLines}`:""),h=l.computed(()=>{const a={};return t.opacity!==null&&(a.opacity=t.opacity/100),a}),y=l.computed(()=>[i.value,o.value,s.value,r.value,d.value,g.value,u.value,c.value,x.value,m.value,p.value,{italic:t.italic,underline:t.underline,"line-through":t.lineThrough,truncate:t.truncate&&!t.maxLines,"whitespace-nowrap":t.noWrap,"transition-colors duration-200":!0,"select-none":t.variant==="overline"||t.variant==="label"}]);return(a,v)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(n.value),l.mergeProps({class:y.value,style:h.value},a.$attrs),{default:l.withCtx(()=>[l.renderSlot(a.$slots,"default"),e.required?(l.openBlock(),l.createElementBlock("span",f,"*")):l.createCommentVNode("",!0)]),_:3},16,["class","style"]))}};exports.default=b;
@@ -0,0 +1,267 @@
1
+ import { computed as a, createBlock as b, openBlock as n, resolveDynamicComponent as v, mergeProps as w, withCtx as k, renderSlot as C, createElementBlock as B, createCommentVNode as S } from "vue";
2
+ const L = {
3
+ key: 0,
4
+ class: "ui-danger ml-1",
5
+ "aria-hidden": "true"
6
+ }, z = {
7
+ __name: "Typography",
8
+ props: {
9
+ // Size variants
10
+ variant: {
11
+ type: String,
12
+ default: "body-md",
13
+ validator: (e) => [
14
+ "body-2xs",
15
+ "body-xs",
16
+ "body-sm",
17
+ "body-md",
18
+ "body-lg",
19
+ "body-xl",
20
+ "body-2xl",
21
+ "text-2xs",
22
+ "text-xs",
23
+ "text-sm",
24
+ "text-md",
25
+ "text-lg",
26
+ "text-xl",
27
+ "text-2xl",
28
+ "display-xs",
29
+ "display-sm",
30
+ "display-md",
31
+ "display-lg",
32
+ "display-xl",
33
+ "display-2xl",
34
+ "caption",
35
+ "overline",
36
+ "label"
37
+ ].includes(e)
38
+ },
39
+ // Color options
40
+ color: {
41
+ type: String,
42
+ default: "default",
43
+ validator: (e) => [
44
+ "default",
45
+ "primary",
46
+ "secondary",
47
+ "accent",
48
+ "success",
49
+ "warning",
50
+ "danger",
51
+ "info",
52
+ "muted",
53
+ "disabled",
54
+ "white",
55
+ "black"
56
+ ].includes(e)
57
+ },
58
+ // Alignment
59
+ align: {
60
+ type: String,
61
+ default: "left",
62
+ validator: (e) => ["left", "center", "right", "justify"].includes(e)
63
+ },
64
+ // Font weight
65
+ weight: {
66
+ type: String,
67
+ default: null,
68
+ validator: (e) => ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"].includes(e)
69
+ },
70
+ // Text transform
71
+ transform: {
72
+ type: String,
73
+ default: null,
74
+ validator: (e) => ["uppercase", "lowercase", "capitalize", "normal"].includes(e)
75
+ },
76
+ // Line height
77
+ leading: {
78
+ type: String,
79
+ default: null,
80
+ validator: (e) => ["none", "tight", "snug", "normal", "relaxed", "loose"].includes(e)
81
+ },
82
+ // Letter spacing
83
+ tracking: {
84
+ type: String,
85
+ default: null,
86
+ validator: (e) => ["tighter", "tight", "normal", "wide", "wider", "widest"].includes(e)
87
+ },
88
+ // Boolean modifiers
89
+ italic: Boolean,
90
+ underline: Boolean,
91
+ lineThrough: Boolean,
92
+ truncate: Boolean,
93
+ noWrap: Boolean,
94
+ required: Boolean,
95
+ gradient: Boolean,
96
+ // Advanced styling
97
+ maxLines: {
98
+ type: Number,
99
+ default: null
100
+ },
101
+ shadow: {
102
+ type: String,
103
+ default: null,
104
+ validator: (e) => ["sm", "md", "lg", "xl", "2xl"].includes(e)
105
+ },
106
+ // Spacing
107
+ spacing: {
108
+ type: String,
109
+ default: null,
110
+ validator: (e) => ["tight", "normal", "relaxed", "loose"].includes(e)
111
+ },
112
+ // Responsive behavior
113
+ responsive: Boolean,
114
+ // Custom opacity
115
+ opacity: {
116
+ type: Number,
117
+ default: null,
118
+ validator: (e) => e >= 0 && e <= 100
119
+ }
120
+ },
121
+ setup(e) {
122
+ const t = e, i = a(() => ({
123
+ "body-2xs": "p",
124
+ "body-xs": "p",
125
+ "body-sm": "p",
126
+ "body-md": "p",
127
+ "body-lg": "p",
128
+ "body-xl": "p",
129
+ "body-2xl": "p",
130
+ "text-2xs": "h6",
131
+ "text-xs": "h6",
132
+ "text-sm": "h5",
133
+ "text-md": "h4",
134
+ "text-lg": "h3",
135
+ "text-xl": "h2",
136
+ "text-2xl": "h1",
137
+ "display-xs": "h2",
138
+ "display-sm": "h2",
139
+ "display-md": "h1",
140
+ "display-lg": "h1",
141
+ "display-xl": "h1",
142
+ "display-2xl": "h1",
143
+ caption: "span",
144
+ overline: "span",
145
+ label: "label"
146
+ })[t.variant] || "p"), s = a(() => ({
147
+ "body-2xs": "text-[10px] leading-normal",
148
+ "body-xs": "text-xs leading-normal",
149
+ "body-sm": "text-sm leading-relaxed",
150
+ "body-md": "text-base leading-relaxed",
151
+ "body-lg": "text-lg leading-relaxed",
152
+ "body-xl": "text-xl leading-relaxed",
153
+ "body-2xl": "text-2xl leading-relaxed",
154
+ "text-2xs": "text-xs font-semibold leading-snug",
155
+ "text-xs": "text-sm font-semibold leading-snug",
156
+ "text-sm": "text-lg font-semibold leading-snug",
157
+ "text-md": "text-xl font-semibold leading-snug",
158
+ "text-lg": "text-2xl font-bold leading-snug",
159
+ "text-xl": "text-3xl font-bold leading-snug",
160
+ "text-2xl": "text-4xl font-bold leading-snug",
161
+ "display-xs": "text-3xl font-bold leading-tight tracking-tight",
162
+ "display-sm": "text-4xl font-bold leading-tight tracking-tight",
163
+ "display-md": "text-5xl font-bold leading-tight tracking-tight",
164
+ "display-lg": "text-6xl font-bold leading-tight tracking-tight",
165
+ "display-xl": "text-7xl font-bold leading-tight tracking-tighter",
166
+ "display-2xl": "text-8xl font-bold leading-tight tracking-tighter",
167
+ caption: "text-xs leading-normal ui-text",
168
+ overline: "text-xs font-medium uppercase tracking-wider leading-normal",
169
+ label: "text-sm font-medium leading-normal"
170
+ })[t.variant]), r = a(() => t.gradient ? "bg-linear-to-r from-(--ui-primary) to-(--ui-accent) bg-clip-text text-transparent" : {
171
+ default: "ui-text",
172
+ primary: "ui-primary",
173
+ secondary: "ui-text",
174
+ accent: "ui-accent",
175
+ success: "ui-success",
176
+ warning: "ui-warning",
177
+ danger: "ui-danger",
178
+ info: "ui-primary",
179
+ muted: "ui-text",
180
+ disabled: "ui-text",
181
+ white: "ui-text",
182
+ black: "ui-text"
183
+ }[t.color]), o = a(() => ({
184
+ left: "text-left",
185
+ center: "text-center",
186
+ right: "text-right",
187
+ justify: "text-justify"
188
+ })[t.align]), d = a(() => t.weight ? {
189
+ thin: "font-thin",
190
+ extralight: "font-extralight",
191
+ light: "font-light",
192
+ normal: "font-normal",
193
+ medium: "font-medium",
194
+ semibold: "font-semibold",
195
+ bold: "font-bold",
196
+ extrabold: "font-extrabold",
197
+ black: "font-black"
198
+ }[t.weight] : ""), g = a(() => t.transform ? {
199
+ uppercase: "uppercase",
200
+ lowercase: "lowercase",
201
+ capitalize: "capitalize",
202
+ normal: "normal-case"
203
+ }[t.transform] : ""), x = a(() => t.leading ? {
204
+ none: "leading-none",
205
+ tight: "leading-tight",
206
+ snug: "leading-snug",
207
+ normal: "leading-normal",
208
+ relaxed: "leading-relaxed",
209
+ loose: "leading-loose"
210
+ }[t.leading] : ""), u = a(() => t.tracking ? {
211
+ tighter: "tracking-tighter",
212
+ tight: "tracking-tight",
213
+ normal: "tracking-normal",
214
+ wide: "tracking-wide",
215
+ wider: "tracking-wider",
216
+ widest: "tracking-widest"
217
+ }[t.tracking] : ""), c = a(() => t.shadow ? {
218
+ sm: "drop-shadow-sm",
219
+ md: "drop-shadow-md",
220
+ lg: "drop-shadow-lg",
221
+ xl: "drop-shadow-xl",
222
+ "2xl": "drop-shadow-2xl"
223
+ }[t.shadow] : ""), m = a(() => t.spacing ? {
224
+ tight: "mb-1",
225
+ normal: "mb-2",
226
+ relaxed: "mb-4",
227
+ loose: "mb-6"
228
+ }[t.spacing] : ""), p = a(() => t.responsive ? "text-sm sm:text-base md:text-lg lg:text-xl" : ""), h = a(() => t.maxLines ? `line-clamp-${t.maxLines}` : ""), y = a(() => {
229
+ const l = {};
230
+ return t.opacity !== null && (l.opacity = t.opacity / 100), l;
231
+ }), f = a(() => [
232
+ s.value,
233
+ r.value,
234
+ o.value,
235
+ d.value,
236
+ g.value,
237
+ x.value,
238
+ u.value,
239
+ c.value,
240
+ m.value,
241
+ p.value,
242
+ h.value,
243
+ {
244
+ italic: t.italic,
245
+ underline: t.underline,
246
+ "line-through": t.lineThrough,
247
+ truncate: t.truncate && !t.maxLines,
248
+ "whitespace-nowrap": t.noWrap,
249
+ "transition-colors duration-200": !0,
250
+ "select-none": t.variant === "overline" || t.variant === "label"
251
+ }
252
+ ]);
253
+ return (l, _) => (n(), b(v(i.value), w({
254
+ class: f.value,
255
+ style: y.value
256
+ }, l.$attrs), {
257
+ default: k(() => [
258
+ C(l.$slots, "default"),
259
+ e.required ? (n(), B("span", L, "*")) : S("", !0)
260
+ ]),
261
+ _: 3
262
+ }, 16, ["class", "style"]));
263
+ }
264
+ };
265
+ export {
266
+ z as default
267
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),F={key:0,class:"absolute top-3 left-3 z-10 ui-surface border ui-border-strong rounded-md px-2 py-1.5"},Y={class:"flex items-center gap-2"},G={class:"text-xs font-semibold ui-text"},T=["width","height","viewBox"],O={key:0},R=["x1","y1","x2","y2","stroke"],X=["id"],H=["stop-color"],I=["stop-color"],W=["x","y","width","height","fill","onMouseenter","onClick"],j=["to"],q=["from","to"],P=["x","y"],U={key:1},_=["x","y"],J={key:2},K=["x","y"],Q={key:3},Z=["x","y"],ee={key:4},te=["x"],le=["x1","y1","x2","y2"],oe=["x1","y1","x2","y2"],ae={class:"ui--surface ui-text px-4 py-3 rounded-lg shadow-2xl border ui-border-strong min-w-40"},ne={class:"flex items-center gap-2 mb-1"},re={class:"font-semibold text-sm"},se={class:"ml-5"},ie={class:"text-2xl font-bold"},ce={__name:"BarChart",props:{data:{type:Array,required:!0},labels:{type:Array,default:()=>[]},colors:{type:Array,default:()=>["#3b82f6","#ef4444","#10b981","#f59e0b","#8b5cf6"]},width:{type:[Number,String],default:"auto"},height:{type:[Number,String],default:"auto"},padding:{type:Object,default:()=>({top:20,right:20,bottom:60,left:60})},showGrid:{type:Boolean,default:!0},showXAxis:{type:Boolean,default:!0},showYAxis:{type:Boolean,default:!0},gridColor:{type:String,default:"#e5e7eb"},barClasses:{type:String,default:"transition-all duration-200 hover:opacity-90 cursor-pointer"},axisLabelClasses:{type:String,default:"fill-(--ui-text) text-xs font-medium"},maxValue:{type:Number,default:null},xAxisLabel:{type:String,default:""},yAxisLabel:{type:String,default:""},showValues:{type:Boolean,default:!0},valueSuffix:{type:String,default:""},showLegend:{type:Boolean,default:!0},seriesLabel:{type:String,default:""}},emits:["bar-click","bar-hover"],setup(o,{emit:w}){const a=o,k=w,g=e.ref(null),d=e.ref({width:0,height:0});let m=null;const u=e.computed(()=>{const t=Number(a.width);return Number.isFinite(t)&&t>0?t:d.value.width>0?d.value.width:400}),s=e.computed(()=>{const t=Number(a.height);return Number.isFinite(t)&&t>0?t:d.value.height>0?d.value.height:300}),i=e.ref({visible:!1,x:0,y:0,label:"",value:0,color:""}),y=e.computed(()=>a.maxValue||Math.max(...a.data)),c=e.computed(()=>s.value-a.padding.top-a.padding.bottom),b=e.computed(()=>u.value-a.padding.left-a.padding.right),h=e.computed(()=>b.value/a.data.length*.7),B=e.computed(()=>b.value/a.data.length*.3),E=e.computed(()=>{const t=[];for(let l=0;l<=5;l++){const n=a.padding.top+c.value/5*l;t.push(n)}return t}),x=t=>a.padding.left+t*(h.value+B.value)+B.value/2,v=t=>{const r=c.value/y.value;return a.padding.top+c.value-t*r},N=t=>{const r=c.value/y.value;return t*r},f=t=>a.colors[t%a.colors.length],S=t=>(Number(t)||0)<=0?a.padding.top+c.value-6:Math.max(v(t)+18,a.padding.top+16),C=t=>(Number(t)||0)<=0?"fill-(--ui-text) text-[10px] sm:text-xs font-semibold":"fill-white text-[10px] sm:text-xs font-semibold",L=t=>{const r=(s.value-a.padding.bottom-t)/c.value*y.value;return p(Math.round(r))},A=e.computed(()=>a.valueSuffix?a.valueSuffix:String(a.yAxisLabel||"").includes("%")||a.maxValue===100?"%":""),p=t=>`${t}${A.value}`,$=e.computed(()=>a.seriesLabel||a.yAxisLabel||"Series"),z=(t,r,l)=>{const n=a.labels[l]||`Item ${l+1}`;i.value={visible:!0,x:t.clientX,y:t.clientY,label:n,value:r,color:f(l)},k("bar-hover",{value:r,index:l,label:n})},M=()=>{i.value.visible=!1},D=(t,r)=>{const l=a.labels[r]||`Item ${r+1}`;k("bar-click",{value:t,index:r,label:l})};return e.onMounted(()=>{m=new ResizeObserver(t=>{const r=t[0];if(!r)return;const{width:l,height:n}=r.contentRect;d.value={width:Math.round(l),height:Math.round(n)}}),g.value&&m.observe(g.value)}),e.onBeforeUnmount(()=>{m&&m.disconnect()}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:g,class:"ui-surface w-full h-full relative"},[o.showLegend?(e.openBlock(),e.createElementBlock("div",F,[e.createElementVNode("div",Y,[e.createElementVNode("span",{class:"w-2.5 h-2.5 rounded-sm",style:e.normalizeStyle({backgroundColor:f(0)})},null,4),e.createElementVNode("span",G,e.toDisplayString($.value),1)])])):e.createCommentVNode("",!0),(e.openBlock(),e.createElementBlock("svg",{width:u.value,height:s.value,viewBox:`0 0 ${u.value} ${s.value}`,class:"overflow-visible"},[o.showGrid?(e.openBlock(),e.createElementBlock("g",O,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,l=>(e.openBlock(),e.createElementBlock("line",{key:`grid-${l}`,x1:o.padding.left,y1:l,x2:u.value-o.padding.right,y2:l,stroke:o.gridColor,"stroke-width":"1","stroke-dasharray":"4,4",opacity:"0.3"},null,8,R))),128))])):e.createCommentVNode("",!0),e.createElementVNode("defs",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.data,(l,n)=>(e.openBlock(),e.createElementBlock("linearGradient",{id:`barGradient-${n}`,key:`gradient-${n}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":f(n),"stop-opacity":"1"},null,8,H),e.createElementVNode("stop",{offset:"100%","stop-color":f(n),"stop-opacity":"0.7"},null,8,I)],8,X))),128))]),e.createElementVNode("g",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.data,(l,n)=>(e.openBlock(),e.createElementBlock("g",{key:`bar-group-${n}`},[e.createElementVNode("rect",{x:x(n),y:v(l),width:h.value,height:N(l),fill:`url(#barGradient-${n})`,class:e.normalizeClass(o.barClasses),rx:"4",onMouseenter:V=>z(V,l,n),onMouseleave:M,onClick:V=>D(l,n)},[e.createElementVNode("animate",{attributeName:"height",from:0,to:N(l),dur:"0.8s",fill:"freeze"},null,8,j),e.createElementVNode("animate",{attributeName:"y",from:o.padding.top+c.value,to:v(l),dur:"0.8s",fill:"freeze"},null,8,q)],42,W),o.showValues?(e.openBlock(),e.createElementBlock("text",{key:0,x:x(n)+h.value/2,y:S(l),class:e.normalizeClass(C(l)),"text-anchor":"middle"},e.toDisplayString(p(l)),11,P)):e.createCommentVNode("",!0)]))),128))]),o.showXAxis?(e.openBlock(),e.createElementBlock("g",U,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.labels,(l,n)=>(e.openBlock(),e.createElementBlock("text",{key:`xlabel-${n}`,x:x(n)+h.value/2,y:s.value-o.padding.bottom+20,class:e.normalizeClass(o.axisLabelClasses),"text-anchor":"middle"},e.toDisplayString(l),11,_))),128))])):e.createCommentVNode("",!0),o.xAxisLabel?(e.openBlock(),e.createElementBlock("g",J,[e.createElementVNode("text",{x:o.padding.left+b.value/2,y:s.value-10,class:"fill-(--ui-text) text-sm font-semibold","text-anchor":"middle"},e.toDisplayString(o.xAxisLabel),9,K)])):e.createCommentVNode("",!0),o.showYAxis?(e.openBlock(),e.createElementBlock("g",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,l=>(e.openBlock(),e.createElementBlock("text",{key:`ylabel-${l}`,x:o.padding.left-10,y:l+4,class:e.normalizeClass(o.axisLabelClasses),"text-anchor":"end"},e.toDisplayString(L(l)),11,Z))),128))])):e.createCommentVNode("",!0),o.yAxisLabel?(e.openBlock(),e.createElementBlock("g",ee,[e.createElementVNode("text",{x:-(o.padding.top+c.value/2),y:15,class:"fill-(--ui-text) text-sm font-semibold","text-anchor":"middle",transform:"rotate(-90)"},e.toDisplayString(o.yAxisLabel),9,te)])):e.createCommentVNode("",!0),e.createElementVNode("line",{x1:o.padding.left,y1:o.padding.top,x2:o.padding.left,y2:s.value-o.padding.bottom,stroke:"#cbd5e1","stroke-width":"2"},null,8,le),e.createElementVNode("line",{x1:o.padding.left,y1:s.value-o.padding.bottom,x2:u.value-o.padding.right,y2:s.value-o.padding.bottom,stroke:"#cbd5e1","stroke-width":"2"},null,8,oe)],8,T)),i.value.visible?(e.openBlock(),e.createElementBlock("div",{key:1,style:e.normalizeStyle({position:"fixed",left:`${i.value.x}px`,top:`${i.value.y}px`,transform:"translate(-50%, -120%)",pointerEvents:"none",zIndex:9999}),class:"ui-surface-strong animate-in fade-in duration-200"},[e.createElementVNode("div",ae,[e.createElementVNode("div",ne,[e.createElementVNode("div",{style:e.normalizeStyle({backgroundColor:i.value.color}),class:"w-3 h-3 rounded shadow-sm"},null,4),e.createElementVNode("p",re,e.toDisplayString(i.value.label),1)]),e.createElementVNode("div",se,[e.createElementVNode("span",ie,e.toDisplayString(p(i.value.value)),1)]),r[0]||(r[0]=e.createElementVNode("div",{class:"absolute bottom-0 left-1/2 transform -translate-x-1/2 translate-y-1/2 rotate-45 w-2 h-2 ui-surface border-r border-b ui-border-strong"},null,-1))])],4)):e.createCommentVNode("",!0)],512))}};exports.default=ce;
@@ -0,0 +1,323 @@
1
+ import { ref as N, computed as u, onMounted as j, onBeforeUnmount as q, createElementBlock as n, openBlock as r, createCommentVNode as f, createElementVNode as s, normalizeStyle as V, toDisplayString as x, Fragment as y, renderList as v, normalizeClass as k } from "vue";
2
+ const U = {
3
+ key: 0,
4
+ class: "absolute top-3 left-3 z-10 ui-surface border ui-border-strong rounded-md px-2 py-1.5"
5
+ }, J = { class: "flex items-center gap-2" }, K = { class: "text-xs font-semibold ui-text" }, P = ["width", "height", "viewBox"], Q = { key: 0 }, Z = ["x1", "y1", "x2", "y2", "stroke"], _ = ["id"], ee = ["stop-color"], te = ["stop-color"], le = ["x", "y", "width", "height", "fill", "onMouseenter", "onClick"], ae = ["to"], oe = ["from", "to"], se = ["x", "y"], ne = { key: 1 }, re = ["x", "y"], ie = { key: 2 }, ue = ["x", "y"], de = { key: 3 }, ce = ["x", "y"], he = { key: 4 }, fe = ["x"], xe = ["x1", "y1", "x2", "y2"], be = ["x1", "y1", "x2", "y2"], ge = { class: "ui--surface ui-text px-4 py-3 rounded-lg shadow-2xl border ui-border-strong min-w-40" }, ye = { class: "flex items-center gap-2 mb-1" }, ve = { class: "font-semibold text-sm" }, me = { class: "ml-5" }, pe = { class: "text-2xl font-bold" }, ke = {
6
+ __name: "BarChart",
7
+ props: {
8
+ data: {
9
+ type: Array,
10
+ required: !0
11
+ },
12
+ labels: {
13
+ type: Array,
14
+ default: () => []
15
+ },
16
+ colors: {
17
+ type: Array,
18
+ default: () => ["#3b82f6", "#ef4444", "#10b981", "#f59e0b", "#8b5cf6"]
19
+ },
20
+ width: {
21
+ type: [Number, String],
22
+ default: "auto"
23
+ },
24
+ height: {
25
+ type: [Number, String],
26
+ default: "auto"
27
+ },
28
+ padding: {
29
+ type: Object,
30
+ default: () => ({ top: 20, right: 20, bottom: 60, left: 60 })
31
+ },
32
+ showGrid: {
33
+ type: Boolean,
34
+ default: !0
35
+ },
36
+ showXAxis: {
37
+ type: Boolean,
38
+ default: !0
39
+ },
40
+ showYAxis: {
41
+ type: Boolean,
42
+ default: !0
43
+ },
44
+ gridColor: {
45
+ type: String,
46
+ default: "#e5e7eb"
47
+ },
48
+ barClasses: {
49
+ type: String,
50
+ default: "transition-all duration-200 hover:opacity-90 cursor-pointer"
51
+ },
52
+ axisLabelClasses: {
53
+ type: String,
54
+ default: "fill-(--ui-text) text-xs font-medium"
55
+ },
56
+ maxValue: {
57
+ type: Number,
58
+ default: null
59
+ },
60
+ xAxisLabel: {
61
+ type: String,
62
+ default: ""
63
+ },
64
+ yAxisLabel: {
65
+ type: String,
66
+ default: ""
67
+ },
68
+ showValues: {
69
+ type: Boolean,
70
+ default: !0
71
+ },
72
+ valueSuffix: {
73
+ type: String,
74
+ default: ""
75
+ },
76
+ showLegend: {
77
+ type: Boolean,
78
+ default: !0
79
+ },
80
+ seriesLabel: {
81
+ type: String,
82
+ default: ""
83
+ }
84
+ },
85
+ emits: ["bar-click", "bar-hover"],
86
+ setup(l, { emit: R }) {
87
+ const a = l, M = R, L = N(null), b = N({ width: 0, height: 0 });
88
+ let m = null;
89
+ const g = u(() => {
90
+ const e = Number(a.width);
91
+ return Number.isFinite(e) && e > 0 ? e : b.value.width > 0 ? b.value.width : 400;
92
+ }), d = u(() => {
93
+ const e = Number(a.height);
94
+ return Number.isFinite(e) && e > 0 ? e : b.value.height > 0 ? b.value.height : 300;
95
+ }), c = N({
96
+ visible: !1,
97
+ x: 0,
98
+ y: 0,
99
+ label: "",
100
+ value: 0,
101
+ color: ""
102
+ }), S = u(() => a.maxValue || Math.max(...a.data)), h = u(() => d.value - a.padding.top - a.padding.bottom), B = u(() => g.value - a.padding.left - a.padding.right), p = u(() => B.value / a.data.length * 0.7), z = u(() => B.value / a.data.length * 0.3), Y = u(() => {
103
+ const e = [];
104
+ for (let t = 0; t <= 5; t++) {
105
+ const o = a.padding.top + h.value / 5 * t;
106
+ e.push(o);
107
+ }
108
+ return e;
109
+ }), C = (e) => a.padding.left + e * (p.value + z.value) + z.value / 2, A = (e) => {
110
+ const i = h.value / S.value;
111
+ return a.padding.top + h.value - e * i;
112
+ }, G = (e) => {
113
+ const i = h.value / S.value;
114
+ return e * i;
115
+ }, w = (e) => a.colors[e % a.colors.length], T = (e) => (Number(e) || 0) <= 0 ? a.padding.top + h.value - 6 : Math.max(A(e) + 18, a.padding.top + 16), X = (e) => (Number(e) || 0) <= 0 ? "fill-(--ui-text) text-[10px] sm:text-xs font-semibold" : "fill-white text-[10px] sm:text-xs font-semibold", F = (e) => {
116
+ const i = (d.value - a.padding.bottom - e) / h.value * S.value;
117
+ return $(Math.round(i));
118
+ }, H = u(() => a.valueSuffix ? a.valueSuffix : String(a.yAxisLabel || "").includes("%") || a.maxValue === 100 ? "%" : ""), $ = (e) => `${e}${H.value}`, I = u(() => a.seriesLabel || a.yAxisLabel || "Series"), O = (e, i, t) => {
119
+ const o = a.labels[t] || `Item ${t + 1}`;
120
+ c.value = {
121
+ visible: !0,
122
+ x: e.clientX,
123
+ y: e.clientY,
124
+ label: o,
125
+ value: i,
126
+ color: w(t)
127
+ }, M("bar-hover", { value: i, index: t, label: o });
128
+ }, W = () => {
129
+ c.value.visible = !1;
130
+ }, D = (e, i) => {
131
+ const t = a.labels[i] || `Item ${i + 1}`;
132
+ M("bar-click", { value: e, index: i, label: t });
133
+ };
134
+ return j(() => {
135
+ m = new ResizeObserver((e) => {
136
+ const i = e[0];
137
+ if (!i) return;
138
+ const { width: t, height: o } = i.contentRect;
139
+ b.value = {
140
+ width: Math.round(t),
141
+ height: Math.round(o)
142
+ };
143
+ }), L.value && m.observe(L.value);
144
+ }), q(() => {
145
+ m && m.disconnect();
146
+ }), (e, i) => (r(), n("div", {
147
+ ref_key: "containerRef",
148
+ ref: L,
149
+ class: "ui-surface w-full h-full relative"
150
+ }, [
151
+ l.showLegend ? (r(), n("div", U, [
152
+ s("div", J, [
153
+ s("span", {
154
+ class: "w-2.5 h-2.5 rounded-sm",
155
+ style: V({ backgroundColor: w(0) })
156
+ }, null, 4),
157
+ s("span", K, x(I.value), 1)
158
+ ])
159
+ ])) : f("", !0),
160
+ (r(), n("svg", {
161
+ width: g.value,
162
+ height: d.value,
163
+ viewBox: `0 0 ${g.value} ${d.value}`,
164
+ class: "overflow-visible"
165
+ }, [
166
+ l.showGrid ? (r(), n("g", Q, [
167
+ (r(!0), n(y, null, v(Y.value, (t) => (r(), n("line", {
168
+ key: `grid-${t}`,
169
+ x1: l.padding.left,
170
+ y1: t,
171
+ x2: g.value - l.padding.right,
172
+ y2: t,
173
+ stroke: l.gridColor,
174
+ "stroke-width": "1",
175
+ "stroke-dasharray": "4,4",
176
+ opacity: "0.3"
177
+ }, null, 8, Z))), 128))
178
+ ])) : f("", !0),
179
+ s("defs", null, [
180
+ (r(!0), n(y, null, v(l.data, (t, o) => (r(), n("linearGradient", {
181
+ id: `barGradient-${o}`,
182
+ key: `gradient-${o}`,
183
+ x1: "0%",
184
+ y1: "0%",
185
+ x2: "0%",
186
+ y2: "100%"
187
+ }, [
188
+ s("stop", {
189
+ offset: "0%",
190
+ "stop-color": w(o),
191
+ "stop-opacity": "1"
192
+ }, null, 8, ee),
193
+ s("stop", {
194
+ offset: "100%",
195
+ "stop-color": w(o),
196
+ "stop-opacity": "0.7"
197
+ }, null, 8, te)
198
+ ], 8, _))), 128))
199
+ ]),
200
+ s("g", null, [
201
+ (r(!0), n(y, null, v(l.data, (t, o) => (r(), n("g", {
202
+ key: `bar-group-${o}`
203
+ }, [
204
+ s("rect", {
205
+ x: C(o),
206
+ y: A(t),
207
+ width: p.value,
208
+ height: G(t),
209
+ fill: `url(#barGradient-${o})`,
210
+ class: k(l.barClasses),
211
+ rx: "4",
212
+ onMouseenter: (E) => O(E, t, o),
213
+ onMouseleave: W,
214
+ onClick: (E) => D(t, o)
215
+ }, [
216
+ s("animate", {
217
+ attributeName: "height",
218
+ from: 0,
219
+ to: G(t),
220
+ dur: "0.8s",
221
+ fill: "freeze"
222
+ }, null, 8, ae),
223
+ s("animate", {
224
+ attributeName: "y",
225
+ from: l.padding.top + h.value,
226
+ to: A(t),
227
+ dur: "0.8s",
228
+ fill: "freeze"
229
+ }, null, 8, oe)
230
+ ], 42, le),
231
+ l.showValues ? (r(), n("text", {
232
+ key: 0,
233
+ x: C(o) + p.value / 2,
234
+ y: T(t),
235
+ class: k(X(t)),
236
+ "text-anchor": "middle"
237
+ }, x($(t)), 11, se)) : f("", !0)
238
+ ]))), 128))
239
+ ]),
240
+ l.showXAxis ? (r(), n("g", ne, [
241
+ (r(!0), n(y, null, v(l.labels, (t, o) => (r(), n("text", {
242
+ key: `xlabel-${o}`,
243
+ x: C(o) + p.value / 2,
244
+ y: d.value - l.padding.bottom + 20,
245
+ class: k(l.axisLabelClasses),
246
+ "text-anchor": "middle"
247
+ }, x(t), 11, re))), 128))
248
+ ])) : f("", !0),
249
+ l.xAxisLabel ? (r(), n("g", ie, [
250
+ s("text", {
251
+ x: l.padding.left + B.value / 2,
252
+ y: d.value - 10,
253
+ class: "fill-(--ui-text) text-sm font-semibold",
254
+ "text-anchor": "middle"
255
+ }, x(l.xAxisLabel), 9, ue)
256
+ ])) : f("", !0),
257
+ l.showYAxis ? (r(), n("g", de, [
258
+ (r(!0), n(y, null, v(Y.value, (t) => (r(), n("text", {
259
+ key: `ylabel-${t}`,
260
+ x: l.padding.left - 10,
261
+ y: t + 4,
262
+ class: k(l.axisLabelClasses),
263
+ "text-anchor": "end"
264
+ }, x(F(t)), 11, ce))), 128))
265
+ ])) : f("", !0),
266
+ l.yAxisLabel ? (r(), n("g", he, [
267
+ s("text", {
268
+ x: -(l.padding.top + h.value / 2),
269
+ y: 15,
270
+ class: "fill-(--ui-text) text-sm font-semibold",
271
+ "text-anchor": "middle",
272
+ transform: "rotate(-90)"
273
+ }, x(l.yAxisLabel), 9, fe)
274
+ ])) : f("", !0),
275
+ s("line", {
276
+ x1: l.padding.left,
277
+ y1: l.padding.top,
278
+ x2: l.padding.left,
279
+ y2: d.value - l.padding.bottom,
280
+ stroke: "#cbd5e1",
281
+ "stroke-width": "2"
282
+ }, null, 8, xe),
283
+ s("line", {
284
+ x1: l.padding.left,
285
+ y1: d.value - l.padding.bottom,
286
+ x2: g.value - l.padding.right,
287
+ y2: d.value - l.padding.bottom,
288
+ stroke: "#cbd5e1",
289
+ "stroke-width": "2"
290
+ }, null, 8, be)
291
+ ], 8, P)),
292
+ c.value.visible ? (r(), n("div", {
293
+ key: 1,
294
+ style: V({
295
+ position: "fixed",
296
+ left: `${c.value.x}px`,
297
+ top: `${c.value.y}px`,
298
+ transform: "translate(-50%, -120%)",
299
+ pointerEvents: "none",
300
+ zIndex: 9999
301
+ }),
302
+ class: "ui-surface-strong animate-in fade-in duration-200"
303
+ }, [
304
+ s("div", ge, [
305
+ s("div", ye, [
306
+ s("div", {
307
+ style: V({ backgroundColor: c.value.color }),
308
+ class: "w-3 h-3 rounded shadow-sm"
309
+ }, null, 4),
310
+ s("p", ve, x(c.value.label), 1)
311
+ ]),
312
+ s("div", me, [
313
+ s("span", pe, x($(c.value.value)), 1)
314
+ ]),
315
+ i[0] || (i[0] = s("div", { class: "absolute bottom-0 left-1/2 transform -translate-x-1/2 translate-y-1/2 rotate-45 w-2 h-2 ui-surface border-r border-b ui-border-strong" }, null, -1))
316
+ ])
317
+ ], 4)) : f("", !0)
318
+ ], 512));
319
+ }
320
+ };
321
+ export {
322
+ ke as default
323
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),W=["width","height","viewBox"],O={key:0},H=["x1","y1","x2","y2","stroke"],j=["d","stroke","stroke-width"],q={key:1},G=["cx","cy","r","fill","stroke","onMouseenter"],U={key:2},Z=["x","y"],I=["d","fill","fill-opacity"],J={key:4},K=["x","y","text-anchor","transform"],Q={key:5},_=["x","y"],ee={key:6},te=["x","y","width","height","fill","stroke"],le=["x","y"],ae={__name:"LineChart",props:{data:{type:Array,required:!0},labels:{type:Array,default:()=>[]},width:{type:[Number,String],default:"auto"},height:{type:[Number,String],default:"auto"},padding:{type:Object,default:()=>({top:20,right:20,bottom:60,left:60})},showGrid:{type:Boolean,default:!0},showXAxis:{type:Boolean,default:!0},showYAxis:{type:Boolean,default:!0},showPoints:{type:Boolean,default:!0},showValues:{type:Boolean,default:!0},valueSuffix:{type:String,default:""},fillArea:{type:Boolean,default:!1},gridColor:{type:String,default:"#e5e7eb"},lineColor:{type:String,default:"#3b82f6"},strokeWidth:{type:Number,default:2},pointRadius:{type:Number,default:4},pointColor:{type:String,default:"#ffffff"},fillColor:{type:String,default:"#3b82f6"},fillOpacity:{type:Number,default:.1},lineClasses:{type:String,default:"transition-all duration-200"},pointClasses:{type:String,default:"transition-all duration-200 hover:r-6 cursor-pointer"},axisLabelClasses:{type:String,default:"fill-(--ui-text) text-xs font-medium"},autoSkipXAxisLabels:{type:Boolean,default:!0},minLabelSpacing:{type:Number,default:72},maxLabelLength:{type:Number,default:16},rotateLabelsWhenDense:{type:Boolean,default:!0},labelRotationDegrees:{type:Number,default:-35},tooltipBackground:{type:String,default:"#1f2937"},tooltipBorder:{type:String,default:"#374151"},tooltipTextClasses:{type:String,default:"fill-white text-xs font-semibold"},maxValue:{type:Number,default:null}},emits:["point-click","point-hover"],setup(n,{emit:C}){const l=n,N=C,f=e.ref(null),d=e.ref({width:0,height:0});let m=null;const i=e.ref({visible:!1,x:0,y:0,width:0,height:0,content:""}),h=e.computed(()=>{const t=Number(l.width);return Number.isFinite(t)&&t>0?t:d.value.width>0?d.value.width:400}),s=e.computed(()=>{const t=Number(l.height);return Number.isFinite(t)&&t>0?t:d.value.height>0?d.value.height:300}),p=e.computed(()=>{if(l.maxValue&&l.maxValue>0)return l.maxValue;const t=l.data.map(o=>Number(o)||0),a=Math.max(0,...t);return a>0?a:1}),u=e.computed(()=>l.data.map((t,a)=>({x:v(a),y:X(t),value:t}))),M=e.computed(()=>u.value.length===0?"":u.value.map((a,o)=>`${o===0?"M":"L"} ${a.x} ${a.y}`).join(" ")),$=e.computed(()=>{if(u.value.length===0)return"";const t=u.value.map((r,c)=>`${c===0?"M":"L"} ${r.x} ${r.y}`).join(" "),a=s.value-l.padding.bottom,o=`L ${u.value[u.value.length-1].x} ${a} L ${u.value[0].x} ${a} Z`;return t+" "+o}),y=e.computed(()=>{const t=[],a=s.value-l.padding.top-l.padding.bottom,o=5;for(let r=0;r<=o;r++){const c=l.padding.top+a/o*r;t.push(c)}return t}),b=e.computed(()=>h.value-l.padding.left-l.padding.right),k=e.computed(()=>{if(!l.autoSkipXAxisLabels||!l.labels.length)return 1;const t=Math.max(1,Math.floor(b.value/Math.max(1,l.minLabelSpacing)));return Math.max(1,Math.ceil(l.labels.length/t))}),g=e.computed(()=>l.rotateLabelsWhenDense?k.value>1:!1),B=e.computed(()=>s.value-l.padding.bottom+(g.value?28:20)),E=e.computed(()=>g.value?"end":"middle"),L=e.computed(()=>{const t=l.padding.left,a=h.value-l.padding.right-i.value.width,o=i.value.x-i.value.width/2;return Math.min(Math.max(o,t),Math.max(t,a))}),w=e.computed(()=>{const t=i.value.y-i.value.height-10,a=l.padding.top+4;return Math.max(t,a)}),V=e.computed(()=>L.value+i.value.width/2),A=e.computed(()=>w.value+i.value.height/2+.5),v=t=>{const a=b.value/(l.data.length-1||1);return l.padding.left+t*a},X=t=>{const a=s.value-l.padding.top-l.padding.bottom,o=a/p.value;return l.padding.top+a-t*o},D=t=>{const a=s.value-l.padding.top-l.padding.bottom,o=(s.value-l.padding.bottom-t)/a*p.value;return x(Math.round(o))},x=t=>`${t}${l.valueSuffix}`,R=(t,a)=>{const o=l.labels[a]||`Point ${a+1}`,r=Number(t.value),c=Number.isFinite(r)?r.toLocaleString():String(t.value??0),S=`${o}: ${x(c)}`,T=Math.min(280,Math.max(120,S.length*7.2+20));i.value={visible:!0,x:Number(t.x)||0,y:Number(t.y)||0,width:T,height:28,content:S},N("point-hover",{value:t.value,index:a,label:o})},Y=()=>{i.value.visible=!1},P=t=>!l.autoSkipXAxisLabels||l.labels.length<=2?!0:t%k.value===0||t===l.labels.length-1,z=t=>{const a=String(t??"");return a?!l.maxLabelLength||l.maxLabelLength<=0||a.length<=l.maxLabelLength?a:`${a.slice(0,Math.max(1,l.maxLabelLength-1))}…`:""},F=t=>{if(!g.value)return;const a=v(t),o=B.value;return`rotate(${l.labelRotationDegrees} ${a} ${o})`};return e.onMounted(()=>{m=new ResizeObserver(t=>{const a=t[0];if(!a)return;const{width:o,height:r}=a.contentRect;d.value={width:Math.round(o),height:Math.round(r)}}),f.value&&m.observe(f.value)}),e.onBeforeUnmount(()=>{m&&m.disconnect()}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:f,class:"ui-surface w-full h-full"},[(e.openBlock(),e.createElementBlock("svg",{width:h.value,height:s.value,viewBox:`0 0 ${h.value} ${s.value}`,class:"block mx-auto overflow-visible"},[n.showGrid?(e.openBlock(),e.createElementBlock("g",O,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,o=>(e.openBlock(),e.createElementBlock("line",{key:`grid-${o}`,x1:n.padding.left,y1:o,x2:h.value-n.padding.right,y2:o,stroke:n.gridColor,"stroke-width":"1","stroke-dasharray":"2,2"},null,8,H))),128))])):e.createCommentVNode("",!0),e.createElementVNode("path",{d:M.value,stroke:n.lineColor,"stroke-width":n.strokeWidth,fill:"none",class:e.normalizeClass(n.lineClasses)},null,10,j),n.showPoints?(e.openBlock(),e.createElementBlock("g",q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(o,r)=>(e.openBlock(),e.createElementBlock("circle",{key:`point-${r}`,cx:o.x,cy:o.y,r:n.pointRadius,fill:n.pointColor,stroke:n.lineColor,"stroke-width":2,class:e.normalizeClass(n.pointClasses),onMouseenter:c=>R(o,r),onMouseleave:Y},null,42,G))),128))])):e.createCommentVNode("",!0),n.showValues?(e.openBlock(),e.createElementBlock("g",U,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(o,r)=>(e.openBlock(),e.createElementBlock("text",{key:`value-${r}`,x:o.x,y:o.y-10,class:"fill-(--ui-text) text-[10px] font-semibold","text-anchor":"middle"},e.toDisplayString(x(o.value)),9,Z))),128))])):e.createCommentVNode("",!0),n.fillArea?(e.openBlock(),e.createElementBlock("path",{key:3,d:$.value,fill:n.fillColor,"fill-opacity":n.fillOpacity},null,8,I)):e.createCommentVNode("",!0),n.showXAxis?(e.openBlock(),e.createElementBlock("g",J,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.labels,(o,r)=>e.withDirectives((e.openBlock(),e.createElementBlock("text",{key:`xlabel-${r}`,x:v(r),y:B.value,class:e.normalizeClass(n.axisLabelClasses),"text-anchor":E.value,transform:F(r)},e.toDisplayString(z(o)),11,K)),[[e.vShow,P(r)]])),128))])):e.createCommentVNode("",!0),n.showYAxis?(e.openBlock(),e.createElementBlock("g",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,o=>(e.openBlock(),e.createElementBlock("text",{key:`ylabel-${o}`,x:n.padding.left-10,y:o+4,class:e.normalizeClass(n.axisLabelClasses),"text-anchor":"end"},e.toDisplayString(D(o)),11,_))),128))])):e.createCommentVNode("",!0),i.value.visible?(e.openBlock(),e.createElementBlock("g",ee,[e.createElementVNode("rect",{x:L.value,y:w.value,width:i.value.width,height:i.value.height,fill:n.tooltipBackground,stroke:n.tooltipBorder,"stroke-width":"1",rx:"4"},null,8,te),e.createElementVNode("text",{x:V.value,y:A.value,class:e.normalizeClass(n.tooltipTextClasses),"text-anchor":"middle","dominant-baseline":"middle"},e.toDisplayString(i.value.content),11,le)])):e.createCommentVNode("",!0)],8,W))],512))}};exports.default=ae;