bromcom-ui-next 0.1.4 → 0.1.5

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 (170) hide show
  1. package/dist/bromcom-ui/bromcom-ui.css +1 -1
  2. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  3. package/dist/bromcom-ui/bromcom-ui.esm.js.map +1 -1
  4. package/dist/bromcom-ui/{p-1d86c1cf.entry.js → p-2bbd3c52.entry.js} +2 -2
  5. package/dist/bromcom-ui/{p-1d86c1cf.entry.js.map → p-2bbd3c52.entry.js.map} +1 -1
  6. package/dist/bromcom-ui/p-2f1d87a7.entry.js +2 -0
  7. package/dist/bromcom-ui/p-2f1d87a7.entry.js.map +1 -0
  8. package/dist/bromcom-ui/{p-1b11150b.entry.js → p-4f402148.entry.js} +2 -2
  9. package/dist/bromcom-ui/{p-1b11150b.entry.js.map → p-4f402148.entry.js.map} +1 -1
  10. package/dist/bromcom-ui/p-53f21d16.entry.js +2 -0
  11. package/dist/bromcom-ui/{p-dcea8d62.entry.js.map → p-53f21d16.entry.js.map} +1 -1
  12. package/dist/bromcom-ui/{p-04f6d730.entry.js → p-5737e7de.entry.js} +2 -2
  13. package/dist/bromcom-ui/{p-04f6d730.entry.js.map → p-5737e7de.entry.js.map} +1 -1
  14. package/dist/bromcom-ui/{p-5d0838e9.entry.js → p-5bee2e76.entry.js} +2 -2
  15. package/dist/bromcom-ui/{p-5d0838e9.entry.js.map → p-5bee2e76.entry.js.map} +1 -1
  16. package/dist/bromcom-ui/p-63cb0933.entry.js +2 -0
  17. package/dist/bromcom-ui/p-63cb0933.entry.js.map +1 -0
  18. package/dist/bromcom-ui/{p-a590f793.entry.js → p-6abaf96f.entry.js} +2 -2
  19. package/dist/bromcom-ui/{p-a590f793.entry.js.map → p-6abaf96f.entry.js.map} +1 -1
  20. package/dist/bromcom-ui/{p-cd437280.entry.js → p-7a1bf6a6.entry.js} +2 -2
  21. package/dist/bromcom-ui/{p-cd437280.entry.js.map → p-7a1bf6a6.entry.js.map} +1 -1
  22. package/dist/bromcom-ui/{p-3b607038.entry.js → p-e08b23ff.entry.js} +2 -2
  23. package/dist/bromcom-ui/{p-3b607038.entry.js.map → p-e08b23ff.entry.js.map} +1 -1
  24. package/dist/bromcom-ui/p-f0ece968.entry.js +2 -0
  25. package/dist/bromcom-ui/p-f0ece968.entry.js.map +1 -0
  26. package/dist/bromcom-ui/{p-ebed10d5.entry.js → p-f9eeafa7.entry.js} +2 -2
  27. package/dist/bromcom-ui/{p-ebed10d5.entry.js.map → p-f9eeafa7.entry.js.map} +1 -1
  28. package/dist/bromcom-ui/styles/theme-variables.ts +369 -0
  29. package/dist/bromcom-ui/styles/themes/index.css +1 -0
  30. package/dist/bromcom-ui/styles/themes/library/default.css +73 -0
  31. package/dist/bromcom-ui/styles/variables/box-shadow.css +15 -0
  32. package/dist/bromcom-ui/styles/variables/colors-dark.css +314 -0
  33. package/dist/bromcom-ui/styles/variables/colors-light.css +325 -0
  34. package/dist/bromcom-ui/styles/variables/font-size-rem.css +33 -0
  35. package/dist/bromcom-ui/styles/variables/font-size.css +33 -0
  36. package/dist/bromcom-ui/styles/variables/index.css +6 -0
  37. package/dist/cjs/bcm-accordion-group.cjs.entry.js +1 -1
  38. package/dist/cjs/bcm-accordion-group.cjs.entry.js.map +1 -1
  39. package/dist/cjs/bcm-accordion.cjs.entry.js +1 -1
  40. package/dist/cjs/bcm-accordion.cjs.entry.js.map +1 -1
  41. package/dist/cjs/bcm-alert.cjs.entry.js +1 -1
  42. package/dist/cjs/bcm-alert.cjs.entry.js.map +1 -1
  43. package/dist/cjs/bcm-avatar_4.cjs.entry.js +4 -4
  44. package/dist/cjs/bcm-avatar_4.cjs.entry.js.map +1 -1
  45. package/dist/cjs/bcm-chip.cjs.entry.js +1 -1
  46. package/dist/cjs/bcm-chip.cjs.entry.js.map +1 -1
  47. package/dist/cjs/bcm-divider.cjs.entry.js +1 -1
  48. package/dist/cjs/bcm-divider.cjs.entry.js.map +1 -1
  49. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +63 -0
  50. package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +1 -0
  51. package/dist/cjs/bcm-dropdown.cjs.entry.js +56 -0
  52. package/dist/cjs/bcm-dropdown.cjs.entry.js.map +1 -0
  53. package/dist/cjs/bcm-input.cjs.entry.js +3 -3
  54. package/dist/cjs/bcm-input.cjs.entry.js.map +1 -1
  55. package/dist/cjs/bcm-linked.cjs.entry.js +1981 -0
  56. package/dist/cjs/bcm-linked.cjs.entry.js.map +1 -0
  57. package/dist/cjs/bcm-text.cjs.entry.js +2 -2
  58. package/dist/cjs/bcm-text.cjs.entry.js.map +1 -1
  59. package/dist/cjs/bcm-textarea.cjs.entry.js +4 -4
  60. package/dist/cjs/bcm-textarea.cjs.entry.js.map +1 -1
  61. package/dist/cjs/bromcom-ui.cjs.js +1 -1
  62. package/dist/cjs/loader.cjs.js +1 -1
  63. package/dist/collection/collection-manifest.json +3 -0
  64. package/dist/collection/components/accordion/accordion.css +1 -1
  65. package/dist/collection/components/accordion-group/accordion-group.css +1 -1
  66. package/dist/collection/components/alert/alert.css +1 -1
  67. package/dist/collection/components/avatar/avatar.css +1 -1
  68. package/dist/collection/components/badge/badge.css +1 -1
  69. package/dist/collection/components/basic-badge/basic-badge.css +1 -1
  70. package/dist/collection/components/button/button.css +1 -1
  71. package/dist/collection/components/chip/chip.css +1 -1
  72. package/dist/collection/components/divider/divider.css +1 -1
  73. package/dist/collection/components/dropdown/dropdown.component.js +110 -0
  74. package/dist/collection/components/dropdown/dropdown.component.js.map +1 -0
  75. package/dist/collection/components/dropdown/dropdown.css +1 -0
  76. package/dist/collection/components/dropdown-item/dropdown-item.component.js +198 -0
  77. package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -0
  78. package/dist/collection/components/dropdown-item/dropdown-item.css +1 -0
  79. package/dist/collection/components/input/input.component.js +2 -2
  80. package/dist/collection/components/input/input.css +1 -1
  81. package/dist/collection/components/linked/linked.component.js +140 -0
  82. package/dist/collection/components/linked/linked.component.js.map +1 -0
  83. package/dist/collection/components/linked/linked.css +1 -0
  84. package/dist/collection/components/text/text.component.js +1 -1
  85. package/dist/collection/components/text/text.css +1 -1
  86. package/dist/collection/components/textarea/textarea.component.js +3 -3
  87. package/dist/collection/components/textarea/textarea.css +1 -1
  88. package/dist/collection/styles/theme-variables.js +15 -0
  89. package/dist/collection/styles/theme-variables.js.map +1 -1
  90. package/dist/collection/styles/theme-variables.ts +369 -0
  91. package/dist/collection/styles/themes/index.css +1 -0
  92. package/dist/collection/styles/themes/library/default.css +73 -0
  93. package/dist/collection/styles/variables/box-shadow.css +15 -0
  94. package/dist/collection/styles/variables/colors-dark.css +314 -0
  95. package/dist/collection/styles/variables/colors-light.css +325 -0
  96. package/dist/collection/styles/variables/font-size-rem.css +33 -0
  97. package/dist/collection/styles/variables/font-size.css +33 -0
  98. package/dist/collection/styles/variables/index.css +6 -0
  99. package/dist/components/bcm-accordion-group.js +1 -1
  100. package/dist/components/bcm-accordion-group.js.map +1 -1
  101. package/dist/components/bcm-accordion.js +1 -1
  102. package/dist/components/bcm-accordion.js.map +1 -1
  103. package/dist/components/bcm-alert.js +1 -1
  104. package/dist/components/bcm-alert.js.map +1 -1
  105. package/dist/components/bcm-avatar.js +2 -2
  106. package/dist/components/bcm-avatar.js.map +1 -1
  107. package/dist/components/bcm-badge.js +1 -1
  108. package/dist/components/bcm-basic-badge.js +1 -1
  109. package/dist/components/bcm-basic-badge.js.map +1 -1
  110. package/dist/components/bcm-button.js +1 -327
  111. package/dist/components/bcm-button.js.map +1 -1
  112. package/dist/components/bcm-chip.js +1 -1
  113. package/dist/components/bcm-chip.js.map +1 -1
  114. package/dist/components/bcm-divider.js +1 -1
  115. package/dist/components/bcm-divider.js.map +1 -1
  116. package/dist/components/bcm-dropdown-item.d.ts +11 -0
  117. package/dist/components/bcm-dropdown-item.js +85 -0
  118. package/dist/components/bcm-dropdown-item.js.map +1 -0
  119. package/dist/components/bcm-dropdown.d.ts +11 -0
  120. package/dist/components/bcm-dropdown.js +87 -0
  121. package/dist/components/bcm-dropdown.js.map +1 -0
  122. package/dist/components/bcm-input.js +3 -3
  123. package/dist/components/bcm-input.js.map +1 -1
  124. package/dist/components/bcm-linked.d.ts +11 -0
  125. package/dist/components/bcm-linked.js +8 -0
  126. package/dist/components/bcm-linked.js.map +1 -0
  127. package/dist/components/bcm-text.js +2 -2
  128. package/dist/components/bcm-text.js.map +1 -1
  129. package/dist/components/bcm-textarea.js +4 -4
  130. package/dist/components/bcm-textarea.js.map +1 -1
  131. package/dist/components/p-0063a3d9.js +331 -0
  132. package/dist/components/p-0063a3d9.js.map +1 -0
  133. package/dist/components/p-613ee92d.js +1997 -0
  134. package/dist/components/p-613ee92d.js.map +1 -0
  135. package/dist/components/{p-39637e05.js → p-e918f815.js} +2 -2
  136. package/dist/components/{p-39637e05.js.map → p-e918f815.js.map} +1 -1
  137. package/dist/esm/bcm-accordion-group.entry.js +1 -1
  138. package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
  139. package/dist/esm/bcm-accordion.entry.js +1 -1
  140. package/dist/esm/bcm-accordion.entry.js.map +1 -1
  141. package/dist/esm/bcm-alert.entry.js +1 -1
  142. package/dist/esm/bcm-alert.entry.js.map +1 -1
  143. package/dist/esm/bcm-avatar_4.entry.js +4 -4
  144. package/dist/esm/bcm-avatar_4.entry.js.map +1 -1
  145. package/dist/esm/bcm-chip.entry.js +1 -1
  146. package/dist/esm/bcm-chip.entry.js.map +1 -1
  147. package/dist/esm/bcm-divider.entry.js +1 -1
  148. package/dist/esm/bcm-divider.entry.js.map +1 -1
  149. package/dist/esm/bcm-dropdown-item.entry.js +59 -0
  150. package/dist/esm/bcm-dropdown-item.entry.js.map +1 -0
  151. package/dist/esm/bcm-dropdown.entry.js +52 -0
  152. package/dist/esm/bcm-dropdown.entry.js.map +1 -0
  153. package/dist/esm/bcm-input.entry.js +3 -3
  154. package/dist/esm/bcm-input.entry.js.map +1 -1
  155. package/dist/esm/bcm-linked.entry.js +1977 -0
  156. package/dist/esm/bcm-linked.entry.js.map +1 -0
  157. package/dist/esm/bcm-text.entry.js +2 -2
  158. package/dist/esm/bcm-text.entry.js.map +1 -1
  159. package/dist/esm/bcm-textarea.entry.js +4 -4
  160. package/dist/esm/bcm-textarea.entry.js.map +1 -1
  161. package/dist/esm/bromcom-ui.js +1 -1
  162. package/dist/esm/loader.js +1 -1
  163. package/dist/tailwind.config.js +32 -0
  164. package/dist/types/components/dropdown/dropdown.component.d.ts +14 -0
  165. package/dist/types/components/dropdown-item/dropdown-item.component.d.ts +14 -0
  166. package/dist/types/components/linked/linked.component.d.ts +16 -0
  167. package/dist/types/components.d.ts +89 -0
  168. package/dist/types/styles/theme-variables.d.ts +15 -0
  169. package/package.json +2 -1
  170. package/dist/bromcom-ui/p-dcea8d62.entry.js +0 -2
@@ -1,2 +1,2 @@
1
- import{r as e,c as t,h as r,g as o}from"./p-15fe392b.js";import{c as i}from"./p-5fcf77f9.js";import{c as s}from"./p-12360e4c.js";import{g as a,s as l,a as n,d as c}from"./p-31354aaa.js";const h='.visible{visibility:visible}.collapse{visibility:collapse}.relative{position:relative}.block{display:block}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize-none{resize:none;resize:none!important}.resize-y{resize:vertical;resize:vertical!important}.resize-x{resize:horizontal;resize:horizontal!important}.resize{resize:both!important;resize:both}.border{border-width:1px}.underline{text-decoration-line:underline}.outline{outline-style:solid}/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid oklch(.928 .006 264.531);box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:oklch(.707 .022 261.325);opacity:1}input::placeholder,textarea::placeholder{color:oklch(.707 .022 261.325);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:host{display:block;width:100%}.bcm-textarea__container{display:flex;flex-direction:column;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.mt-1{margin-top:.25rem}.min-h-0{min-height:0}.min-h-\\[3rem\\]{min-height:3rem}.min-h-\\[4rem\\]{min-height:4rem}.min-h-\\[5rem\\]{min-height:5rem}.w-full{width:100%}.grow{flex-grow:1}.cursor-not-allowed{cursor:not-allowed}.\\!resize-none{resize:none!important}.\\!resize-y{resize:vertical!important}.\\!resize-x{resize:horizontal!important}.\\!resize{resize:both!important}.appearance-none{appearance:none}.flex-col{flex-direction:column}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.border-0{border-width:0}.border-solid{border-style:solid}.border-\\[--bcm-ui-color-border-default\\]{border-color:var(--bcm-ui-color-border-default)}.border-\\[--bcm-ui-color-border-error\\]{border-color:var(--bcm-ui-color-border-error)}.border-\\[--bcm-ui-color-border-info\\]{border-color:var(--bcm-ui-color-border-info)}.border-\\[--bcm-ui-color-border-success\\]{border-color:var(--bcm-ui-color-border-success)}.border-\\[--bcm-ui-color-border-warning\\]{border-color:var(--bcm-ui-color-border-warning)}.bg-\\[--bcm-ui-color-background-base-default\\]{background-color:var(--bcm-ui-color-background-base-default)}.bg-transparent{background-color:transparent}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.text-right{text-align:right}.font-sans{font-family:Inter,sans-serif}.text-size-3{font-size:var(--bcm-ui-font-size-3,12px);line-height:var(--bcm-ui-line-height-3,16px)}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-\\[--bcm-ui-color-text-caption\\]{color:var(--bcm-ui-color-text-caption)}.text-\\[--bcm-ui-color-text-default\\]{color:var(--bcm-ui-color-text-default)}.text-\\[--bcm-ui-color-text-disabled\\]{color:var(--bcm-ui-color-text-disabled)}.text-\\[--bcm-ui-color-text-error\\]{color:var(--bcm-ui-color-text-error)}.text-\\[--bcm-ui-color-text-info\\]{color:var(--bcm-ui-color-text-info)}.text-\\[--bcm-ui-color-text-placeholder\\]{color:var(--bcm-ui-color-text-placeholder)}.text-\\[--bcm-ui-color-text-success\\]{color:var(--bcm-ui-color-text-success)}.text-\\[--bcm-ui-color-text-warning\\]{color:var(--bcm-ui-color-text-warning)}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-label{color:var(--bcm-ui-color-text-label)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-0{outline-width:0}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-\\[--bcm-ui-color-border-primary\\]{--tw-ring-color:var(--bcm-ui-color-border-primary)}.ring-opacity-50{--tw-ring-opacity:0.5}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.placeholder\\:font-normal::placeholder{font-weight:400}.placeholder\\:text-\\[--bcm-ui-color-text-placeholder\\]::placeholder{color:var(--bcm-ui-color-text-placeholder)}.hover\\:border-\\[--bcm-ui-color-border-error\\]:hover{border-color:var(--bcm-ui-color-border-error)}.hover\\:border-\\[--bcm-ui-color-border-info\\]:hover{border-color:var(--bcm-ui-color-border-info)}.hover\\:border-\\[--bcm-ui-color-border-primary\\]:hover{border-color:var(--bcm-ui-color-border-primary)}.hover\\:border-\\[--bcm-ui-color-border-success\\]:hover{border-color:var(--bcm-ui-color-border-success)}.hover\\:border-\\[--bcm-ui-color-border-warning\\]:hover{border-color:var(--bcm-ui-color-border-warning)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-error\\]:has(:focus){border-color:var(--bcm-ui-color-border-error)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-info\\]:has(:focus){border-color:var(--bcm-ui-color-border-info)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-primary\\]:has(:focus){border-color:var(--bcm-ui-color-border-primary)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-success\\]:has(:focus){border-color:var(--bcm-ui-color-border-success)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-warning\\]:has(:focus){border-color:var(--bcm-ui-color-border-warning)}';const d=h;const b=class{constructor(r){e(this,r);this.bcmInput=t(this,"bcmInput",1);this.bcmChange=t(this,"bcmChange",1);this.bcmFocus=t(this,"bcmFocus",1);this.bcmBlur=t(this,"bcmBlur",1);this.bcmKeyDown=t(this,"bcmKeyDown",1);this.bcmKeyUp=t(this,"bcmKeyUp",1);this.isFocused=false;this.isValid=true;this.internalStatus="default";this.value="";this.rows=3;this.resize="none";this.autoGrow=false;this._id=a("textarea");this.size="medium";this.status="default";this.fullWidth=false;this.disabled=false;this.readonly=false;this.required=false;this.showCounter=true;this.onChange=e=>{this.bcmChange.emit(e)};this.onFocus=e=>{this.isFocused=true;this.bcmFocus.emit(e)};this.onBlur=e=>{this.isFocused=false;this.bcmBlur.emit(e);this.validateInput()};this.onKeyDown=e=>{this.bcmKeyDown.emit(e)};this.onKeyUp=e=>{this.bcmKeyUp.emit(e)};this.styleClass=i({slots:{base:["bcm-textarea bcm-textarea__container","bg-[--bcm-ui-color-background-base-default]","border border-solid rounded","flex flex-col","transition-colors duration-200","px-2 py-2","w-full"],textareaClass:["textarea","w-full","border-0 outline-0 bg-transparent","appearance-none","text-[--bcm-ui-color-text-default] placeholder:text-[--bcm-ui-color-text-placeholder] placeholder:font-normal","font-sans antialiased font-medium","px-1","overflow-y-auto","min-h-0"],counterText:["textarea-counter-text","text-[--bcm-ui-color-text-placeholder]","text-right","mt-1"]},variants:{size:{small:{base:"",textareaClass:"text-size-4 min-h-[3rem]",counterText:"text-size-3"},medium:{base:"",textareaClass:"text-size-5 min-h-[4rem]",counterText:"text-size-4"},large:{base:"",textareaClass:"text-size-6 min-h-[5rem]",counterText:"text-size-5"}},resize:{none:{textareaClass:"!resize-none"},both:{textareaClass:"!resize"},horizontal:{textareaClass:"!resize-x"},vertical:{textareaClass:"!resize-y"}},status:{default:{base:["border-[--bcm-ui-color-border-default]","hover:border-[--bcm-ui-color-border-primary]","has-[:focus]:border-[--bcm-ui-color-border-primary]"]},error:{base:["border-[--bcm-ui-color-border-error]","hover:border-[--bcm-ui-color-border-error]","has-[:focus]:border-[--bcm-ui-color-border-error]"]},success:{base:["border-[--bcm-ui-color-border-success]","hover:border-[--bcm-ui-color-border-success]","has-[:focus]:border-[--bcm-ui-color-border-success]"]},warning:{base:["border-[--bcm-ui-color-border-warning]","hover:border-[--bcm-ui-color-border-warning]","has-[:focus]:border-[--bcm-ui-color-border-warning]"]},info:{base:["border-[--bcm-ui-color-border-info]","hover:border-[--bcm-ui-color-border-info]","has-[:focus]:border-[--bcm-ui-color-border-info]"]}},fullWidth:{true:"full-width w-full"},disabled:{true:{base:"disabled cursor-not-allowed opacity-50",textareaClass:"!resize-none"},false:""},focused:{true:{base:"ring-2 ring-[--bcm-ui-color-border-primary] ring-opacity-50"},false:""}},defaultVariants:{size:"medium",status:"default",resize:"vertical",fullWidth:false,disabled:false,focused:false}},{twMerge:false})}handleValueChange(e){if(this.textareaRef){this.textareaRef.value=e;if(this.autoGrow){this.adjustHeight()}}}watchStatus(e){this.internalStatus=e}watchErrorMessage(e){this.internalErrorMessage=e}componentWillLoad(){l("en",c);this.internalStatus=this.status;this.internalErrorMessage=this.errorMessage}componentDidLoad(){var e;if(this.autoGrow){this.adjustHeight();(e=this.textareaRef)===null||e===void 0?void 0:e.addEventListener("input",(()=>this.adjustHeight()))}}disconnectedCallback(){if(this.autoGrow&&this.textareaRef){this.textareaRef.removeEventListener("input",(()=>this.adjustHeight()))}}async setFocus(){var e;(e=this.textareaRef)===null||e===void 0?void 0:e.focus()}async setBlur(){var e;(e=this.textareaRef)===null||e===void 0?void 0:e.blur()}async select(){var e;(e=this.textareaRef)===null||e===void 0?void 0:e.select()}adjustHeight(){if(!this.autoGrow||!this.textareaRef)return;requestAnimationFrame((()=>{this.textareaRef.style.height="0px";const e=getComputedStyle(this.textareaRef);const t=parseInt(e.lineHeight);const r=parseInt(e.paddingTop);const o=parseInt(e.paddingBottom);const i=this.textareaRef.scrollHeight;let s=i;if(this.minRows){const e=this.minRows*t+r+o;s=Math.max(s,e)}if(this.maxRows){const e=this.maxRows*t+r+o;s=Math.min(s,e)}this.textareaRef.style.height=`${s}px`}))}validateInput(){if(!this.textareaRef)return;this.isValid=true;this.validationMessage="";const e=this.textareaRef.value;if(this.required&&!e){this.isValid=false;this.validationMessage=n("required");this.internalStatus="error";this.internalErrorMessage=this.validationMessage;return}if(this.minLength&&e.length<this.minLength){this.isValid=false;this.validationMessage=n("minlength",{min:this.minLength})}else if(this.maxLength&&e.length>this.maxLength){this.isValid=false;this.validationMessage=n("maxlength",{max:this.maxLength})}if(this.validator){const t=this.validator(e);if(t){this.isValid=false;this.validationMessage=t}}this.internalStatus=this.isValid?"default":"error";this.internalErrorMessage=this.validationMessage}render(){const e=this._id+"-textarea"||this.name;const{base:t,textareaClass:o,counterText:i}=this.styleClass({size:this.size,status:this.internalStatus,resize:this.resize,fullWidth:this.fullWidth,disabled:this.disabled,focused:this.isFocused});return r("div",{key:"3b518823eafee23f5efb8fecdd1869cb0625f712",class:"bcm-ui-element"},this.label&&r("label",{key:"17851980564ab95c9a1ac30fa494c3b4ef50f75b",class:s("textarea-label font-medium",{"text-color-label":!this.disabled,"text-color-disabled":this.disabled},{"text-size-3":this.size==="small","text-size-4":this.size==="medium","text-size-5":this.size==="large"}),htmlFor:e},r("slot",{key:"3a0c9c5d95ac3389f3d48d41577b88ee21dfb940",name:"label"},this.label),this.required&&r("span",{key:"fd499a157c4ff22f17feaabcbe7c5a2d2d75e35b"},"*")),r("div",{key:"625e4a27c30495aaf39259e8ac68bc1d819fd506",class:t()},r("textarea",{key:"be30548713a724d4f535885c7b6838fb056d0b3d",ref:e=>this.textareaRef=e,id:e,class:o(),name:this.name,rows:this.rows,cols:this.cols,disabled:this.disabled,readonly:this.readonly,required:this.required,placeholder:this.placeholder,minLength:this.minLength,maxLength:this.maxLength,"aria-invalid":this.status==="error","aria-required":this.required,"aria-labelledby":this.labelledby,"aria-describedby":this.describedby,value:this.value,onInput:e=>{const t=e.target;this.value=t.value;this.bcmInput.emit(e);this.validateInput();if(this.autoGrow){this.adjustHeight()}},onChange:this.onChange,onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onKeyDown,onKeyUp:this.onKeyUp}),this.showCounter&&r("div",{key:"1ebabb979efac47054160558fab66d4fccc603f9",class:i()},this.value.length,this.maxLength?`/${this.maxLength}`:"")),(this.captionText||this.internalErrorMessage||this.validationMessage)&&r("div",{key:"1c7f59c0d4337c7c359dc9aea3e332e5715bf80d",class:s("textarea-caption-text font-regular mt-1",{"text-[--bcm-ui-color-text-caption]":!this.disabled&&this.internalStatus==="default","text-[--bcm-ui-color-text-error]":!this.disabled&&(this.internalStatus==="error"||!this.isValid),"text-[--bcm-ui-color-text-success]":!this.disabled&&this.internalStatus==="success","text-[--bcm-ui-color-text-warning]":!this.disabled&&this.internalStatus==="warning","text-[--bcm-ui-color-text-info]":!this.disabled&&this.internalStatus==="info","text-[--bcm-ui-color-text-disabled]":this.disabled},{"text-size-3":this.size==="small","text-size-4":this.size==="medium","text-size-5":this.size==="large"})},!this.isValid?this.validationMessage:this.internalStatus==="error"?this.internalErrorMessage:this.captionText))}get el(){return o(this)}static get watchers(){return{value:["handleValueChange"],status:["watchStatus"],errorMessage:["watchErrorMessage"]}}};b.style=d;export{b as bcm_textarea};
2
- //# sourceMappingURL=p-3b607038.entry.js.map
1
+ import{r as e,c as t,h as r,g as o}from"./p-15fe392b.js";import{c as i}from"./p-5fcf77f9.js";import{c as s}from"./p-12360e4c.js";import{g as a,s as l,a as n,d as c}from"./p-31354aaa.js";const h='.visible{visibility:visible}.collapse{visibility:collapse}.relative{position:relative}.block{display:block}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize-none{resize:none;resize:none!important}.resize-y{resize:vertical;resize:vertical!important}.resize-x{resize:horizontal;resize:horizontal!important}.resize{resize:both!important;resize:both}.border{border-width:1px}.underline{text-decoration-line:underline}.outline{outline-style:solid}/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid oklch(.928 .006 264.531);box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:oklch(.707 .022 261.325);opacity:1}input::placeholder,textarea::placeholder{color:oklch(.707 .022 261.325);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:host{display:block;width:100%}.bcm-textarea__container{display:flex;flex-direction:column;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.mt-1{margin-top:.25rem}.min-h-0{min-height:0}.min-h-\\[3rem\\]{min-height:3rem}.min-h-\\[4rem\\]{min-height:4rem}.min-h-\\[5rem\\]{min-height:5rem}.w-full{width:100%}.grow{flex-grow:1}.cursor-not-allowed{cursor:not-allowed}.\\!resize-none{resize:none!important}.\\!resize-y{resize:vertical!important}.\\!resize-x{resize:horizontal!important}.\\!resize{resize:both!important}.appearance-none{appearance:none}.flex-col{flex-direction:column}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.border-0{border-width:0}.border-solid{border-style:solid}.border-\\[--bcm-ui-color-border-default\\]{border-color:var(--bcm-ui-color-border-default)}.border-\\[--bcm-ui-color-border-error\\]{border-color:var(--bcm-ui-color-border-error)}.border-\\[--bcm-ui-color-border-info\\]{border-color:var(--bcm-ui-color-border-info)}.border-\\[--bcm-ui-color-border-success\\]{border-color:var(--bcm-ui-color-border-success)}.border-\\[--bcm-ui-color-border-warning\\]{border-color:var(--bcm-ui-color-border-warning)}.bg-\\[--bcm-ui-color-background-base-default\\]{background-color:var(--bcm-ui-color-background-base-default)}.bg-transparent{background-color:transparent}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.text-right{text-align:right}.font-sans{font-family:Inter,sans-serif}.text-size-3{font-size:var(--bcm-ui-font-size-3,12px);line-height:var(--bcm-ui-line-height-3,16px)}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-\\[--bcm-ui-color-text-caption\\]{color:var(--bcm-ui-color-text-caption)}.text-\\[--bcm-ui-color-text-default\\]{color:var(--bcm-ui-color-text-default)}.text-\\[--bcm-ui-color-text-disabled\\]{color:var(--bcm-ui-color-text-disabled)}.text-\\[--bcm-ui-color-text-error\\]{color:var(--bcm-ui-color-text-error)}.text-\\[--bcm-ui-color-text-info\\]{color:var(--bcm-ui-color-text-info)}.text-\\[--bcm-ui-color-text-placeholder\\]{color:var(--bcm-ui-color-text-placeholder)}.text-\\[--bcm-ui-color-text-success\\]{color:var(--bcm-ui-color-text-success)}.text-\\[--bcm-ui-color-text-warning\\]{color:var(--bcm-ui-color-text-warning)}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-label{color:var(--bcm-ui-color-text-label)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-0{outline-width:0}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-\\[--bcm-ui-color-border-primary\\]{--tw-ring-color:var(--bcm-ui-color-border-primary)}.ring-opacity-50{--tw-ring-opacity:0.5}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.placeholder\\:font-normal::placeholder{font-weight:400}.placeholder\\:text-\\[--bcm-ui-color-text-placeholder\\]::placeholder{color:var(--bcm-ui-color-text-placeholder)}.hover\\:border-\\[--bcm-ui-color-border-error\\]:hover{border-color:var(--bcm-ui-color-border-error)}.hover\\:border-\\[--bcm-ui-color-border-info\\]:hover{border-color:var(--bcm-ui-color-border-info)}.hover\\:border-\\[--bcm-ui-color-border-primary\\]:hover{border-color:var(--bcm-ui-color-border-primary)}.hover\\:border-\\[--bcm-ui-color-border-success\\]:hover{border-color:var(--bcm-ui-color-border-success)}.hover\\:border-\\[--bcm-ui-color-border-warning\\]:hover{border-color:var(--bcm-ui-color-border-warning)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-error\\]:has(:focus){border-color:var(--bcm-ui-color-border-error)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-info\\]:has(:focus){border-color:var(--bcm-ui-color-border-info)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-primary\\]:has(:focus){border-color:var(--bcm-ui-color-border-primary)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-success\\]:has(:focus){border-color:var(--bcm-ui-color-border-success)}.has-\\[\\:focus\\]\\:border-\\[--bcm-ui-color-border-warning\\]:has(:focus){border-color:var(--bcm-ui-color-border-warning)}';const d=h;const b=class{constructor(r){e(this,r);this.bcmInput=t(this,"bcmInput",1);this.bcmChange=t(this,"bcmChange",1);this.bcmFocus=t(this,"bcmFocus",1);this.bcmBlur=t(this,"bcmBlur",1);this.bcmKeyDown=t(this,"bcmKeyDown",1);this.bcmKeyUp=t(this,"bcmKeyUp",1);this.isFocused=false;this.isValid=true;this.internalStatus="default";this.value="";this.rows=3;this.resize="none";this.autoGrow=false;this._id=a("textarea");this.size="medium";this.status="default";this.fullWidth=false;this.disabled=false;this.readonly=false;this.required=false;this.showCounter=true;this.onChange=e=>{this.bcmChange.emit(e)};this.onFocus=e=>{this.isFocused=true;this.bcmFocus.emit(e)};this.onBlur=e=>{this.isFocused=false;this.bcmBlur.emit(e);this.validateInput()};this.onKeyDown=e=>{this.bcmKeyDown.emit(e)};this.onKeyUp=e=>{this.bcmKeyUp.emit(e)};this.styleClass=i({slots:{base:["bcm-textarea bcm-textarea__container","bg-[--bcm-ui-color-background-base-default]","border border-solid rounded","flex flex-col","transition-colors duration-200","px-2 py-2","w-full"],textareaClass:["textarea","w-full","border-0 outline-0 bg-transparent","appearance-none","text-[--bcm-ui-color-text-default] placeholder:text-[--bcm-ui-color-text-placeholder] placeholder:font-normal","font-sans antialiased font-medium","px-1","overflow-y-auto","min-h-0"],counterText:["textarea-counter-text","text-[--bcm-ui-color-text-placeholder]","text-right","mt-1"]},variants:{size:{small:{base:"",textareaClass:"text-size-4 min-h-[3rem]",counterText:"text-size-3"},medium:{base:"",textareaClass:"text-size-5 min-h-[4rem]",counterText:"text-size-4"},large:{base:"",textareaClass:"text-size-6 min-h-[5rem]",counterText:"text-size-5"}},resize:{none:{textareaClass:"!resize-none"},both:{textareaClass:"!resize"},horizontal:{textareaClass:"!resize-x"},vertical:{textareaClass:"!resize-y"}},status:{default:{base:["border-[--bcm-ui-color-border-default]","hover:border-[--bcm-ui-color-border-primary]","has-[:focus]:border-[--bcm-ui-color-border-primary]"]},error:{base:["border-[--bcm-ui-color-border-error]","hover:border-[--bcm-ui-color-border-error]","has-[:focus]:border-[--bcm-ui-color-border-error]"]},success:{base:["border-[--bcm-ui-color-border-success]","hover:border-[--bcm-ui-color-border-success]","has-[:focus]:border-[--bcm-ui-color-border-success]"]},warning:{base:["border-[--bcm-ui-color-border-warning]","hover:border-[--bcm-ui-color-border-warning]","has-[:focus]:border-[--bcm-ui-color-border-warning]"]},info:{base:["border-[--bcm-ui-color-border-info]","hover:border-[--bcm-ui-color-border-info]","has-[:focus]:border-[--bcm-ui-color-border-info]"]}},fullWidth:{true:"full-width w-full"},disabled:{true:{base:"disabled cursor-not-allowed opacity-50",textareaClass:"!resize-none"},false:""},focused:{true:{base:"ring-2 ring-[--bcm-ui-color-border-primary] ring-opacity-50"},false:""}},defaultVariants:{size:"medium",status:"default",resize:"vertical",fullWidth:false,disabled:false,focused:false}},{twMerge:false})}handleValueChange(e){if(this.textareaRef){this.textareaRef.value=e;if(this.autoGrow){this.adjustHeight()}}}watchStatus(e){this.internalStatus=e}watchErrorMessage(e){this.internalErrorMessage=e}componentWillLoad(){l("en",c);this.internalStatus=this.status;this.internalErrorMessage=this.errorMessage}componentDidLoad(){var e;if(this.autoGrow){this.adjustHeight();(e=this.textareaRef)===null||e===void 0?void 0:e.addEventListener("input",(()=>this.adjustHeight()))}}disconnectedCallback(){if(this.autoGrow&&this.textareaRef){this.textareaRef.removeEventListener("input",(()=>this.adjustHeight()))}}async setFocus(){var e;(e=this.textareaRef)===null||e===void 0?void 0:e.focus()}async setBlur(){var e;(e=this.textareaRef)===null||e===void 0?void 0:e.blur()}async select(){var e;(e=this.textareaRef)===null||e===void 0?void 0:e.select()}adjustHeight(){if(!this.autoGrow||!this.textareaRef)return;requestAnimationFrame((()=>{this.textareaRef.style.height="0px";const e=getComputedStyle(this.textareaRef);const t=parseInt(e.lineHeight);const r=parseInt(e.paddingTop);const o=parseInt(e.paddingBottom);const i=this.textareaRef.scrollHeight;let s=i;if(this.minRows){const e=this.minRows*t+r+o;s=Math.max(s,e)}if(this.maxRows){const e=this.maxRows*t+r+o;s=Math.min(s,e)}this.textareaRef.style.height=`${s}px`}))}validateInput(){if(!this.textareaRef)return;this.isValid=true;this.validationMessage="";const e=this.textareaRef.value;if(this.required&&!e){this.isValid=false;this.validationMessage=n("required");this.internalStatus="error";this.internalErrorMessage=this.validationMessage;return}if(this.minLength&&e.length<this.minLength){this.isValid=false;this.validationMessage=n("minlength",{min:this.minLength})}else if(this.maxLength&&e.length>this.maxLength){this.isValid=false;this.validationMessage=n("maxlength",{max:this.maxLength})}if(this.validator){const t=this.validator(e);if(t){this.isValid=false;this.validationMessage=t}}this.internalStatus=this.isValid?"default":"error";this.internalErrorMessage=this.validationMessage}render(){const e=this._id+"-textarea"||this.name;const{base:t,textareaClass:o,counterText:i}=this.styleClass({size:this.size,status:this.internalStatus,resize:this.resize,fullWidth:this.fullWidth,disabled:this.disabled,focused:this.isFocused});return r("div",{key:"7b05eb283d907f900acf798394397dbedb80ef5a",class:"bcm-ui-element"},this.label&&r("label",{key:"02b916d542ba581f48a50721342602b1724594ec",class:s("textarea-label font-medium",{"text-color-label":!this.disabled,"text-color-disabled":this.disabled},{"text-size-3":this.size==="small","text-size-4":this.size==="medium","text-size-5":this.size==="large"}),htmlFor:e},r("slot",{key:"c56433888e76514abc3c1e4dd19e1b8d9206d855",name:"label"},this.label),this.required&&r("span",{key:"b7faeaa947795adc08c716c9970bb6cdcddef021"},"*")),r("div",{key:"24cddef024d6bcd81b444d0ecf619a28349975e0",class:t()},r("textarea",{key:"09fcd925f11d443be51daf8300bd037d012b33d8",ref:e=>this.textareaRef=e,id:e,class:o(),name:this.name,rows:this.rows,cols:this.cols,disabled:this.disabled,readonly:this.readonly,required:this.required,placeholder:this.placeholder,minLength:this.minLength,maxLength:this.maxLength,"aria-invalid":this.status==="error","aria-required":this.required,"aria-labelledby":this.labelledby,"aria-describedby":this.describedby,value:this.value,onInput:e=>{const t=e.target;this.value=t.value;this.bcmInput.emit(e);this.validateInput();if(this.autoGrow){this.adjustHeight()}},onChange:this.onChange,onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onKeyDown,onKeyUp:this.onKeyUp}),this.showCounter&&r("div",{key:"072155bb06d5556bf5b7315751a80b7f78aedf83",class:i()},this.value.length,this.maxLength?`/${this.maxLength}`:"")),(this.captionText||this.internalErrorMessage||this.validationMessage)&&r("div",{key:"458ccb9dea761f5e381fd64fb58323e31e97e0fe",class:s("textarea-caption-text font-regular mt-1",{"text-[--bcm-ui-color-text-caption]":!this.disabled&&this.internalStatus==="default","text-[--bcm-ui-color-text-error]":!this.disabled&&(this.internalStatus==="error"||!this.isValid),"text-[--bcm-ui-color-text-success]":!this.disabled&&this.internalStatus==="success","text-[--bcm-ui-color-text-warning]":!this.disabled&&this.internalStatus==="warning","text-[--bcm-ui-color-text-info]":!this.disabled&&this.internalStatus==="info","text-[--bcm-ui-color-text-disabled]":this.disabled},{"text-size-3":this.size==="small","text-size-4":this.size==="medium","text-size-5":this.size==="large"})},!this.isValid?this.validationMessage:this.internalStatus==="error"?this.internalErrorMessage:this.captionText))}get el(){return o(this)}static get watchers(){return{value:["handleValueChange"],status:["watchStatus"],errorMessage:["watchErrorMessage"]}}};b.style=d;export{b as bcm_textarea};
2
+ //# sourceMappingURL=p-e08b23ff.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["textareaCss","BcmTextareaStyle0","BcmTextarea","constructor","hostRef","this","isFocused","isValid","internalStatus","value","rows","resize","autoGrow","_id","generateId","size","status","fullWidth","disabled","readonly","required","showCounter","onChange","event","bcmChange","emit","onFocus","bcmFocus","onBlur","bcmBlur","validateInput","onKeyDown","bcmKeyDown","onKeyUp","bcmKeyUp","styleClass","tv","slots","base","textareaClass","counterText","variants","small","medium","large","none","both","horizontal","vertical","default","error","success","warning","info","true","false","focused","defaultVariants","twMerge","handleValueChange","newValue","textareaRef","adjustHeight","watchStatus","watchErrorMessage","internalErrorMessage","componentWillLoad","setValidationMessages","defaultValidationMessages","errorMessage","componentDidLoad","_a","addEventListener","disconnectedCallback","removeEventListener","setFocus","focus","setBlur","blur","select","requestAnimationFrame","style","height","computedStyle","getComputedStyle","lineHeight","parseInt","paddingTop","paddingBottom","scrollHeight","newHeight","minRows","minHeight","Math","max","maxRows","maxHeight","min","validationMessage","getValidationMessage","minLength","length","maxLength","validator","customError","render","textareaId","name","h","key","class","label","classNames","htmlFor","ref","el","id","cols","placeholder","labelledby","describedby","onInput","target","bcmInput","captionText"],"sources":["src/components/textarea/textarea.scss?tag=bcm-textarea&encapsulation=shadow","src/components/textarea/textarea.component.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.bcm-textarea {\n &__container {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n}\n\n// Tailwind'in resize sınıflarını override et\n.resize-none {\n resize: none !important;\n}\n\n.resize {\n resize: both !important;\n}\n\n.resize-y {\n resize: vertical !important;\n}\n\n.resize-x {\n resize: horizontal !important;\n}\n","import { Component, Prop, h, Event, EventEmitter, Method, State, Watch, Element } from '@stencil/core';\nimport { InputSize, InputStatus, TextareaResize } from './types';\nimport { tv } from 'tailwind-variants';\nimport classNames from 'classnames';\nimport { generateId } from '../../utils/id/generate-id';\n// import { checkSlotContent } from '../../utils/slot/check-slot-content';\nimport { getValidationMessage, setValidationMessages, defaultValidationMessages } from '../../utils/validation-messages';\n\n@Component({\n tag: 'bcm-textarea',\n styleUrl: 'textarea.scss',\n shadow: true,\n})\nexport class BcmTextarea {\n @Element() el: HTMLElement;\n private textareaRef: HTMLTextAreaElement;\n\n @State() isFocused = false;\n @State() validationMessage: string;\n @State() isValid = true;\n @State() internalStatus: InputStatus = 'default';\n @State() internalErrorMessage: string;\n\n /** Textarea value */\n @Prop({ mutable: true, reflect: true })\n value: string = '';\n\n /** Textarea rows */\n @Prop()\n rows?: number = 3;\n\n /** Textarea cols */\n @Prop()\n cols?: number;\n\n /** Minimum height in rows */\n @Prop()\n minRows?: number;\n\n /** Maximum height in rows */\n @Prop()\n maxRows?: number;\n\n /** Resize behavior */\n @Prop()\n resize: TextareaResize = 'none';\n\n /** Auto grow height based on content */\n @Prop()\n autoGrow = false;\n\n /** Input placeholder text */\n @Prop()\n placeholder?: string;\n\n /** Input name */\n @Prop()\n name?: string;\n\n /** Input id */\n @Prop({ attribute: 'id', reflect: true })\n _id?: string = generateId('textarea');\n\n /** Controls the textarea size */\n @Prop()\n size: InputSize = 'medium';\n\n /** Defines the textarea's status/state */\n @Prop()\n status: InputStatus = 'default';\n\n /** Full width textarea */\n @Prop({ attribute: 'full-width', reflect: true })\n fullWidth = false;\n\n /** Whether the textarea is disabled */\n @Prop()\n disabled = false;\n\n /** Whether the textarea is readonly */\n @Prop()\n readonly = false;\n\n /** Whether the textarea is required */\n @Prop()\n required = false;\n\n /** Min length for text input */\n @Prop()\n minLength?: number;\n\n /** Max length for text input */\n @Prop()\n maxLength?: number;\n\n /** Show character counter */\n @Prop()\n showCounter: boolean = true;\n\n /** Textarea label for accessibility */\n @Prop()\n label?: string;\n\n /** Error message to display */\n @Prop()\n errorMessage?: string;\n\n /** Caption text to display below textarea */\n @Prop()\n captionText?: string;\n\n /** ID of associated label element */\n @Prop()\n labelledby?: string;\n\n /** ID of associated caption/error text element */\n @Prop()\n describedby?: string;\n\n /** Custom validation function */\n @Prop()\n validator?: (value: string) => string | undefined;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmInput: EventEmitter<InputEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmChange: EventEmitter<Event>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmFocus: EventEmitter<FocusEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmBlur: EventEmitter<FocusEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmKeyDown: EventEmitter<KeyboardEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmKeyUp: EventEmitter<KeyboardEvent>;\n\n @Watch('value')\n handleValueChange(newValue: string) {\n if (this.textareaRef) {\n this.textareaRef.value = newValue;\n if (this.autoGrow) {\n this.adjustHeight();\n }\n }\n }\n\n @Watch('status')\n watchStatus(newValue: InputStatus) {\n this.internalStatus = newValue;\n }\n\n @Watch('errorMessage')\n watchErrorMessage(newValue: string) {\n this.internalErrorMessage = newValue;\n }\n\n componentWillLoad() {\n setValidationMessages('en', defaultValidationMessages);\n this.internalStatus = this.status;\n this.internalErrorMessage = this.errorMessage;\n }\n\n componentDidLoad() {\n if (this.autoGrow) {\n this.adjustHeight();\n // Input event'ini dinle\n this.textareaRef?.addEventListener('input', () => this.adjustHeight());\n }\n }\n\n disconnectedCallback() {\n // Event listener'ı temizle\n if (this.autoGrow && this.textareaRef) {\n this.textareaRef.removeEventListener('input', () => this.adjustHeight());\n }\n }\n\n @Method()\n async setFocus() {\n this.textareaRef?.focus();\n }\n\n @Method()\n async setBlur() {\n this.textareaRef?.blur();\n }\n\n @Method()\n async select() {\n this.textareaRef?.select();\n }\n\n private adjustHeight() {\n if (!this.autoGrow || !this.textareaRef) return;\n\n requestAnimationFrame(() => {\n // Önce height'ı sıfırla ki scrollHeight doğru hesaplansın\n this.textareaRef.style.height = '0px';\n\n const computedStyle = getComputedStyle(this.textareaRef);\n const lineHeight = parseInt(computedStyle.lineHeight);\n const paddingTop = parseInt(computedStyle.paddingTop);\n const paddingBottom = parseInt(computedStyle.paddingBottom);\n const scrollHeight = this.textareaRef.scrollHeight;\n\n let newHeight = scrollHeight;\n\n // Min/max kontrolleri\n if (this.minRows) {\n const minHeight = this.minRows * lineHeight + paddingTop + paddingBottom;\n newHeight = Math.max(newHeight, minHeight);\n }\n\n if (this.maxRows) {\n const maxHeight = this.maxRows * lineHeight + paddingTop + paddingBottom;\n newHeight = Math.min(newHeight, maxHeight);\n }\n\n this.textareaRef.style.height = `${newHeight}px`;\n });\n }\n\n private validateInput(): void {\n if (!this.textareaRef) return;\n\n // Reset validation state\n this.isValid = true;\n this.validationMessage = '';\n\n const value = this.textareaRef.value;\n\n // Required check\n if (this.required && !value) {\n this.isValid = false;\n this.validationMessage = getValidationMessage('required');\n this.internalStatus = 'error';\n this.internalErrorMessage = this.validationMessage;\n return;\n }\n\n // Minimum length check\n if (this.minLength && value.length < this.minLength) {\n this.isValid = false;\n this.validationMessage = getValidationMessage('minlength', { min: this.minLength });\n }\n // Maximum length check\n else if (this.maxLength && value.length > this.maxLength) {\n this.isValid = false;\n this.validationMessage = getValidationMessage('maxlength', { max: this.maxLength });\n }\n\n // Custom validator\n if (this.validator) {\n const customError = this.validator(value);\n if (customError) {\n this.isValid = false;\n this.validationMessage = customError;\n }\n }\n\n // Update component state\n this.internalStatus = this.isValid ? 'default' : 'error';\n this.internalErrorMessage = this.validationMessage;\n }\n\n private onChange = (event: Event) => {\n this.bcmChange.emit(event);\n };\n\n private onFocus = (event: FocusEvent) => {\n this.isFocused = true;\n this.bcmFocus.emit(event);\n };\n\n private onBlur = (event: FocusEvent) => {\n this.isFocused = false;\n this.bcmBlur.emit(event);\n this.validateInput();\n };\n\n private onKeyDown = (event: KeyboardEvent) => {\n this.bcmKeyDown.emit(event);\n };\n\n private onKeyUp = (event: KeyboardEvent) => {\n this.bcmKeyUp.emit(event);\n };\n\n private styleClass = tv(\n {\n slots: {\n base: [\n 'bcm-textarea bcm-textarea__container',\n 'bg-[--bcm-ui-color-background-base-default]',\n 'border border-solid rounded',\n 'flex flex-col', // flex-col ekledik\n 'transition-colors duration-200',\n 'px-2 py-2',\n 'w-full', // w-full ekledik\n ],\n textareaClass: [\n 'textarea',\n 'w-full',\n 'border-0 outline-0 bg-transparent',\n 'appearance-none',\n 'text-[--bcm-ui-color-text-default] placeholder:text-[--bcm-ui-color-text-placeholder] placeholder:font-normal',\n 'font-sans antialiased font-medium',\n 'px-1',\n 'overflow-y-auto', // overflow-y-auto ekledik\n 'min-h-0', // min-h-0 ekledik\n ],\n counterText: ['textarea-counter-text', 'text-[--bcm-ui-color-text-placeholder]', 'text-right', 'mt-1'],\n },\n variants: {\n size: {\n small: {\n base: '',\n textareaClass: 'text-size-4 min-h-[3rem]',\n counterText: 'text-size-3',\n },\n medium: {\n base: '',\n textareaClass: 'text-size-5 min-h-[4rem]',\n counterText: 'text-size-4',\n },\n large: {\n base: '',\n textareaClass: 'text-size-6 min-h-[5rem]',\n counterText: 'text-size-5',\n },\n },\n resize: {\n none: { textareaClass: '!resize-none' },\n both: { textareaClass: '!resize' },\n horizontal: { textareaClass: '!resize-x' },\n vertical: { textareaClass: '!resize-y' },\n },\n status: {\n default: {\n base: ['border-[--bcm-ui-color-border-default]', 'hover:border-[--bcm-ui-color-border-primary]', 'has-[:focus]:border-[--bcm-ui-color-border-primary]'],\n },\n error: {\n base: ['border-[--bcm-ui-color-border-error]', 'hover:border-[--bcm-ui-color-border-error]', 'has-[:focus]:border-[--bcm-ui-color-border-error]'],\n },\n success: {\n base: ['border-[--bcm-ui-color-border-success]', 'hover:border-[--bcm-ui-color-border-success]', 'has-[:focus]:border-[--bcm-ui-color-border-success]'],\n },\n warning: {\n base: ['border-[--bcm-ui-color-border-warning]', 'hover:border-[--bcm-ui-color-border-warning]', 'has-[:focus]:border-[--bcm-ui-color-border-warning]'],\n },\n info: {\n base: ['border-[--bcm-ui-color-border-info]', 'hover:border-[--bcm-ui-color-border-info]', 'has-[:focus]:border-[--bcm-ui-color-border-info]'],\n },\n },\n fullWidth: {\n true: 'full-width w-full',\n },\n disabled: {\n true: {\n base: 'disabled cursor-not-allowed opacity-50',\n textareaClass: '!resize-none', // disabled durumunda resize'ı engelle\n },\n false: '',\n },\n focused: {\n true: {\n base: 'ring-2 ring-[--bcm-ui-color-border-primary] ring-opacity-50',\n },\n false: '',\n },\n },\n defaultVariants: {\n size: 'medium',\n status: 'default',\n resize: 'vertical',\n fullWidth: false,\n disabled: false,\n focused: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const textareaId = this._id + '-textarea' || this.name;\n\n const { base, textareaClass, counterText } = this.styleClass({\n size: this.size,\n status: this.internalStatus,\n resize: this.resize,\n fullWidth: this.fullWidth,\n disabled: this.disabled,\n focused: this.isFocused,\n });\n\n return (\n <div class=\"bcm-ui-element\">\n {/* Label rendering */}\n {this.label && (\n <label\n class={classNames(\n 'textarea-label font-medium',\n {\n 'text-color-label': !this.disabled,\n 'text-color-disabled': this.disabled,\n },\n {\n 'text-size-3': this.size === 'small',\n 'text-size-4': this.size === 'medium',\n 'text-size-5': this.size === 'large',\n },\n )}\n htmlFor={textareaId}\n >\n <slot name=\"label\">{this.label}</slot>\n {this.required && <span>*</span>}\n </label>\n )}\n\n {/* Textarea container */}\n <div class={base()}>\n <textarea\n ref={el => (this.textareaRef = el)}\n id={textareaId}\n class={textareaClass()}\n name={this.name}\n rows={this.rows}\n cols={this.cols}\n disabled={this.disabled}\n readonly={this.readonly}\n required={this.required}\n placeholder={this.placeholder}\n minLength={this.minLength}\n maxLength={this.maxLength}\n aria-invalid={this.status === 'error'}\n aria-required={this.required}\n aria-labelledby={this.labelledby}\n aria-describedby={this.describedby}\n value={this.value}\n onInput={event => {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.bcmInput.emit(event);\n this.validateInput();\n if (this.autoGrow) {\n this.adjustHeight();\n }\n }}\n onChange={this.onChange}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onKeyDown={this.onKeyDown}\n onKeyUp={this.onKeyUp}\n />\n {/* buraya isteğe bağlı olarak gözüken bir karakter sayacı ekleyeceğiz. bu sayaç sağa yaslı olacak şu formatta olacak 0/120 gibi 0 mevcut karakteri 120 ise limiti gösterecek */}\n {this.showCounter && (\n <div class={counterText()}>\n {this.value.length}\n {this.maxLength ? `/${this.maxLength}` : ''}\n </div>\n )}\n </div>\n\n {/* Validation/Caption message */}\n {(this.captionText || this.internalErrorMessage || this.validationMessage) && (\n <div\n class={classNames(\n 'textarea-caption-text font-regular mt-1',\n {\n 'text-[--bcm-ui-color-text-caption]': !this.disabled && this.internalStatus === 'default',\n 'text-[--bcm-ui-color-text-error]': !this.disabled && (this.internalStatus === 'error' || !this.isValid),\n 'text-[--bcm-ui-color-text-success]': !this.disabled && this.internalStatus === 'success',\n 'text-[--bcm-ui-color-text-warning]': !this.disabled && this.internalStatus === 'warning',\n 'text-[--bcm-ui-color-text-info]': !this.disabled && this.internalStatus === 'info',\n 'text-[--bcm-ui-color-text-disabled]': this.disabled,\n },\n {\n 'text-size-3': this.size === 'small',\n 'text-size-4': this.size === 'medium',\n 'text-size-5': this.size === 'large',\n },\n )}\n >\n {!this.isValid ? this.validationMessage : this.internalStatus === 'error' ? this.internalErrorMessage : this.captionText}\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["textareaCss","BcmTextareaStyle0","BcmTextarea","constructor","hostRef","this","isFocused","isValid","internalStatus","value","rows","resize","autoGrow","_id","generateId","size","status","fullWidth","disabled","readonly","required","showCounter","onChange","event","bcmChange","emit","onFocus","bcmFocus","onBlur","bcmBlur","validateInput","onKeyDown","bcmKeyDown","onKeyUp","bcmKeyUp","styleClass","tv","slots","base","textareaClass","counterText","variants","small","medium","large","none","both","horizontal","vertical","default","error","success","warning","info","true","false","focused","defaultVariants","twMerge","handleValueChange","newValue","textareaRef","adjustHeight","watchStatus","watchErrorMessage","internalErrorMessage","componentWillLoad","setValidationMessages","defaultValidationMessages","errorMessage","componentDidLoad","_a","addEventListener","disconnectedCallback","removeEventListener","setFocus","focus","setBlur","blur","select","requestAnimationFrame","style","height","computedStyle","getComputedStyle","lineHeight","parseInt","paddingTop","paddingBottom","scrollHeight","newHeight","minRows","minHeight","Math","max","maxRows","maxHeight","min","validationMessage","getValidationMessage","minLength","length","maxLength","validator","customError","render","textareaId","name","h","key","class","label","classNames","htmlFor","ref","el","id","cols","placeholder","labelledby","describedby","onInput","target","bcmInput","captionText"],"sources":["src/components/textarea/textarea.scss?tag=bcm-textarea&encapsulation=shadow","src/components/textarea/textarea.component.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.bcm-textarea {\n &__container {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n}\n\n// Tailwind'in resize sınıflarını override et\n.resize-none {\n resize: none !important;\n}\n\n.resize {\n resize: both !important;\n}\n\n.resize-y {\n resize: vertical !important;\n}\n\n.resize-x {\n resize: horizontal !important;\n}\n","import { Component, Prop, h, Event, EventEmitter, Method, State, Watch, Element } from '@stencil/core';\nimport { InputSize, InputStatus, TextareaResize } from './types';\nimport { tv } from 'tailwind-variants';\nimport classNames from 'classnames';\nimport { generateId } from '../../utils/id/generate-id';\n// import { checkSlotContent } from '../../utils/slot/check-slot-content';\nimport { getValidationMessage, setValidationMessages, defaultValidationMessages } from '../../utils/validation-messages';\n\n@Component({\n tag: 'bcm-textarea',\n styleUrl: 'textarea.scss',\n shadow: true,\n})\nexport class BcmTextarea {\n @Element() el: HTMLElement;\n private textareaRef: HTMLTextAreaElement;\n\n @State() isFocused = false;\n @State() validationMessage: string;\n @State() isValid = true;\n @State() internalStatus: InputStatus = 'default';\n @State() internalErrorMessage: string;\n\n /** Textarea value */\n @Prop({ mutable: true, reflect: true })\n value: string = '';\n\n /** Textarea rows */\n @Prop()\n rows?: number = 3;\n\n /** Textarea cols */\n @Prop()\n cols?: number;\n\n /** Minimum height in rows */\n @Prop()\n minRows?: number;\n\n /** Maximum height in rows */\n @Prop()\n maxRows?: number;\n\n /** Resize behavior */\n @Prop()\n resize: TextareaResize = 'none';\n\n /** Auto grow height based on content */\n @Prop()\n autoGrow = false;\n\n /** Input placeholder text */\n @Prop()\n placeholder?: string;\n\n /** Input name */\n @Prop()\n name?: string;\n\n /** Input id */\n @Prop({ attribute: 'id', reflect: true })\n _id?: string = generateId('textarea');\n\n /** Controls the textarea size */\n @Prop()\n size: InputSize = 'medium';\n\n /** Defines the textarea's status/state */\n @Prop()\n status: InputStatus = 'default';\n\n /** Full width textarea */\n @Prop({ attribute: 'full-width', reflect: true })\n fullWidth = false;\n\n /** Whether the textarea is disabled */\n @Prop()\n disabled = false;\n\n /** Whether the textarea is readonly */\n @Prop()\n readonly = false;\n\n /** Whether the textarea is required */\n @Prop()\n required = false;\n\n /** Min length for text input */\n @Prop()\n minLength?: number;\n\n /** Max length for text input */\n @Prop()\n maxLength?: number;\n\n /** Show character counter */\n @Prop()\n showCounter: boolean = true;\n\n /** Textarea label for accessibility */\n @Prop()\n label?: string;\n\n /** Error message to display */\n @Prop()\n errorMessage?: string;\n\n /** Caption text to display below textarea */\n @Prop()\n captionText?: string;\n\n /** ID of associated label element */\n @Prop()\n labelledby?: string;\n\n /** ID of associated caption/error text element */\n @Prop()\n describedby?: string;\n\n /** Custom validation function */\n @Prop()\n validator?: (value: string) => string | undefined;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmInput: EventEmitter<InputEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmChange: EventEmitter<Event>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmFocus: EventEmitter<FocusEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmBlur: EventEmitter<FocusEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmKeyDown: EventEmitter<KeyboardEvent>;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n })\n bcmKeyUp: EventEmitter<KeyboardEvent>;\n\n @Watch('value')\n handleValueChange(newValue: string) {\n if (this.textareaRef) {\n this.textareaRef.value = newValue;\n if (this.autoGrow) {\n this.adjustHeight();\n }\n }\n }\n\n @Watch('status')\n watchStatus(newValue: InputStatus) {\n this.internalStatus = newValue;\n }\n\n @Watch('errorMessage')\n watchErrorMessage(newValue: string) {\n this.internalErrorMessage = newValue;\n }\n\n componentWillLoad() {\n setValidationMessages('en', defaultValidationMessages);\n this.internalStatus = this.status;\n this.internalErrorMessage = this.errorMessage;\n }\n\n componentDidLoad() {\n if (this.autoGrow) {\n this.adjustHeight();\n // Input event'ini dinle\n this.textareaRef?.addEventListener('input', () => this.adjustHeight());\n }\n }\n\n disconnectedCallback() {\n // Event listener'ı temizle\n if (this.autoGrow && this.textareaRef) {\n this.textareaRef.removeEventListener('input', () => this.adjustHeight());\n }\n }\n\n @Method()\n async setFocus() {\n this.textareaRef?.focus();\n }\n\n @Method()\n async setBlur() {\n this.textareaRef?.blur();\n }\n\n @Method()\n async select() {\n this.textareaRef?.select();\n }\n\n private adjustHeight() {\n if (!this.autoGrow || !this.textareaRef) return;\n\n requestAnimationFrame(() => {\n // Önce height'ı sıfırla ki scrollHeight doğru hesaplansın\n this.textareaRef.style.height = '0px';\n\n const computedStyle = getComputedStyle(this.textareaRef);\n const lineHeight = parseInt(computedStyle.lineHeight);\n const paddingTop = parseInt(computedStyle.paddingTop);\n const paddingBottom = parseInt(computedStyle.paddingBottom);\n const scrollHeight = this.textareaRef.scrollHeight;\n\n let newHeight = scrollHeight;\n\n // Min/max kontrolleri\n if (this.minRows) {\n const minHeight = this.minRows * lineHeight + paddingTop + paddingBottom;\n newHeight = Math.max(newHeight, minHeight);\n }\n\n if (this.maxRows) {\n const maxHeight = this.maxRows * lineHeight + paddingTop + paddingBottom;\n newHeight = Math.min(newHeight, maxHeight);\n }\n\n this.textareaRef.style.height = `${newHeight}px`;\n });\n }\n\n private validateInput(): void {\n if (!this.textareaRef) return;\n\n // Reset validation state\n this.isValid = true;\n this.validationMessage = '';\n\n const value = this.textareaRef.value;\n\n // Required check\n if (this.required && !value) {\n this.isValid = false;\n this.validationMessage = getValidationMessage('required');\n this.internalStatus = 'error';\n this.internalErrorMessage = this.validationMessage;\n return;\n }\n\n // Minimum length check\n if (this.minLength && value.length < this.minLength) {\n this.isValid = false;\n this.validationMessage = getValidationMessage('minlength', { min: this.minLength });\n }\n // Maximum length check\n else if (this.maxLength && value.length > this.maxLength) {\n this.isValid = false;\n this.validationMessage = getValidationMessage('maxlength', { max: this.maxLength });\n }\n\n // Custom validator\n if (this.validator) {\n const customError = this.validator(value);\n if (customError) {\n this.isValid = false;\n this.validationMessage = customError;\n }\n }\n\n // Update component state\n this.internalStatus = this.isValid ? 'default' : 'error';\n this.internalErrorMessage = this.validationMessage;\n }\n\n private onChange = (event: Event) => {\n this.bcmChange.emit(event);\n };\n\n private onFocus = (event: FocusEvent) => {\n this.isFocused = true;\n this.bcmFocus.emit(event);\n };\n\n private onBlur = (event: FocusEvent) => {\n this.isFocused = false;\n this.bcmBlur.emit(event);\n this.validateInput();\n };\n\n private onKeyDown = (event: KeyboardEvent) => {\n this.bcmKeyDown.emit(event);\n };\n\n private onKeyUp = (event: KeyboardEvent) => {\n this.bcmKeyUp.emit(event);\n };\n\n private styleClass = tv(\n {\n slots: {\n base: [\n 'bcm-textarea bcm-textarea__container',\n 'bg-[--bcm-ui-color-background-base-default]',\n 'border border-solid rounded',\n 'flex flex-col', // flex-col ekledik\n 'transition-colors duration-200',\n 'px-2 py-2',\n 'w-full', // w-full ekledik\n ],\n textareaClass: [\n 'textarea',\n 'w-full',\n 'border-0 outline-0 bg-transparent',\n 'appearance-none',\n 'text-[--bcm-ui-color-text-default] placeholder:text-[--bcm-ui-color-text-placeholder] placeholder:font-normal',\n 'font-sans antialiased font-medium',\n 'px-1',\n 'overflow-y-auto', // overflow-y-auto ekledik\n 'min-h-0', // min-h-0 ekledik\n ],\n counterText: ['textarea-counter-text', 'text-[--bcm-ui-color-text-placeholder]', 'text-right', 'mt-1'],\n },\n variants: {\n size: {\n small: {\n base: '',\n textareaClass: 'text-size-4 min-h-[3rem]',\n counterText: 'text-size-3',\n },\n medium: {\n base: '',\n textareaClass: 'text-size-5 min-h-[4rem]',\n counterText: 'text-size-4',\n },\n large: {\n base: '',\n textareaClass: 'text-size-6 min-h-[5rem]',\n counterText: 'text-size-5',\n },\n },\n resize: {\n none: { textareaClass: '!resize-none' },\n both: { textareaClass: '!resize' },\n horizontal: { textareaClass: '!resize-x' },\n vertical: { textareaClass: '!resize-y' },\n },\n status: {\n default: {\n base: ['border-[--bcm-ui-color-border-default]', 'hover:border-[--bcm-ui-color-border-primary]', 'has-[:focus]:border-[--bcm-ui-color-border-primary]'],\n },\n error: {\n base: ['border-[--bcm-ui-color-border-error]', 'hover:border-[--bcm-ui-color-border-error]', 'has-[:focus]:border-[--bcm-ui-color-border-error]'],\n },\n success: {\n base: ['border-[--bcm-ui-color-border-success]', 'hover:border-[--bcm-ui-color-border-success]', 'has-[:focus]:border-[--bcm-ui-color-border-success]'],\n },\n warning: {\n base: ['border-[--bcm-ui-color-border-warning]', 'hover:border-[--bcm-ui-color-border-warning]', 'has-[:focus]:border-[--bcm-ui-color-border-warning]'],\n },\n info: {\n base: ['border-[--bcm-ui-color-border-info]', 'hover:border-[--bcm-ui-color-border-info]', 'has-[:focus]:border-[--bcm-ui-color-border-info]'],\n },\n },\n fullWidth: {\n true: 'full-width w-full',\n },\n disabled: {\n true: {\n base: 'disabled cursor-not-allowed opacity-50',\n textareaClass: '!resize-none', // disabled durumunda resize'ı engelle\n },\n false: '',\n },\n focused: {\n true: {\n base: 'ring-2 ring-[--bcm-ui-color-border-primary] ring-opacity-50',\n },\n false: '',\n },\n },\n defaultVariants: {\n size: 'medium',\n status: 'default',\n resize: 'vertical',\n fullWidth: false,\n disabled: false,\n focused: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const textareaId = this._id + '-textarea' || this.name;\n\n const { base, textareaClass, counterText } = this.styleClass({\n size: this.size,\n status: this.internalStatus,\n resize: this.resize,\n fullWidth: this.fullWidth,\n disabled: this.disabled,\n focused: this.isFocused,\n });\n\n return (\n <div class=\"bcm-ui-element\">\n {/* Label rendering */}\n {this.label && (\n <label\n class={classNames(\n 'textarea-label font-medium',\n {\n 'text-color-label': !this.disabled,\n 'text-color-disabled': this.disabled,\n },\n {\n 'text-size-3': this.size === 'small',\n 'text-size-4': this.size === 'medium',\n 'text-size-5': this.size === 'large',\n },\n )}\n htmlFor={textareaId}\n >\n <slot name=\"label\">{this.label}</slot>\n {this.required && <span>*</span>}\n </label>\n )}\n\n {/* Textarea container */}\n <div class={base()}>\n <textarea\n ref={el => (this.textareaRef = el)}\n id={textareaId}\n class={textareaClass()}\n name={this.name}\n rows={this.rows}\n cols={this.cols}\n disabled={this.disabled}\n readonly={this.readonly}\n required={this.required}\n placeholder={this.placeholder}\n minLength={this.minLength}\n maxLength={this.maxLength}\n aria-invalid={this.status === 'error'}\n aria-required={this.required}\n aria-labelledby={this.labelledby}\n aria-describedby={this.describedby}\n value={this.value}\n onInput={event => {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.bcmInput.emit(event);\n this.validateInput();\n if (this.autoGrow) {\n this.adjustHeight();\n }\n }}\n onChange={this.onChange}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onKeyDown={this.onKeyDown}\n onKeyUp={this.onKeyUp}\n />\n {/* buraya isteğe bağlı olarak gözüken bir karakter sayacı ekleyeceğiz. bu sayaç sağa yaslı olacak şu formatta olacak 0/120 gibi 0 mevcut karakteri 120 ise limiti gösterecek */}\n {this.showCounter && (\n <div class={counterText()}>\n {this.value.length}\n {this.maxLength ? `/${this.maxLength}` : ''}\n </div>\n )}\n </div>\n\n {/* Validation/Caption message */}\n {(this.captionText || this.internalErrorMessage || this.validationMessage) && (\n <div\n class={classNames(\n 'textarea-caption-text font-regular mt-1',\n {\n 'text-[--bcm-ui-color-text-caption]': !this.disabled && this.internalStatus === 'default',\n 'text-[--bcm-ui-color-text-error]': !this.disabled && (this.internalStatus === 'error' || !this.isValid),\n 'text-[--bcm-ui-color-text-success]': !this.disabled && this.internalStatus === 'success',\n 'text-[--bcm-ui-color-text-warning]': !this.disabled && this.internalStatus === 'warning',\n 'text-[--bcm-ui-color-text-info]': !this.disabled && this.internalStatus === 'info',\n 'text-[--bcm-ui-color-text-disabled]': this.disabled,\n },\n {\n 'text-size-3': this.size === 'small',\n 'text-size-4': this.size === 'medium',\n 'text-size-5': this.size === 'large',\n },\n )}\n >\n {!this.isValid ? this.validationMessage : this.internalStatus === 'error' ? this.internalErrorMessage : this.captionText}\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,c as o,h as a,g as r}from"./p-15fe392b.js";import{c as t}from"./p-5fcf77f9.js";const c=".flex{display:flex}:host{display:inline-block;width:100%}::slotted([slot=left-content]){align-items:center;display:flex;flex-direction:row;gap:8px}::slotted([slot=right-content]){align-items:center;display:flex;flex-direction:row;gap:8px}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.w-full{width:100%}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.gap-2{gap:.5rem}.text-pretty{text-wrap:pretty}.bg-\\[var\\(--bcm-ui-color-background-base-active\\)\\]{background-color:var(--bcm-ui-color-background-base-active)}.bg-\\[var\\(--bcm-ui-color-background-palette-red-default\\)\\]{background-color:var(--bcm-ui-color-background-palette-red-default)}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.text-color{color:var(--bcm-ui-color-text-default)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\\:bg-\\[var\\(--bcm-ui-color-background-base-active\\)\\]:hover{background-color:var(--bcm-ui-color-background-base-active)}.hover\\:bg-\\[var\\(--bcm-ui-color-background-base-hover\\)\\]:hover{background-color:var(--bcm-ui-color-background-base-hover)}.hover\\:bg-\\[var\\(--bcm-ui-color-background-palette-red-default\\)\\]:hover{background-color:var(--bcm-ui-color-background-palette-red-default)}";const i=c;const l=class{constructor(a){e(this,a);this.bcmDropDownItemChange=o(this,"bcmDropDownItemChange",1);this.selected=false;this.error=false;this.disabled=false;this.dropdownItemClass=t({base:"dropdown-item bcm-ui-element bcm-ui-content-display flex flex-row gap-2 py-2 px-4 cursor-pointer text-color",variants:{selected:{true:"bg-[var(--bcm-ui-color-background-base-active)] hover:bg-[var(--bcm-ui-color-background-base-active)]",false:"hover:bg-[var(--bcm-ui-color-background-base-hover)]"},error:{true:"bg-[var(--bcm-ui-color-background-palette-red-default)] hover:bg-[var(--bcm-ui-color-background-palette-red-default)]",false:""},disabled:{true:"",false:""}},defaultVariants:{selected:false,error:false,disabled:false}},{twMerge:false})}handleClick(){this.selected=true;this.bcmDropDownItemChange.emit({element:this.host,selected:this.selected})}render(){var e;return a("div",{key:"5fc499042cd981b6edfe3f44550cf198c49af57a","aria-checked":this.selected,class:this.dropdownItemClass({selected:this.selected,error:this.error}),onClick:()=>this.handleClick()},a("slot",{key:"d071c2f932538bfac7db4ba8b2814737f8564d86",name:"left-content"},this.icon&&a("bcm-icon",{key:"a56ca3229b08765f10b792b0aaa850e15ab6a233","icon-name":this.icon})),a("div",{key:"69c25567202874fb152f0b01205c79a14f9bb534",class:"flex flex-row text-pretty w-full"},a("slot",{key:"be46aaf4103f9d9a1f7c1951cabb7523b97a3004"},this.text)),a("slot",{key:"91067b0910f89d6a77b135c36990ecc14d5b97fe",name:"right-content"},(e=this.rightIcons)===null||e===void 0?void 0:e.map((e=>a("bcm-icon",{"icon-name":e})))))}get host(){return r(this)}};l.style=i;export{l as bcm_dropdown_item};
2
+ //# sourceMappingURL=p-f0ece968.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["dropdownItemCss","BcmDropdownItemStyle0","DropdownItem","constructor","hostRef","this","selected","error","disabled","dropdownItemClass","tv","base","variants","true","false","defaultVariants","twMerge","handleClick","bcmDropDownItemChange","emit","element","host","render","h","key","class","onClick","name","icon","text","_a","rightIcons","map"],"sources":["src/components/dropdown-item/dropdown-item.css?tag=bcm-dropdown-item&encapsulation=shadow","src/components/dropdown-item/dropdown-item.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n width: 100%;\n}\n\n::slotted([slot='left-content']) {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n}\n\n::slotted([slot='right-content']) {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n}\n","import { Component, ComponentInterface, h, Prop, Event, EventEmitter, Element } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n@Component({\n tag: 'bcm-dropdown-item',\n styleUrl: 'dropdown-item.css',\n shadow: true,\n})\nexport class DropdownItem implements ComponentInterface {\n @Element() host: HTMLElement;\n @Prop() text: string;\n @Prop() icon: string;\n @Prop() rightIcons: string[];\n @Prop({ reflect: true }) selected: boolean = false;\n @Prop({ reflect: true }) error: boolean = false;\n @Prop({ reflect: true }) disabled: boolean = false;\n\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmDropDownItemChange',\n })\n bcmDropDownItemChange: EventEmitter<any>;\n\n\n private handleClick() {\n this.selected = true;\n this.bcmDropDownItemChange.emit({\n element: this.host,\n selected: this.selected,\n });\n }\n\n private dropdownItemClass = tv(\n {\n base: 'dropdown-item bcm-ui-element bcm-ui-content-display flex flex-row gap-2 py-2 px-4 cursor-pointer text-color',\n variants: {\n selected: {\n true: 'bg-[var(--bcm-ui-color-background-base-active)] hover:bg-[var(--bcm-ui-color-background-base-active)]',\n false: 'hover:bg-[var(--bcm-ui-color-background-base-hover)]',\n },\n error: {\n true: 'bg-[var(--bcm-ui-color-background-palette-red-default)] hover:bg-[var(--bcm-ui-color-background-palette-red-default)]',\n false: '',\n },\n disabled: {\n true: '', // should be discuss with ux team\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n error: false,\n disabled: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n return (\n <div\n aria-checked={this.selected}\n class={this.dropdownItemClass({\n selected: this.selected,\n error: this.error,\n })}\n onClick={() => this.handleClick()}\n >\n <slot name=\"left-content\">{this.icon && <bcm-icon icon-name={this.icon}></bcm-icon>}</slot>\n <div class=\"flex flex-row text-pretty w-full\">\n <slot>{this.text}</slot>\n </div>\n <slot name=\"right-content\">\n {this.rightIcons?.map(icon => (\n <bcm-icon icon-name={icon}></bcm-icon>\n ))}\n </slot>\n </div>\n );\n }\n}\n"],"mappings":"6FAAA,MAAMA,EAAkB,k+CACxB,MAAAC,EAAeD,E,MCOFE,EAAY,MALzB,WAAAC,CAAAC,G,uEAU6BC,KAAAC,SAAoB,MACpBD,KAAAE,MAAiB,MACjBF,KAAAG,SAAoB,MAmBrCH,KAAAI,kBAAoBC,EACxB,CACIC,KAAM,8GACNC,SAAU,CACNN,SAAU,CACNO,KAAM,wGACNC,MAAO,wDAEXP,MAAO,CACHM,KAAM,wHACNC,MAAO,IAEXN,SAAU,CACNK,KAAM,GACNC,MAAO,KAGfC,gBAAiB,CACbT,SAAU,MACVC,MAAO,MACPC,SAAU,QAGlB,CACIQ,QAAS,O,CAhCT,WAAAC,GACJZ,KAAKC,SAAW,KAChBD,KAAKa,sBAAsBC,KAAK,CAC5BC,QAASf,KAAKgB,KACdf,SAAUD,KAAKC,U,CAgCvB,MAAAgB,G,MACI,OACIC,EAAA,OAAAC,IAAA,0DACkBnB,KAAKC,SACnBmB,MAAOpB,KAAKI,kBAAkB,CAC1BH,SAAUD,KAAKC,SACfC,MAAOF,KAAKE,QAEhBmB,QAAS,IAAMrB,KAAKY,eAEpBM,EAAA,QAAAC,IAAA,2CAAMG,KAAK,gBAAgBtB,KAAKuB,MAAQL,EAAA,YAAAC,IAAA,uDAAqBnB,KAAKuB,QAClEL,EAAA,OAAAC,IAAA,2CAAKC,MAAM,oCACPF,EAAA,QAAAC,IAAA,4CAAOnB,KAAKwB,OAEhBN,EAAA,QAAAC,IAAA,2CAAMG,KAAK,kBACNG,EAAAzB,KAAK0B,cAAU,MAAAD,SAAA,SAAAA,EAAEE,KAAIJ,GAClBL,EAAA,wBAAqBK,O","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{r as e,c as t,h as a}from"./p-15fe392b.js";import{c as r}from"./p-5fcf77f9.js";const i=":host{--bcm-alert-bg:var(--bcm-ui-color-background-default-default);--bcm-alert-text:var(--bcm-ui-color-text-default);--bcm-alert-radius:6px;display:inline-block;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.flex{display:flex}.w-full{width:100%}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.rounded-\\[--bcm-alert-radius\\]{border-radius:var(--bcm-alert-radius)}.bg-\\[--bcm-alert-bg\\]{background-color:var(--bcm-alert-bg)}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-\\[--bcm-alert-text\\]{color:var(--bcm-alert-text)}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}";const c=i;const s=class{constructor(a){e(this,a);this.bcmDismiss=t(this,"bcmDismiss",7);this.status="default";this.size="medium";this.kind="filled";this.dismissible=true;this.showStatusIcon=true}onDismiss(){this.bcmDismiss.emit()}getStatusIcon(){const e={info:"fa-regular fa-info-circle",error:"fa-regular fa-exclamation-circle",warning:"fa-regular fa-exclamation-triangle",success:"fa-regular fa-check-circle"};return e[this.status]}get alertClass(){return r({slots:{base:"alert bcm-ui-element font-medium flex items-center justify-between bg-[--bcm-alert-bg] text-[--bcm-alert-text] rounded-[--bcm-alert-radius] px-3 gap-3 w-full",section:"flex items-center gap-2"},variants:{size:{small:{base:"py-1.5 text-size-4"},medium:{base:"py-2 text-size-5"},large:{base:"py-2.5 text-size-6"}}}},{twMerge:false})}get alertStyles(){let e={info:"var(--bcm-ui-color-background-palette-blue-default)",error:"var(--bcm-ui-color-background-palette-red-default)",warning:"var(--bcm-ui-color-background-palette-yellow-default)",success:"var(--bcm-ui-color-background-palette-green-default)",default:"var(--bcm-ui-color-background-palette-gray-default)"};let t={info:"var(--bcm-ui-color-text-info)",error:"var(--bcm-ui-color-text-error)",warning:"var(--bcm-ui-color-text-warning)",success:"var(--bcm-ui-color-text-success)",default:"var(--bcm-ui-color-text-default)"};let a={"--bcm-alert-bg":e[this.status],"--bcm-alert-text":t[this.status]};let r={"--bcm-alert-bg":"transparent","--bcm-alert-text":t[this.status]};return this.kind==="filled"?a:r}render(){const{base:e,section:t}=this.alertClass({size:this.size});return a("div",{key:"c1cd1054d0b922391f3cfefc9c235467f7775702",role:"alert","aria-live":"assertive","aria-atomic":"true",class:e(),style:this.alertStyles},a("div",{key:"370803a74a81754a5e3b34c85e9fb9e8f1d79f1e",class:t()},this.showStatusIcon&&a("bcm-icon",{key:"dca6a4bb6009c9c5a1090d787f8e332c5db49034","icon-name":this.getStatusIcon()}),a("slot",{key:"d43da27453a067784da5a3e117ad685783283f2f"})),a("div",{key:"3173e4bfb61d5817679f77689a62e74128ccfbe0",class:t()},a("div",{key:"922c11093ae01a206dae99ac71b57c8afb14048b",part:"action"},a("slot",{key:"3a470f25317d0fcbada630464ed74e4593a1a75c",name:"action"})),a("span",{key:"89595ade17c791b22ed5a98d2559b87877839308",part:"icon"},this.dismissible&&a("bcm-icon",{key:"93056d5c2057555d61b2e7ad246e7b163456843e",onClick:()=>this.onDismiss(),class:"cursor-pointer","icon-name":"fa-regular fa-xmark"}))))}};s.style=c;export{s as bcm_alert};
2
- //# sourceMappingURL=p-ebed10d5.entry.js.map
1
+ import{r as e,c as t,h as a}from"./p-15fe392b.js";import{c as r}from"./p-5fcf77f9.js";const i=":host{--bcm-alert-bg:var(--bcm-ui-color-background-default-default);--bcm-alert-text:var(--bcm-ui-color-text-default);--bcm-alert-radius:6px;display:inline-block;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.flex{display:flex}.w-full{width:100%}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.rounded-\\[--bcm-alert-radius\\]{border-radius:var(--bcm-alert-radius)}.bg-\\[--bcm-alert-bg\\]{background-color:var(--bcm-alert-bg)}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-\\[--bcm-alert-text\\]{color:var(--bcm-alert-text)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}";const c=i;const s=class{constructor(a){e(this,a);this.bcmDismiss=t(this,"bcmDismiss",7);this.status="default";this.size="medium";this.kind="filled";this.dismissible=true;this.showStatusIcon=true}onDismiss(){this.bcmDismiss.emit()}getStatusIcon(){const e={info:"fa-regular fa-info-circle",error:"fa-regular fa-exclamation-circle",warning:"fa-regular fa-exclamation-triangle",success:"fa-regular fa-check-circle"};return e[this.status]}get alertClass(){return r({slots:{base:"alert bcm-ui-element font-medium flex items-center justify-between bg-[--bcm-alert-bg] text-[--bcm-alert-text] rounded-[--bcm-alert-radius] px-3 gap-3 w-full",section:"flex items-center gap-2"},variants:{size:{small:{base:"py-1.5 text-size-4"},medium:{base:"py-2 text-size-5"},large:{base:"py-2.5 text-size-6"}}}},{twMerge:false})}get alertStyles(){let e={info:"var(--bcm-ui-color-background-palette-blue-default)",error:"var(--bcm-ui-color-background-palette-red-default)",warning:"var(--bcm-ui-color-background-palette-yellow-default)",success:"var(--bcm-ui-color-background-palette-green-default)",default:"var(--bcm-ui-color-background-palette-gray-default)"};let t={info:"var(--bcm-ui-color-text-info)",error:"var(--bcm-ui-color-text-error)",warning:"var(--bcm-ui-color-text-warning)",success:"var(--bcm-ui-color-text-success)",default:"var(--bcm-ui-color-text-default)"};let a={"--bcm-alert-bg":e[this.status],"--bcm-alert-text":t[this.status]};let r={"--bcm-alert-bg":"transparent","--bcm-alert-text":t[this.status]};return this.kind==="filled"?a:r}render(){const{base:e,section:t}=this.alertClass({size:this.size});return a("div",{key:"c1cd1054d0b922391f3cfefc9c235467f7775702",role:"alert","aria-live":"assertive","aria-atomic":"true",class:e(),style:this.alertStyles},a("div",{key:"370803a74a81754a5e3b34c85e9fb9e8f1d79f1e",class:t()},this.showStatusIcon&&a("bcm-icon",{key:"dca6a4bb6009c9c5a1090d787f8e332c5db49034","icon-name":this.getStatusIcon()}),a("slot",{key:"d43da27453a067784da5a3e117ad685783283f2f"})),a("div",{key:"3173e4bfb61d5817679f77689a62e74128ccfbe0",class:t()},a("div",{key:"922c11093ae01a206dae99ac71b57c8afb14048b",part:"action"},a("slot",{key:"3a470f25317d0fcbada630464ed74e4593a1a75c",name:"action"})),a("span",{key:"89595ade17c791b22ed5a98d2559b87877839308",part:"icon"},this.dismissible&&a("bcm-icon",{key:"93056d5c2057555d61b2e7ad246e7b163456843e",onClick:()=>this.onDismiss(),class:"cursor-pointer","icon-name":"fa-regular fa-xmark"}))))}};s.style=c;export{s as bcm_alert};
2
+ //# sourceMappingURL=p-f9eeafa7.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["alertCss","BcmAlertStyle0","BcmAlert","constructor","hostRef","this","status","size","kind","dismissible","showStatusIcon","onDismiss","bcmDismiss","emit","getStatusIcon","statusIcon","info","error","warning","success","alertClass","tv","slots","base","section","variants","small","medium","large","twMerge","alertStyles","colorStatus","default","textStatusColor","filleStyle","textStyle","render","h","key","role","class","style","part","name","onClick"],"sources":["src/components/alert/alert.css?tag=bcm-alert&encapsulation=shadow","src/components/alert/alert.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n width: 100%;\n --bcm-alert-bg: var(--bcm-ui-color-background-default-default);\n --bcm-alert-text: var(--bcm-ui-color-text-default);\n --bcm-alert-radius: 6px;\n}\n","import { Component, ComponentInterface, h, Prop, Event, EventEmitter } from '@stencil/core';\nimport { AlertKind, AlertSize, AlertStatus } from './types';\nimport { tv } from 'tailwind-variants';\n\n\n/**\n * Alert component that displays messages with different statuses and styles\n * @class BcmAlert\n */\n@Component({\n tag: 'bcm-alert',\n styleUrl: 'alert.css',\n shadow: true,\n})\nexport class BcmAlert implements ComponentInterface {\n /** Alert status type */\n @Prop()\n status?: AlertStatus = 'default';\n\n /** Alert size variant */\n @Prop()\n size?: AlertSize = 'medium';\n\n /** Alert style variant */\n @Prop()\n kind?: AlertKind = 'filled';\n\n /** Whether alert can be dismissed */\n @Prop()\n dismissible?: boolean = true;\n\n /** Whether to show status icon */\n @Prop()\n showStatusIcon?: boolean = true;\n\n @Event() bcmDismiss: EventEmitter<void>;\n\n\n /**\n * Handles alert dismissal\n * @private\n */\n private onDismiss() {\n this.bcmDismiss.emit();\n }\n\n private getStatusIcon() {\n const statusIcon = {\n info: 'fa-regular fa-info-circle',\n error: 'fa-regular fa-exclamation-circle',\n warning: 'fa-regular fa-exclamation-triangle',\n success: 'fa-regular fa-check-circle',\n };\n return statusIcon[this.status];\n }\n\n private get alertClass() {\n return tv(\n {\n slots: {\n base: 'alert bcm-ui-element font-medium flex items-center justify-between bg-[--bcm-alert-bg] text-[--bcm-alert-text] rounded-[--bcm-alert-radius] px-3 gap-3 w-full',\n section: 'flex items-center gap-2',\n },\n variants: {\n size: {\n small: {\n base: 'py-1.5 text-size-4',\n },\n medium: {\n base: 'py-2 text-size-5',\n },\n large: {\n base: 'py-2.5 text-size-6',\n },\n },\n },\n },\n {\n twMerge: false,\n },\n );\n }\n\n private get alertStyles() {\n let colorStatus = {\n info: 'var(--bcm-ui-color-background-palette-blue-default)',\n error: 'var(--bcm-ui-color-background-palette-red-default)',\n warning: 'var(--bcm-ui-color-background-palette-yellow-default)',\n success: 'var(--bcm-ui-color-background-palette-green-default)',\n default: 'var(--bcm-ui-color-background-palette-gray-default)',\n };\n\n let textStatusColor = {\n info: 'var(--bcm-ui-color-text-info)',\n error: 'var(--bcm-ui-color-text-error)',\n warning: 'var(--bcm-ui-color-text-warning)',\n success: 'var(--bcm-ui-color-text-success)',\n default: 'var(--bcm-ui-color-text-default)',\n };\n\n let filleStyle = {\n '--bcm-alert-bg': colorStatus[this.status],\n '--bcm-alert-text': textStatusColor[this.status],\n };\n\n let textStyle = {\n '--bcm-alert-bg': 'transparent',\n '--bcm-alert-text': textStatusColor[this.status],\n };\n\n return this.kind === 'filled' ? filleStyle : textStyle;\n }\n\n render() {\n const { base, section } = this.alertClass({ size: this.size });\n return (\n <div role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class={base()} style={this.alertStyles}>\n <div class={section()}>\n {this.showStatusIcon && <bcm-icon icon-name={this.getStatusIcon()}></bcm-icon>}\n <slot></slot>\n </div>\n <div class={section()}>\n <div part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n <span part=\"icon\">{this.dismissible && <bcm-icon onClick={() => this.onDismiss()} class=\"cursor-pointer\" icon-name=\"fa-regular fa-xmark\"></bcm-icon>}</span>\n </div>\n </div>\n );\n }\n}\n"],"mappings":"sFAAA,MAAMA,EAAW,08CACjB,MAAAC,EAAeD,E,MCaFE,EAAQ,MALrB,WAAAC,CAAAC,G,iDAQIC,KAAAC,OAAuB,UAIvBD,KAAAE,KAAmB,SAInBF,KAAAG,KAAmB,SAInBH,KAAAI,YAAwB,KAIxBJ,KAAAK,eAA2B,I,CASnB,SAAAC,GACJN,KAAKO,WAAWC,M,CAGZ,aAAAC,GACJ,MAAMC,EAAa,CACfC,KAAM,4BACNC,MAAO,mCACPC,QAAS,qCACTC,QAAS,8BAEb,OAAOJ,EAAWV,KAAKC,O,CAG3B,cAAYc,GACR,OAAOC,EACH,CACIC,MAAO,CACHC,KAAM,gKACNC,QAAS,2BAEbC,SAAU,CACNlB,KAAM,CACFmB,MAAO,CACHH,KAAM,sBAEVI,OAAQ,CACJJ,KAAM,oBAEVK,MAAO,CACHL,KAAM,yBAKtB,CACIM,QAAS,O,CAKrB,eAAYC,GACR,IAAIC,EAAc,CACdf,KAAM,sDACNC,MAAO,qDACPC,QAAS,wDACTC,QAAS,uDACTa,QAAS,uDAGb,IAAIC,EAAkB,CAClBjB,KAAM,gCACNC,MAAO,iCACPC,QAAS,mCACTC,QAAS,mCACTa,QAAS,oCAGb,IAAIE,EAAa,CACb,iBAAkBH,EAAY1B,KAAKC,QACnC,mBAAoB2B,EAAgB5B,KAAKC,SAG7C,IAAI6B,EAAY,CACZ,iBAAkB,cAClB,mBAAoBF,EAAgB5B,KAAKC,SAG7C,OAAOD,KAAKG,OAAS,SAAW0B,EAAaC,C,CAGjD,MAAAC,GACI,MAAMb,KAAEA,EAAIC,QAAEA,GAAYnB,KAAKe,WAAW,CAAEb,KAAMF,KAAKE,OACvD,OACI8B,EAAA,OAAAC,IAAA,2CAAKC,KAAK,QAAO,YAAW,YAAW,cAAa,OAAOC,MAAOjB,IAAQkB,MAAOpC,KAAKyB,aAClFO,EAAA,OAAAC,IAAA,2CAAKE,MAAOhB,KACPnB,KAAKK,gBAAkB2B,EAAA,YAAAC,IAAA,uDAAqBjC,KAAKS,kBAClDuB,EAAA,QAAAC,IAAA,8CAEJD,EAAA,OAAAC,IAAA,2CAAKE,MAAOhB,KACRa,EAAA,OAAAC,IAAA,2CAAKI,KAAK,UACNL,EAAA,QAAAC,IAAA,2CAAMK,KAAK,YAEfN,EAAA,QAAAC,IAAA,2CAAMI,KAAK,QAAQrC,KAAKI,aAAe4B,EAAA,YAAAC,IAAA,2CAAUM,QAAS,IAAMvC,KAAKM,YAAa6B,MAAM,iBAAgB,YAAW,0B","ignoreList":[]}
1
+ {"version":3,"names":["alertCss","BcmAlertStyle0","BcmAlert","constructor","hostRef","this","status","size","kind","dismissible","showStatusIcon","onDismiss","bcmDismiss","emit","getStatusIcon","statusIcon","info","error","warning","success","alertClass","tv","slots","base","section","variants","small","medium","large","twMerge","alertStyles","colorStatus","default","textStatusColor","filleStyle","textStyle","render","h","key","role","class","style","part","name","onClick"],"sources":["src/components/alert/alert.css?tag=bcm-alert&encapsulation=shadow","src/components/alert/alert.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n width: 100%;\n --bcm-alert-bg: var(--bcm-ui-color-background-default-default);\n --bcm-alert-text: var(--bcm-ui-color-text-default);\n --bcm-alert-radius: 6px;\n}\n","import { Component, ComponentInterface, h, Prop, Event, EventEmitter } from '@stencil/core';\nimport { AlertKind, AlertSize, AlertStatus } from './types';\nimport { tv } from 'tailwind-variants';\n\n\n/**\n * Alert component that displays messages with different statuses and styles\n * @class BcmAlert\n */\n@Component({\n tag: 'bcm-alert',\n styleUrl: 'alert.css',\n shadow: true,\n})\nexport class BcmAlert implements ComponentInterface {\n /** Alert status type */\n @Prop()\n status?: AlertStatus = 'default';\n\n /** Alert size variant */\n @Prop()\n size?: AlertSize = 'medium';\n\n /** Alert style variant */\n @Prop()\n kind?: AlertKind = 'filled';\n\n /** Whether alert can be dismissed */\n @Prop()\n dismissible?: boolean = true;\n\n /** Whether to show status icon */\n @Prop()\n showStatusIcon?: boolean = true;\n\n @Event() bcmDismiss: EventEmitter<void>;\n\n\n /**\n * Handles alert dismissal\n * @private\n */\n private onDismiss() {\n this.bcmDismiss.emit();\n }\n\n private getStatusIcon() {\n const statusIcon = {\n info: 'fa-regular fa-info-circle',\n error: 'fa-regular fa-exclamation-circle',\n warning: 'fa-regular fa-exclamation-triangle',\n success: 'fa-regular fa-check-circle',\n };\n return statusIcon[this.status];\n }\n\n private get alertClass() {\n return tv(\n {\n slots: {\n base: 'alert bcm-ui-element font-medium flex items-center justify-between bg-[--bcm-alert-bg] text-[--bcm-alert-text] rounded-[--bcm-alert-radius] px-3 gap-3 w-full',\n section: 'flex items-center gap-2',\n },\n variants: {\n size: {\n small: {\n base: 'py-1.5 text-size-4',\n },\n medium: {\n base: 'py-2 text-size-5',\n },\n large: {\n base: 'py-2.5 text-size-6',\n },\n },\n },\n },\n {\n twMerge: false,\n },\n );\n }\n\n private get alertStyles() {\n let colorStatus = {\n info: 'var(--bcm-ui-color-background-palette-blue-default)',\n error: 'var(--bcm-ui-color-background-palette-red-default)',\n warning: 'var(--bcm-ui-color-background-palette-yellow-default)',\n success: 'var(--bcm-ui-color-background-palette-green-default)',\n default: 'var(--bcm-ui-color-background-palette-gray-default)',\n };\n\n let textStatusColor = {\n info: 'var(--bcm-ui-color-text-info)',\n error: 'var(--bcm-ui-color-text-error)',\n warning: 'var(--bcm-ui-color-text-warning)',\n success: 'var(--bcm-ui-color-text-success)',\n default: 'var(--bcm-ui-color-text-default)',\n };\n\n let filleStyle = {\n '--bcm-alert-bg': colorStatus[this.status],\n '--bcm-alert-text': textStatusColor[this.status],\n };\n\n let textStyle = {\n '--bcm-alert-bg': 'transparent',\n '--bcm-alert-text': textStatusColor[this.status],\n };\n\n return this.kind === 'filled' ? filleStyle : textStyle;\n }\n\n render() {\n const { base, section } = this.alertClass({ size: this.size });\n return (\n <div role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class={base()} style={this.alertStyles}>\n <div class={section()}>\n {this.showStatusIcon && <bcm-icon icon-name={this.getStatusIcon()}></bcm-icon>}\n <slot></slot>\n </div>\n <div class={section()}>\n <div part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n <span part=\"icon\">{this.dismissible && <bcm-icon onClick={() => this.onDismiss()} class=\"cursor-pointer\" icon-name=\"fa-regular fa-xmark\"></bcm-icon>}</span>\n </div>\n </div>\n );\n }\n}\n"],"mappings":"sFAAA,MAAMA,EAAW,04CACjB,MAAAC,EAAeD,E,MCaFE,EAAQ,MALrB,WAAAC,CAAAC,G,iDAQIC,KAAAC,OAAuB,UAIvBD,KAAAE,KAAmB,SAInBF,KAAAG,KAAmB,SAInBH,KAAAI,YAAwB,KAIxBJ,KAAAK,eAA2B,I,CASnB,SAAAC,GACJN,KAAKO,WAAWC,M,CAGZ,aAAAC,GACJ,MAAMC,EAAa,CACfC,KAAM,4BACNC,MAAO,mCACPC,QAAS,qCACTC,QAAS,8BAEb,OAAOJ,EAAWV,KAAKC,O,CAG3B,cAAYc,GACR,OAAOC,EACH,CACIC,MAAO,CACHC,KAAM,gKACNC,QAAS,2BAEbC,SAAU,CACNlB,KAAM,CACFmB,MAAO,CACHH,KAAM,sBAEVI,OAAQ,CACJJ,KAAM,oBAEVK,MAAO,CACHL,KAAM,yBAKtB,CACIM,QAAS,O,CAKrB,eAAYC,GACR,IAAIC,EAAc,CACdf,KAAM,sDACNC,MAAO,qDACPC,QAAS,wDACTC,QAAS,uDACTa,QAAS,uDAGb,IAAIC,EAAkB,CAClBjB,KAAM,gCACNC,MAAO,iCACPC,QAAS,mCACTC,QAAS,mCACTa,QAAS,oCAGb,IAAIE,EAAa,CACb,iBAAkBH,EAAY1B,KAAKC,QACnC,mBAAoB2B,EAAgB5B,KAAKC,SAG7C,IAAI6B,EAAY,CACZ,iBAAkB,cAClB,mBAAoBF,EAAgB5B,KAAKC,SAG7C,OAAOD,KAAKG,OAAS,SAAW0B,EAAaC,C,CAGjD,MAAAC,GACI,MAAMb,KAAEA,EAAIC,QAAEA,GAAYnB,KAAKe,WAAW,CAAEb,KAAMF,KAAKE,OACvD,OACI8B,EAAA,OAAAC,IAAA,2CAAKC,KAAK,QAAO,YAAW,YAAW,cAAa,OAAOC,MAAOjB,IAAQkB,MAAOpC,KAAKyB,aAClFO,EAAA,OAAAC,IAAA,2CAAKE,MAAOhB,KACPnB,KAAKK,gBAAkB2B,EAAA,YAAAC,IAAA,uDAAqBjC,KAAKS,kBAClDuB,EAAA,QAAAC,IAAA,8CAEJD,EAAA,OAAAC,IAAA,2CAAKE,MAAOhB,KACRa,EAAA,OAAAC,IAAA,2CAAKI,KAAK,UACNL,EAAA,QAAAC,IAAA,2CAAMK,KAAK,YAEfN,EAAA,QAAAC,IAAA,2CAAMI,KAAK,QAAQrC,KAAKI,aAAe4B,EAAA,YAAAC,IAAA,2CAAUM,QAAS,IAAMvC,KAAKM,YAAa6B,MAAM,iBAAgB,YAAW,0B","ignoreList":[]}