@frollo/frollo-web-ui 0.0.9 → 0.0.12

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.
@@ -1716,7 +1716,18 @@ var script$2 = defineComponent({
1716
1716
  type: String,
1717
1717
  "default": 'primary',
1718
1718
  validator: function validator(value) {
1719
- return ['primary', 'secondary', 'tertiary', 'error', 'success', 'text'].includes(value);
1719
+ return ['primary', 'secondary', 'tertiary', 'error', 'success', 'link', 'text'].includes(value);
1720
+ }
1721
+ },
1722
+
1723
+ /**
1724
+ * The type attribute of the button
1725
+ */
1726
+ buttonType: {
1727
+ type: String,
1728
+ "default": 'button',
1729
+ validator: function validator(value) {
1730
+ return ['button', 'submit', 'reset'].includes(value);
1720
1731
  }
1721
1732
  }
1722
1733
  },
@@ -1725,32 +1736,37 @@ var script$2 = defineComponent({
1725
1736
  primary: {
1726
1737
  text: 'text-tertiary hover:text-primary active:text-primary',
1727
1738
  background: 'bg-primary hover:bg-tertiary active:bg-tertiary',
1728
- border: 'border-primary focus:ring-primary'
1739
+ border: 'border-primary focus-visible:ring-primary'
1729
1740
  },
1730
1741
  secondary: {
1731
1742
  text: 'text-primary hover:text-tertiary active:text-tertiary',
1732
1743
  background: 'bg-tertiary hover:bg-primary active:bg-primary',
1733
- border: 'border-primary focus:ring-primary'
1744
+ border: 'border-primary focus-visible:ring-primary'
1734
1745
  },
1735
1746
  tertiary: {
1736
1747
  text: 'text-tertiary hover:text-secondary active:text-secondary',
1737
1748
  background: 'bg-secondary hover:bg-tertiary active:bg-tertiary',
1738
- border: 'border-tertiary focus:ring-tertiary'
1749
+ border: 'border-secondary focus-visible:ring-secondary'
1739
1750
  },
1740
1751
  success: {
1741
1752
  text: 'text-white hover:text-success active:text-success',
1742
1753
  background: 'bg-success hover:bg-white active:bg-white',
1743
- border: 'border-success focus:ring-success'
1754
+ border: 'border-success focus-visible:ring-success'
1744
1755
  },
1745
1756
  error: {
1746
1757
  text: 'text-white hover:text-error active:text-error',
1747
1758
  background: 'bg-error hover:bg-white active:bg-white',
1748
- border: 'border-error focus:ring-error'
1759
+ border: 'border-error focus-visible:ring-error'
1760
+ },
1761
+ link: {
1762
+ text: 'text-primary font-normal underline hover:no-underline active:no-underline focus-visible:no-underline',
1763
+ background: '',
1764
+ border: 'border-none rounded-none focus-visible:ring-primary'
1749
1765
  },
1750
1766
  text: {
1751
1767
  text: 'text-body font-medium hover:text-white active:text-white',
1752
1768
  background: 'bg-white hover:bg-body active:bg-body',
1753
- border: 'border-transparent focus:ring-body'
1769
+ border: 'border-transparent focus-visible:ring-body'
1754
1770
  }
1755
1771
  });
1756
1772
  var sizes = ref({
@@ -1834,8 +1850,8 @@ var script$2 = defineComponent({
1834
1850
 
1835
1851
  function render$2(_ctx, _cache, $props, $setup, $data, $options) {
1836
1852
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.tagName), {
1837
- "class": normalizeClass(["fw-button font-bold cursor-pointer whitespace-nowrap rounded-full border-2 focus:outline-none ring-offset-2 focus:ring", [_ctx.textColorClass, _ctx.bgColorClass, _ctx.sizeClass, _ctx.borderClass]]),
1838
- type: _ctx.tagName === 'button' ? _ctx.tagName : null,
1853
+ "class": normalizeClass(["fw-button font-bold cursor-pointer whitespace-nowrap rounded-full border-2 focus:outline-0 focus-visible:outline-0 focus:ring-none ring-offset-2 focus-visible:ring", [_ctx.textColorClass, _ctx.bgColorClass, _ctx.sizeClass, _ctx.borderClass, _ctx.variant === 'link' ? 'pl-0 pr-0 pt-0 pb-0' : '']]),
1854
+ type: _ctx.tagName === 'button' ? _ctx.buttonType : null,
1839
1855
  to: _ctx.to ? _ctx.to : null,
1840
1856
  href: _ctx.href ? _ctx.href : null,
1841
1857
  tabindex: _ctx.to ? 0 : null,
@@ -1969,7 +1985,7 @@ var _hoisted_11$1 = {
1969
1985
  key: 0,
1970
1986
  "class": "fw-nav-menu--mobile min-h-screen top-0 left-0 pt-20 absolute w-full flex flex-col justify-between px-2 bg-white shadow-md pb-3 space-y-1"
1971
1987
  };
1972
- var _hoisted_12 = {
1988
+ var _hoisted_12$1 = {
1973
1989
  "class": "w-full flex flex-col"
1974
1990
  };
1975
1991
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
@@ -2020,7 +2036,7 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
2020
2036
  "default": withCtx(function () {
2021
2037
  var _ctx$menuItems2;
2022
2038
 
2023
- return [((_ctx$menuItems2 = _ctx.menuItems) === null || _ctx$menuItems2 === void 0 ? void 0 : _ctx$menuItems2.length) > 0 && _ctx.isMobileMenuOpen ? (openBlock(), createElementBlock("div", _hoisted_11$1, [createElementVNode("div", _hoisted_12, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.menuItems, function (item, i) {
2039
+ return [((_ctx$menuItems2 = _ctx.menuItems) === null || _ctx$menuItems2 === void 0 ? void 0 : _ctx$menuItems2.length) > 0 && _ctx.isMobileMenuOpen ? (openBlock(), createElementBlock("div", _hoisted_11$1, [createElementVNode("div", _hoisted_12$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.menuItems, function (item, i) {
2024
2040
  return openBlock(), createBlock(_component_FwButton, {
2025
2041
  key: i,
2026
2042
  "class": "w-full rounded-md px-2",
@@ -5247,6 +5263,21 @@ var script = defineComponent({
5247
5263
  */
5248
5264
  rules: {
5249
5265
  type: [String, Object, Function]
5266
+ },
5267
+
5268
+ /**
5269
+ * Converts the input into a readonly disabled field
5270
+ */
5271
+ readonly: {
5272
+ type: Boolean,
5273
+ "default": false
5274
+ },
5275
+
5276
+ /**
5277
+ * The hint text shown below the input
5278
+ */
5279
+ hint: {
5280
+ type: String
5250
5281
  }
5251
5282
  },
5252
5283
  setup: function setup(props, ctx) {
@@ -5298,21 +5329,23 @@ var _hoisted_1 = {
5298
5329
  var _hoisted_2 = {
5299
5330
  "class": "flex flex-col"
5300
5331
  };
5301
- var _hoisted_3 = ["for"];
5302
- var _hoisted_4 = {
5303
- "class": "relative"
5332
+ var _hoisted_3 = {
5333
+ "class": "flex flex-row justify-between"
5304
5334
  };
5335
+ var _hoisted_4 = ["for"];
5305
5336
  var _hoisted_5 = {
5306
- key: 0,
5307
- "class": "flex text-grey-base absolute w-9 h-full inset-y-0 left-0 items-center pl-3 pointer-events-none"
5337
+ key: 1
5338
+ };
5339
+ var _hoisted_6 = {
5340
+ "class": "relative"
5308
5341
  };
5309
- var _hoisted_6 = ["placeholder", "type"];
5310
5342
  var _hoisted_7 = {
5311
5343
  key: 0,
5312
- "class": "flex text-error absolute w-9 h-full inset-y-0 right-0 items-center pr-3 pointer-events-none"
5344
+ "class": "flex text-black absolute w-9 h-full inset-y-0 left-0 items-center pl-3 pointer-events-none"
5313
5345
  };
5346
+ var _hoisted_8 = ["placeholder", "type", "readonly", "disabled"];
5314
5347
 
5315
- var _hoisted_8 = /*#__PURE__*/createElementVNode("svg", {
5348
+ var _hoisted_9 = /*#__PURE__*/createElementVNode("svg", {
5316
5349
  fill: "currentColor",
5317
5350
  "aria-hidden": "true",
5318
5351
  focusable: "false",
@@ -5323,12 +5356,20 @@ var _hoisted_8 = /*#__PURE__*/createElementVNode("svg", {
5323
5356
  d: "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8\n 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36\n 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4\n 400 256 400z"
5324
5357
  })], -1);
5325
5358
 
5326
- var _hoisted_9 = [_hoisted_8];
5327
- var _hoisted_10 = {
5328
- "class": "text-error text-right text-sm font-medium mt-2 min-h-[21px]"
5329
- };
5359
+ var _hoisted_10 = [_hoisted_9];
5330
5360
  var _hoisted_11 = {
5331
- key: 0
5361
+ key: 1,
5362
+ "class": "flex text-black absolute w-10 h-full inset-y-0 right-0 items-center pr-3"
5363
+ };
5364
+ var _hoisted_12 = {
5365
+ "class": "italic text-right text-sm font-medium mt-2 min-h-[21px]"
5366
+ };
5367
+ var _hoisted_13 = {
5368
+ key: 0,
5369
+ "class": "text-error"
5370
+ };
5371
+ var _hoisted_14 = {
5372
+ key: 1
5332
5373
  };
5333
5374
  function render(_ctx, _cache, $props, $setup, $data, $options) {
5334
5375
  var _component_InputField = resolveComponent("InputField");
@@ -5343,30 +5384,38 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
5343
5384
  }, {
5344
5385
  "default": withCtx(function (_ref) {
5345
5386
  var field = _ref.field,
5387
+ errors = _ref.errors,
5346
5388
  errorMessage = _ref.errorMessage,
5347
5389
  meta = _ref.meta;
5348
- return [createElementVNode("div", _hoisted_2, [_ctx.label ? (openBlock(), createElementBlock("label", {
5390
+ return [createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [_ctx.label ? (openBlock(), createElementBlock("label", {
5349
5391
  key: 0,
5350
5392
  "for": _ctx.name,
5351
5393
  "class": "block mb-2"
5352
- }, toDisplayString(_ctx.label), 9, _hoisted_3)) : createCommentVNode("", true), createElementVNode("div", _hoisted_4, [_ctx.$slots.prefixIcon ? (openBlock(), createElementBlock("div", _hoisted_5, [renderSlot(_ctx.$slots, "prefixIcon")])) : createCommentVNode("", true), createElementVNode("input", mergeProps(field, {
5394
+ }, toDisplayString(_ctx.label), 9, _hoisted_4)) : createCommentVNode("", true), _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)]), createElementVNode("div", _hoisted_6, [_ctx.$slots.prefix ? (openBlock(), createElementBlock("div", _hoisted_7, [renderSlot(_ctx.$slots, "prefix")])) : createCommentVNode("", true), createElementVNode("input", mergeProps(field, {
5353
5395
  placeholder: _ctx.placeholder,
5354
5396
  type: _ctx.type,
5397
+ readonly: _ctx.readonly,
5398
+ disabled: _ctx.readonly,
5355
5399
  "class": ["border-2 border-grey-lightest rounded-lg focus:outline-none focus:ring-2 focus:ring-primary block w-full p-2.5", {
5356
- 'pl-10': !!_ctx.$slots.prefixIcon
5400
+ 'pl-10': !!_ctx.$slots.prefix,
5401
+ 'pr-20': !!_ctx.$slots.suffix
5357
5402
  }]
5358
- }), null, 16, _hoisted_6), createVNode(Transition, {
5359
- name: "errorFadeIn"
5403
+ }), null, 16, _hoisted_8), createVNode(Transition, {
5404
+ name: "fwFadeIn"
5360
5405
  }, {
5361
5406
  "default": withCtx(function () {
5362
- return [errorMessage && meta.touched ? (openBlock(), createElementBlock("div", _hoisted_7, _hoisted_9)) : createCommentVNode("", true)];
5407
+ return [(errorMessage || errors[0]) && meta.touched ? (openBlock(), createElementBlock("div", {
5408
+ key: 0,
5409
+ "class": normalizeClass(["flex text-error absolute w-9 h-full inset-y-0 right-0 items-center pr-3 pointer-events-none", _ctx.$slots.suffix ? 'mr-8' : ''])
5410
+ }, _hoisted_10, 2)) : createCommentVNode("", true)];
5363
5411
  }),
5364
5412
  _: 2
5365
- }, 1024)]), createElementVNode("div", _hoisted_10, [createVNode(Transition, {
5366
- name: "errorFadeIn"
5413
+ }, 1024), _ctx.$slots.suffix ? (openBlock(), createElementBlock("div", _hoisted_11, [renderSlot(_ctx.$slots, "suffix")])) : createCommentVNode("", true)]), createElementVNode("div", _hoisted_12, [createVNode(Transition, {
5414
+ name: "fwFadeIn",
5415
+ mode: "out-in"
5367
5416
  }, {
5368
5417
  "default": withCtx(function () {
5369
- return [errorMessage && meta.touched ? (openBlock(), createElementBlock("span", _hoisted_11, toDisplayString(errorMessage), 1)) : createCommentVNode("", true)];
5418
+ return [(errorMessage || errors[0]) && meta.touched ? (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString(errorMessage || errors[0]), 1)) : _ctx.hint ? (openBlock(), createElementBlock("span", _hoisted_14, toDisplayString(_ctx.hint), 1)) : createCommentVNode("", true)];
5370
5419
  }),
5371
5420
  _: 2
5372
5421
  }, 1024)])])];
@@ -5375,8 +5424,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
5375
5424
  }, 8, ["modelValue", "name", "rules"])]);
5376
5425
  }
5377
5426
 
5378
- var css_248z = ".errorFadeIn-enter-active{-webkit-animation:errorFadeIn .35s;animation:errorFadeIn .35s;-webkit-transition:opacity .35s ease-in;-o-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.errorFadeIn-leave-active{animation:errorFadeIn .35s reverse;-webkit-transition:opacity .35s ease-out;-o-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes errorFadeIn{0%{opacity:0}to{opacity:1}}@keyframes errorFadeIn{0%{opacity:0}to{opacity:1}}";
5379
- var stylesheet = ".errorFadeIn-enter-active{-webkit-animation:errorFadeIn .35s;animation:errorFadeIn .35s;-webkit-transition:opacity .35s ease-in;-o-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.errorFadeIn-leave-active{animation:errorFadeIn .35s reverse;-webkit-transition:opacity .35s ease-out;-o-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes errorFadeIn{0%{opacity:0}to{opacity:1}}@keyframes errorFadeIn{0%{opacity:0}to{opacity:1}}";
5427
+ var css_248z = ".fwFadeIn-enter-active{-webkit-animation:fwFadeIn .35s;animation:fwFadeIn .35s;-webkit-transition:opacity .35s ease-in;-o-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.fwFadeIn-leave-active{animation:fwFadeIn .35s reverse;-webkit-transition:opacity .35s ease-out;-o-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes fwFadeIn{0%{opacity:0}to{opacity:1}}@keyframes fwFadeIn{0%{opacity:0}to{opacity:1}}";
5428
+ var stylesheet = ".fwFadeIn-enter-active{-webkit-animation:fwFadeIn .35s;animation:fwFadeIn .35s;-webkit-transition:opacity .35s ease-in;-o-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.fwFadeIn-leave-active{animation:fwFadeIn .35s reverse;-webkit-transition:opacity .35s ease-out;-o-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes fwFadeIn{0%{opacity:0}to{opacity:1}}@keyframes fwFadeIn{0%{opacity:0}to{opacity:1}}";
5380
5429
  styleInject(css_248z);
5381
5430
 
5382
5431
  script.render = render;
@@ -5386,6 +5435,7 @@ var components = /*#__PURE__*/Object.freeze({
5386
5435
  FwCard: script$3,
5387
5436
  FwButton: script$2,
5388
5437
  FwNavigationMenu: script$1,
5438
+ FwForm: Form,
5389
5439
  FwInput: script
5390
5440
  });
5391
5441
 
@@ -5399,4 +5449,4 @@ var install = function install(app) {
5399
5449
  });
5400
5450
  };
5401
5451
 
5402
- export { script$2 as FwButton, script$3 as FwCard, script as FwInput, script$1 as FwNavigationMenu, install as default };
5452
+ export { script$2 as FwButton, script$3 as FwCard, Form as FwForm, script as FwInput, script$1 as FwNavigationMenu, install as default };
@@ -0,0 +1,3 @@
1
+ <svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 -64 640 640">
2
+ <path d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"/>
3
+ </svg>
package/icons/eye.svg ADDED
@@ -0,0 +1,8 @@
1
+ <svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 612 612">
2
+ <g>
3
+ <g>
4
+ <path d="M609.608,315.426c3.19-5.874,3.19-12.979,0-18.853c-58.464-107.643-172.5-180.72-303.607-180.72 S60.857,188.931,2.393,296.573c-3.19,5.874-3.19,12.979,0,18.853C60.858,423.069,174.892,496.147,306,496.147 S551.143,423.069,609.608,315.426z M306,451.855c-80.554,0-145.855-65.302-145.855-145.855S225.446,160.144,306,160.144 S451.856,225.446,451.856,306S386.554,451.855,306,451.855z"/>
5
+ <path d="M306,231.67c-6.136,0-12.095,0.749-17.798,2.15c5.841,6.76,9.383,15.563,9.383,25.198c0,21.3-17.267,38.568-38.568,38.568 c-9.635,0-18.438-3.541-25.198-9.383c-1.401,5.703-2.15,11.662-2.15,17.798c0,41.052,33.279,74.33,74.33,74.33 s74.33-33.279,74.33-74.33S347.052,231.67,306,231.67z"/>
6
+ </g>
7
+ </g>
8
+ </svg>
package/icons/index.ts CHANGED
@@ -4,6 +4,9 @@ import ManageSvg from './manage.svg';
4
4
  import NotFoundSvg from './not-found.svg';
5
5
  import EmailFilledSvg from './email-filled.svg';
6
6
  import AlertSvg from './alert.svg';
7
+ import LockSvg from './lock.svg';
8
+ import EyeSvg from './eye.svg';
9
+ import EyeCrossedSvg from './eye-crossed.svg';
7
10
 
8
11
  export {
9
12
  ViewSvg,
@@ -11,5 +14,8 @@ export {
11
14
  ManageSvg,
12
15
  NotFoundSvg,
13
16
  EmailFilledSvg,
14
- AlertSvg
17
+ AlertSvg,
18
+ LockSvg,
19
+ EyeSvg,
20
+ EyeCrossedSvg
15
21
  };
package/icons/lock.svg ADDED
@@ -0,0 +1,3 @@
1
+ <svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
2
+ <path d="M17,9V7c0-2.8-2.2-5-5-5S7,4.2,7,7v2c-1.7,0-3,1.3-3,3v7c0,1.7,1.3,3,3,3h10c1.7,0,3-1.3,3-3v-7C20,10.3,18.7,9,17,9z M9,7c0-1.7,1.3-3,3-3s3,1.3,3,3v2H9V7z"/>
3
+ </svg>
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as vue from 'vue';
2
2
  import { PropType, Plugin } from 'vue';
3
+ export { Form as FwForm } from 'vee-validate';
3
4
 
4
5
  declare const _default$3: vue.DefineComponent<{
5
6
  /**
@@ -51,7 +52,7 @@ declare const _default$3: vue.DefineComponent<{
51
52
  href: StringConstructor;
52
53
  }>>, {}>;
53
54
 
54
- declare type ButtonVariantName = 'primary' | 'secondary' | 'tertiary' | 'error' | 'success' | 'text';
55
+ declare type ButtonVariantName = 'primary' | 'secondary' | 'tertiary' | 'error' | 'success' | 'text' | 'link';
55
56
  interface ButtonDefinition {
56
57
  text: string;
57
58
  background: string;
@@ -64,11 +65,13 @@ declare type ButtonSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
64
65
  declare type ButtonSizes = {
65
66
  [key in ButtonSize]: string;
66
67
  };
68
+ declare type ButtonTypeAttribute = 'button' | 'submit' | 'reset';
67
69
  interface FwButtonProps {
68
70
  to?: string | object;
69
71
  href?: string;
70
72
  size?: ButtonSize;
71
73
  variant?: ButtonVariantName;
74
+ buttonType?: ButtonTypeAttribute;
72
75
  }
73
76
  declare const _default$2: vue.DefineComponent<{
74
77
  /**
@@ -98,6 +101,14 @@ declare const _default$2: vue.DefineComponent<{
98
101
  default: string;
99
102
  validator: (value: string) => boolean;
100
103
  };
104
+ /**
105
+ * The type attribute of the button
106
+ */
107
+ buttonType: {
108
+ type: PropType<ButtonTypeAttribute>;
109
+ default: string;
110
+ validator: (value: string) => boolean;
111
+ };
101
112
  }, {
102
113
  textColorClass: vue.ComputedRef<string>;
103
114
  bgColorClass: vue.ComputedRef<string>;
@@ -108,7 +119,7 @@ declare const _default$2: vue.DefineComponent<{
108
119
  onMouseout: (this: GlobalEventHandlers, ev: MouseEvent) => any;
109
120
  onFocusin: (this: GlobalEventHandlers, ev: FocusEvent) => any;
110
121
  onFocusout: (this: GlobalEventHandlers, ev: FocusEvent) => any;
111
- tagName: vue.ComputedRef<"router-link" | "a" | "button">;
122
+ tagName: vue.ComputedRef<"button" | "router-link" | "a">;
112
123
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("click" | "mouseover" | "mouseout" | "focusin" | "focusout")[], "click" | "mouseover" | "mouseout" | "focusin" | "focusout", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
113
124
  /**
114
125
  * A `router-link` path or object
@@ -137,6 +148,14 @@ declare const _default$2: vue.DefineComponent<{
137
148
  default: string;
138
149
  validator: (value: string) => boolean;
139
150
  };
151
+ /**
152
+ * The type attribute of the button
153
+ */
154
+ buttonType: {
155
+ type: PropType<ButtonTypeAttribute>;
156
+ default: string;
157
+ validator: (value: string) => boolean;
158
+ };
140
159
  }>> & {
141
160
  onClick?: ((...args: any[]) => any) | undefined;
142
161
  onMouseover?: ((...args: any[]) => any) | undefined;
@@ -146,6 +165,7 @@ declare const _default$2: vue.DefineComponent<{
146
165
  }, {
147
166
  size: ButtonSize;
148
167
  variant: ButtonVariantName;
168
+ buttonType: ButtonTypeAttribute;
149
169
  }>;
150
170
 
151
171
  interface NavMenuItem {
@@ -199,6 +219,8 @@ interface FwInputProps {
199
219
  label?: string;
200
220
  placeholder?: string;
201
221
  rules?: string | object | Function;
222
+ readonly?: boolean;
223
+ hint?: string;
202
224
  }
203
225
  declare const _default: vue.DefineComponent<{
204
226
  /**
@@ -242,6 +264,19 @@ declare const _default: vue.DefineComponent<{
242
264
  rules: {
243
265
  type: (StringConstructor | ObjectConstructor | FunctionConstructor)[];
244
266
  };
267
+ /**
268
+ * Converts the input into a readonly disabled field
269
+ */
270
+ readonly: {
271
+ type: BooleanConstructor;
272
+ default: boolean;
273
+ };
274
+ /**
275
+ * The hint text shown below the input
276
+ */
277
+ hint: {
278
+ type: StringConstructor;
279
+ };
245
280
  }, {
246
281
  inputValue: vue.WritableComputedRef<string>;
247
282
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
@@ -286,16 +321,30 @@ declare const _default: vue.DefineComponent<{
286
321
  rules: {
287
322
  type: (StringConstructor | ObjectConstructor | FunctionConstructor)[];
288
323
  };
324
+ /**
325
+ * Converts the input into a readonly disabled field
326
+ */
327
+ readonly: {
328
+ type: BooleanConstructor;
329
+ default: boolean;
330
+ };
331
+ /**
332
+ * The hint text shown below the input
333
+ */
334
+ hint: {
335
+ type: StringConstructor;
336
+ };
289
337
  }>> & {
290
338
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
291
339
  }, {
292
340
  modelValue: string;
293
341
  type: InputType;
294
342
  placeholder: string;
343
+ readonly: boolean;
295
344
  }>;
296
345
 
297
346
  declare const install: Exclude<Plugin['install'], undefined>;
298
347
 
299
348
  declare module '@frollo/frollo-web-ui/icons' { }
300
349
 
301
- export { ButtonDefinition, ButtonDefinitionList, ButtonSize, ButtonSizes, ButtonVariantName, _default$2 as FwButton, FwButtonProps, _default$3 as FwCard, _default as FwInput, FwInputProps, _default$1 as FwNavigationMenu, InputType, NavMenuItem, install as default };
350
+ export { ButtonDefinition, ButtonDefinitionList, ButtonSize, ButtonSizes, ButtonTypeAttribute, ButtonVariantName, _default$2 as FwButton, FwButtonProps, _default$3 as FwCard, _default as FwInput, FwInputProps, _default$1 as FwNavigationMenu, InputType, NavMenuItem, install as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frollo/frollo-web-ui",
3
- "version": "0.0.9",
3
+ "version": "0.0.12",
4
4
  "description": "Frollo's UI library for components, utilities and configs",
5
5
  "exports": {
6
6
  "./icons": "./icons/index.ts",
@@ -1,5 +1,5 @@
1
1
  import { PropType } from 'vue';
2
- export declare type ButtonVariantName = 'primary' | 'secondary' | 'tertiary' | 'error' | 'success' | 'text';
2
+ export declare type ButtonVariantName = 'primary' | 'secondary' | 'tertiary' | 'error' | 'success' | 'text' | 'link';
3
3
  export interface ButtonDefinition {
4
4
  text: string;
5
5
  background: string;
@@ -12,11 +12,13 @@ export declare type ButtonSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
12
12
  export declare type ButtonSizes = {
13
13
  [key in ButtonSize]: string;
14
14
  };
15
+ export declare type ButtonTypeAttribute = 'button' | 'submit' | 'reset';
15
16
  export interface FwButtonProps {
16
17
  to?: string | object;
17
18
  href?: string;
18
19
  size?: ButtonSize;
19
20
  variant?: ButtonVariantName;
21
+ buttonType?: ButtonTypeAttribute;
20
22
  }
21
23
  declare const _default: import("vue").DefineComponent<{
22
24
  /**
@@ -46,6 +48,14 @@ declare const _default: import("vue").DefineComponent<{
46
48
  default: string;
47
49
  validator: (value: string) => boolean;
48
50
  };
51
+ /**
52
+ * The type attribute of the button
53
+ */
54
+ buttonType: {
55
+ type: PropType<ButtonTypeAttribute>;
56
+ default: string;
57
+ validator: (value: string) => boolean;
58
+ };
49
59
  }, {
50
60
  textColorClass: import("vue").ComputedRef<string>;
51
61
  bgColorClass: import("vue").ComputedRef<string>;
@@ -56,7 +66,7 @@ declare const _default: import("vue").DefineComponent<{
56
66
  onMouseout: (this: GlobalEventHandlers, ev: MouseEvent) => any;
57
67
  onFocusin: (this: GlobalEventHandlers, ev: FocusEvent) => any;
58
68
  onFocusout: (this: GlobalEventHandlers, ev: FocusEvent) => any;
59
- tagName: import("vue").ComputedRef<"router-link" | "a" | "button">;
69
+ tagName: import("vue").ComputedRef<"button" | "router-link" | "a">;
60
70
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "mouseover" | "mouseout" | "focusin" | "focusout")[], "click" | "mouseover" | "mouseout" | "focusin" | "focusout", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
61
71
  /**
62
72
  * A `router-link` path or object
@@ -85,6 +95,14 @@ declare const _default: import("vue").DefineComponent<{
85
95
  default: string;
86
96
  validator: (value: string) => boolean;
87
97
  };
98
+ /**
99
+ * The type attribute of the button
100
+ */
101
+ buttonType: {
102
+ type: PropType<ButtonTypeAttribute>;
103
+ default: string;
104
+ validator: (value: string) => boolean;
105
+ };
88
106
  }>> & {
89
107
  onClick?: ((...args: any[]) => any) | undefined;
90
108
  onMouseover?: ((...args: any[]) => any) | undefined;
@@ -94,5 +112,6 @@ declare const _default: import("vue").DefineComponent<{
94
112
  }, {
95
113
  size: ButtonSize;
96
114
  variant: ButtonVariantName;
115
+ buttonType: ButtonTypeAttribute;
97
116
  }>;
98
117
  export default _default;
@@ -0,0 +1,2 @@
1
+ import { Form as FwForm } from 'vee-validate';
2
+ export { FwForm };
@@ -7,6 +7,8 @@ export interface FwInputProps {
7
7
  label?: string;
8
8
  placeholder?: string;
9
9
  rules?: string | object | Function;
10
+ readonly?: boolean;
11
+ hint?: string;
10
12
  }
11
13
  declare const _default: import("vue").DefineComponent<{
12
14
  /**
@@ -50,6 +52,19 @@ declare const _default: import("vue").DefineComponent<{
50
52
  rules: {
51
53
  type: (StringConstructor | ObjectConstructor | FunctionConstructor)[];
52
54
  };
55
+ /**
56
+ * Converts the input into a readonly disabled field
57
+ */
58
+ readonly: {
59
+ type: BooleanConstructor;
60
+ default: boolean;
61
+ };
62
+ /**
63
+ * The hint text shown below the input
64
+ */
65
+ hint: {
66
+ type: StringConstructor;
67
+ };
53
68
  }, {
54
69
  inputValue: import("vue").WritableComputedRef<string>;
55
70
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
@@ -94,11 +109,25 @@ declare const _default: import("vue").DefineComponent<{
94
109
  rules: {
95
110
  type: (StringConstructor | ObjectConstructor | FunctionConstructor)[];
96
111
  };
112
+ /**
113
+ * Converts the input into a readonly disabled field
114
+ */
115
+ readonly: {
116
+ type: BooleanConstructor;
117
+ default: boolean;
118
+ };
119
+ /**
120
+ * The hint text shown below the input
121
+ */
122
+ hint: {
123
+ type: StringConstructor;
124
+ };
97
125
  }>> & {
98
126
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
99
127
  }, {
100
128
  modelValue: string;
101
129
  type: InputType;
102
130
  placeholder: string;
131
+ readonly: boolean;
103
132
  }>;
104
133
  export default _default;
@@ -1,4 +1,5 @@
1
1
  export * from './fw-card';
2
2
  export * from './fw-button';
3
3
  export * from './fw-navigation-menu';
4
+ export * from './fw-form';
4
5
  export * from './fw-input';
@@ -4,4 +4,7 @@ import ManageSvg from './manage.svg';
4
4
  import NotFoundSvg from './not-found.svg';
5
5
  import EmailFilledSvg from './email-filled.svg';
6
6
  import AlertSvg from './alert.svg';
7
- export { ViewSvg, GenerateSvg, ManageSvg, NotFoundSvg, EmailFilledSvg, AlertSvg };
7
+ import LockSvg from './lock.svg';
8
+ import EyeSvg from './eye.svg';
9
+ import EyeCrossedSvg from './eye-crossed.svg';
10
+ export { ViewSvg, GenerateSvg, ManageSvg, NotFoundSvg, EmailFilledSvg, AlertSvg, LockSvg, EyeSvg, EyeCrossedSvg };