opus-toolkit-components 0.3.0 → 0.3.2

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.
@@ -12,7 +12,7 @@ return /******/ (() => { // webpackBootstrap
12
12
  /******/ "use strict";
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 250:
15
+ /***/ 289:
16
16
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
17
17
 
18
18
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -27,7 +27,7 @@ return /******/ (() => { // webpackBootstrap
27
27
 
28
28
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
29
29
  // Module
30
- ___CSS_LOADER_EXPORT___.push([module.id, `.primary-btn{background:#e23193;color:#fff}.primary-btn:hover{background:#005de5}.secondary-btn{background:#005de5;color:#fff}.secondary-btn:hover{background:#e23193}.outline-btn{background:none;border:2px solid #fff;color:#fff}.outline-btn:hover{background:#e23193;border-color:#e23193}`, "",{"version":3,"sources":["webpack://./src/components/Buttons/_button.scss","webpack://./node_modules/opus-toolkit-styles/fragments/_colours.scss"],"names":[],"mappings":"AAoBA,aACI,kBCEO,CDDP,UAhBS,CAKX,mBACE,kBCSO,CDMX,eACI,kBCPO,CDQP,UAvBS,CAKX,qBACE,kBCWO,CDWX,aACI,eAAA,CACA,qBAAA,CACA,UA/BS,CAKX,mBACE,kBCWO,CDTL,oBCSK","sourcesContent":["@import 'opus-toolkit-styles/fragments/colours';\r\n// Define color variables\r\n$primary-color: $c247Pink;\r\n$primary-hover-color: $c247Blue;\r\n$secondary-color: $c247Blue;\r\n$hover-color: $c247Pink;\r\n$text-color: white;\r\n$outline-border-color: white;\r\n\r\n// Create a mixin for hover effects to avoid repetition\r\n@mixin hover-effect($hover-bg, $hover-border: null) {\r\n &:hover {\r\n background: $hover-bg;\r\n @if $hover-border {\r\n border-color: $hover-border;\r\n }\r\n }\r\n}\r\n\r\n// Primary button styles\r\n.primary-btn {\r\n background: $primary-color;\r\n color: $text-color;\r\n @include hover-effect($primary-hover-color);\r\n}\r\n\r\n// Secondary button styles\r\n.secondary-btn {\r\n background: $secondary-color;\r\n color: $text-color;\r\n @include hover-effect($hover-color);\r\n}\r\n\r\n// Outline button styles\r\n.outline-btn {\r\n background: none;\r\n border: 2px solid $outline-border-color;\r\n color: $text-color;\r\n @include hover-effect($hover-color, $hover-color);\r\n}","// Foundation Brand colors\r\n$opusDeepBlue: #0c022f;\r\n$opusNavy: #24135f;\r\n$opusRichBlue: #003494;\r\n\r\n// Grey/Blue Scale\r\n$opusDarkest: #07011c;\r\n$opusGrey800: #1b1f51;\r\n$opusGrey700: #444877;\r\n$opusGrey600: #8b8fac;\r\n$opusGrey400: #e3e4eb;\r\n$opusGrey200: #f8f8fb;\r\n$opusWhite: #ffffff;\r\n\r\n// Brand Colours\r\n$opusLightBlue: #005de5;\r\n$opusBrandBlue: #0176d9;\r\n$opusPurple: #451f88;\r\n$opusPink: #e05db4;\r\n\r\n// C247 Colours\r\n$c247Blue: #005de5;\r\n$c247Purple: #ad43c4;\r\n$c247Pink: #e23193;\r\n\r\n// Utility Colours\r\n$danger: #bb0808;\r\n$success: #27be36;"],"sourceRoot":""}]);
30
+ ___CSS_LOADER_EXPORT___.push([module.id, ``, "",{"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}]);
31
31
  // Exports
32
32
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
33
33
 
@@ -546,7 +546,7 @@ __webpack_require__.d(__webpack_exports__, {
546
546
  Card: () => (/* reexport */ Card),
547
547
  DatePicker: () => (/* reexport */ DatePicker),
548
548
  Dropdown: () => (/* reexport */ Dropdown),
549
- Input: () => (/* reexport */ Input),
549
+ Input: () => (/* reexport */ Inputs_Input),
550
550
  RadioButton: () => (/* reexport */ RadioButton),
551
551
  Table: () => (/* reexport */ Table)
552
552
  });
@@ -622,9 +622,9 @@ var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleE
622
622
  // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js
623
623
  var styleTagTransform = __webpack_require__(113);
624
624
  var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform);
625
- // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Buttons/_button.scss
626
- var _button = __webpack_require__(250);
627
- ;// ./src/components/Buttons/_button.scss
625
+ // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Buttons/button.scss
626
+ var Buttons_button = __webpack_require__(289);
627
+ ;// ./src/components/Buttons/button.scss
628
628
 
629
629
 
630
630
 
@@ -644,12 +644,12 @@ options.insert = insertBySelector_default().bind(null, "head");
644
644
  options.domAPI = (styleDomAPI_default());
645
645
  options.insertStyleElement = (insertStyleElement_default());
646
646
 
647
- var update = injectStylesIntoStyleTag_default()(_button/* default */.A, options);
647
+ var update = injectStylesIntoStyleTag_default()(Buttons_button/* default */.A, options);
648
648
 
649
649
 
650
650
 
651
651
 
652
- /* harmony default export */ const Buttons_button = (_button/* default */.A && _button/* default */.A.locals ? _button/* default */.A.locals : undefined);
652
+ /* harmony default export */ const components_Buttons_button = (Buttons_button/* default */.A && Buttons_button/* default */.A.locals ? Buttons_button/* default */.A.locals : undefined);
653
653
 
654
654
  ;// ./src/components/Buttons/Button.js
655
655
 
@@ -658,19 +658,71 @@ function Button(_ref) {
658
658
  let {
659
659
  type = 'button',
660
660
  rank = 'primary',
661
+ state = 'default',
661
662
  text = 'Example Button',
662
663
  size = 'md',
663
664
  isFullWidth = false,
664
- // The boolean to toggle 'w-full'
665
+ icon: Icon,
666
+ // Icon as a React component
667
+ iconPosition = 'right',
668
+ // Icon position: 'left' or 'right'
669
+ isIconAnimated = false,
670
+ // Optional animation for icon hover
671
+ className = '',
672
+ // Accepts additional custom class
665
673
  onClick
666
674
  } = _ref;
667
- // Conditional class based on isFullWidth
668
- const classNames = `transition ease-in-out duration-700 rounded px-6 py-2 text-${size} ${rank}-btn ${isFullWidth ? 'w-full' : ''}`;
675
+ // Define styles for button ranks
676
+ const rankStyles = {
677
+ primary: 'bg-brandPink600 hover:bg-brandPink700 text-greyBaseLight',
678
+ secondary: 'bg-greyBaseDark900 hover:bg-brandPink700 text-greyBaseLight',
679
+ outline: 'bg-greyLight50 border-solid border-2 border-greyLight100 hover:border-greyLight700 hover:greyLight100 text-greyLight700',
680
+ neutral: 'bg-greyLight50 hover:bg-greyLight100 text-greyLight700',
681
+ destructive: 'bg-utilRed1000 hover:bg-utilRed800 text-greyBaseLight'
682
+ };
683
+
684
+ // Disabled styles for button
685
+ const disabledStyles = 'bg-greyLight100 text-greyLight500 cursor-not-allowed';
686
+
687
+ // Icon animation style (if applicable)
688
+ const iconClassNames = `
689
+ inline-block
690
+ transition-transform
691
+ ease-in-out
692
+ duration-200
693
+ h-5 w-5
694
+ ${iconPosition === 'right' ? 'ml-2' : 'mr-2'}
695
+ ${isIconAnimated ? 'group-hover:translate-x-1' : ''}
696
+ `;
697
+
698
+ // Main button class names
699
+ const classNames = `
700
+ ${state === 'disabled' ? disabledStyles : rankStyles[rank] || rankStyles.primary}
701
+ group
702
+ transition
703
+ ease-in-out
704
+ duration-700
705
+ rounded-lg
706
+ px-6
707
+ py-2
708
+ text-${size}
709
+ flex
710
+ items-center
711
+ justify-center
712
+ whitespace-nowrap // Prevents text wrapping
713
+ ${isFullWidth ? 'w-full' : ''}
714
+ ${className}
715
+ `;
669
716
  return /*#__PURE__*/external_react_default().createElement("button", {
670
717
  type: type,
671
718
  className: classNames,
672
- onClick: onClick
673
- }, text);
719
+ onClick: state === 'disabled' ? null : onClick,
720
+ disabled: state === 'disabled'
721
+ }, iconPosition === 'left' && Icon && /*#__PURE__*/external_react_default().createElement(Icon, {
722
+ className: iconClassNames
723
+ }), text, iconPosition === 'right' && Icon && /*#__PURE__*/external_react_default().createElement(Icon, {
724
+ className: iconClassNames
725
+ }));
674
726
  }
675
727
  // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Cards/card.scss
676
728
  var card = __webpack_require__(865);
@@ -707,16 +759,17 @@ var card_update = injectStylesIntoStyleTag_default()(card/* default */.A, card_o
707
759
  function Card(_ref) {
708
760
  let {
709
761
  mode = 'light',
762
+ className = '',
710
763
  children
711
764
  } = _ref;
712
- const cardClasses = `p-5 ${mode}-card rounded-lg shadow-lg`;
765
+ const cardClasses = `p-5 ${mode}-card rounded-lg shadow-lg border-solid border-2 border-greyLight100 ${className}`;
713
766
  return /*#__PURE__*/external_react_default().createElement("div", {
714
767
  className: cardClasses
715
768
  }, children);
716
769
  }
717
770
  ;// ./src/components/Forms/Inputs/Input.js
718
771
 
719
- function Input(_ref) {
772
+ const Input = /*#__PURE__*/(0,external_react_.forwardRef)((_ref, ref) => {
720
773
  let {
721
774
  label,
722
775
  placeholder,
@@ -725,12 +778,16 @@ function Input(_ref) {
725
778
  isValid = true,
726
779
  errorMessage = `${label} is required`,
727
780
  onChange,
781
+ className = '',
728
782
  value
729
783
  } = _ref;
730
- const inputClasses = `rounded-md bg-white border px-4 py-3 text-md font-normal text-gray-900 ${isValid ? 'border-slate-500' : 'border-rose-500'}`;
784
+ const inputClasses = `${className} rounded-md bg-white border border-greyLight500 px-4 py-3 text-md font-normal text-gray-900 ${isValid ? 'border-greyLight500' : 'border-utilRed1000'}`;
731
785
  return /*#__PURE__*/external_react_default().createElement("div", {
732
786
  className: "flex flex-col mb-4"
733
- }, /*#__PURE__*/external_react_default().createElement("label", null, label), /*#__PURE__*/external_react_default().createElement("input", {
787
+ }, /*#__PURE__*/external_react_default().createElement("label", {
788
+ className: "text-greyLight1000"
789
+ }, label), /*#__PURE__*/external_react_default().createElement("input", {
790
+ ref: ref,
734
791
  className: inputClasses,
735
792
  type: type,
736
793
  name: name,
@@ -738,9 +795,10 @@ function Input(_ref) {
738
795
  onChange: onChange,
739
796
  value: value
740
797
  }), !isValid && /*#__PURE__*/external_react_default().createElement("span", {
741
- className: "text-rose-500 text-sm"
798
+ className: "text-utilRed1000 text-sm"
742
799
  }, errorMessage));
743
- }
800
+ });
801
+ /* harmony default export */ const Inputs_Input = (Input);
744
802
  ;// ./src/components/Forms/Datepickers/DatePicker.js
745
803
 
746
804
  function DatePicker(_ref) {
@@ -9085,4 +9143,4 @@ function Dropdown(_ref) {
9085
9143
  /******/ })()
9086
9144
  ;
9087
9145
  });
9088
- //# sourceMappingURL=main.13234ba8805408d911a7.js.map
9146
+ //# sourceMappingURL=main.923c53023bac4e887eda.js.map