bromcom-ui-next 0.1.24 → 0.1.25
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.
- package/dist/bromcom-ui/bcm-button.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-drawer.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-dropdown-item.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-dropdown.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-input.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-linked.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-shortcut.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-switch.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-tabs-list.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-tabs-trigger.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-tabs.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-text.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
- package/dist/bromcom-ui/p-00dc393e.entry.js +2 -0
- package/dist/bromcom-ui/p-00dc393e.entry.js.map +1 -0
- package/dist/bromcom-ui/p-0421d64a.entry.js +2 -0
- package/dist/bromcom-ui/p-0421d64a.entry.js.map +1 -0
- package/dist/bromcom-ui/p-06656239.entry.js +2 -0
- package/dist/bromcom-ui/p-06656239.entry.js.map +1 -0
- package/dist/bromcom-ui/p-10de6d9c.entry.js +2 -0
- package/dist/bromcom-ui/p-10de6d9c.entry.js.map +1 -0
- package/dist/bromcom-ui/p-48c554fc.entry.js +2 -0
- package/dist/bromcom-ui/p-48c554fc.entry.js.map +1 -0
- package/dist/bromcom-ui/{p-b02f5178.entry.js → p-7f117b72.entry.js} +2 -2
- package/dist/bromcom-ui/p-a07a257f.entry.js +2 -0
- package/dist/bromcom-ui/p-a07a257f.entry.js.map +1 -0
- package/dist/bromcom-ui/{p-5c1b22b5.entry.js → p-a18d34c7.entry.js} +2 -2
- package/dist/bromcom-ui/p-b37f2434.entry.js +2 -0
- package/dist/bromcom-ui/p-b37f2434.entry.js.map +1 -0
- package/dist/bromcom-ui/p-c709842a.entry.js +2 -0
- package/dist/bromcom-ui/p-c709842a.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e989b918.entry.js +2 -0
- package/dist/bromcom-ui/p-e989b918.entry.js.map +1 -0
- package/dist/bromcom-ui/p-ed796a79.entry.js +2 -0
- package/dist/bromcom-ui/p-ed796a79.entry.js.map +1 -0
- package/dist/bromcom-ui/p-edd01d0d.entry.js +2 -0
- package/dist/bromcom-ui/p-edd01d0d.entry.js.map +1 -0
- package/dist/bromcom-ui/p-f34bfa88.entry.js +2 -0
- package/dist/bromcom-ui/p-f34bfa88.entry.js.map +1 -0
- package/dist/cjs/bcm-button.cjs.entry.js +316 -0
- package/dist/cjs/bcm-button.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-button.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-drawer.cjs.entry.js +206 -0
- package/dist/cjs/bcm-drawer.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-drawer.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-dropdown-item.cjs.entry.js +61 -0
- package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-dropdown.cjs.entry.js +54 -0
- package/dist/cjs/bcm-dropdown.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-input.cjs.entry.js +315 -0
- package/dist/cjs/bcm-input.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-input.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-linked.cjs.entry.js +343 -0
- package/dist/cjs/bcm-linked.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-shortcut.cjs.entry.js +50 -0
- package/dist/cjs/bcm-shortcut.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-switch.cjs.entry.js +7 -7
- package/dist/cjs/bcm-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tabs-list.cjs.entry.js +49 -6
- package/dist/cjs/bcm-tabs-list.cjs.entry.js.map +1 -1
- package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +38 -6
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +1 -1
- package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tabs.cjs.entry.js +106 -17
- package/dist/cjs/bcm-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-text.cjs.entry.js +124 -0
- package/dist/cjs/bcm-text.cjs.entry.js.map +1 -0
- package/dist/cjs/bcm-text.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-textarea.cjs.entry.js +3 -3
- package/dist/cjs/bcm-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/bromcom-ui.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/button/button.css +1 -1
- package/dist/collection/components/switch/switch.component.js +6 -6
- package/dist/collection/components/switch/switch.component.js.map +1 -1
- package/dist/collection/components/switch/switch.css +1 -1
- package/dist/collection/components/tabs/bcm-tabs.css +1 -1
- package/dist/collection/components/tabs/tabs-list.component.js +92 -5
- package/dist/collection/components/tabs/tabs-list.component.js.map +1 -1
- package/dist/collection/components/tabs/tabs-list.css +1 -1
- package/dist/collection/components/tabs/tabs-trigger.component.js +77 -5
- package/dist/collection/components/tabs/tabs-trigger.component.js.map +1 -1
- package/dist/collection/components/tabs/tabs-trigger.css +1 -1
- package/dist/collection/components/tabs/tabs.component.js +148 -15
- package/dist/collection/components/tabs/tabs.component.js.map +1 -1
- package/dist/collection/components/text/text.component.js +1 -1
- package/dist/collection/components/textarea/textarea.component.js +3 -3
- package/dist/collection/components/tooltip/tooltip.component.js +1 -1
- package/dist/components/bcm-button.js +1 -1
- package/dist/components/bcm-dropdown.js +1 -1
- package/dist/components/bcm-pop-confirm.js +1 -1
- package/dist/components/bcm-switch.js +7 -7
- package/dist/components/bcm-switch.js.map +1 -1
- package/dist/components/bcm-tabs-list.js +53 -7
- package/dist/components/bcm-tabs-list.js.map +1 -1
- package/dist/components/bcm-tabs-trigger.js +41 -7
- package/dist/components/bcm-tabs-trigger.js.map +1 -1
- package/dist/components/bcm-tabs.js +111 -18
- package/dist/components/bcm-tabs.js.map +1 -1
- package/dist/components/bcm-text.js +1 -1
- package/dist/components/bcm-textarea.js +3 -3
- package/dist/components/bcm-tooltip.js +1 -1
- package/dist/components/{p-BdGAZ8M0.js → p-e6quW4es.js} +3 -3
- package/dist/components/{p-BdGAZ8M0.js.map → p-e6quW4es.js.map} +1 -1
- package/dist/esm/bcm-button.entry.js +314 -0
- package/dist/esm/bcm-button.entry.js.map +1 -0
- package/dist/esm/bcm-drawer.entry.js +204 -0
- package/dist/esm/bcm-drawer.entry.js.map +1 -0
- package/dist/esm/bcm-dropdown-item.entry.js +59 -0
- package/dist/esm/bcm-dropdown-item.entry.js.map +1 -0
- package/dist/esm/bcm-dropdown.entry.js +52 -0
- package/dist/esm/bcm-dropdown.entry.js.map +1 -0
- package/dist/esm/bcm-input.entry.js +313 -0
- package/dist/esm/bcm-input.entry.js.map +1 -0
- package/dist/esm/bcm-linked.entry.js +341 -0
- package/dist/esm/bcm-linked.entry.js.map +1 -0
- package/dist/esm/bcm-shortcut.entry.js +48 -0
- package/dist/esm/bcm-shortcut.entry.js.map +1 -0
- package/dist/esm/bcm-switch.entry.js +7 -7
- package/dist/esm/bcm-switch.entry.js.map +1 -1
- package/dist/esm/bcm-tabs-list.entry.js +49 -6
- package/dist/esm/bcm-tabs-list.entry.js.map +1 -1
- package/dist/esm/bcm-tabs-trigger.entry.js +38 -6
- package/dist/esm/bcm-tabs-trigger.entry.js.map +1 -1
- package/dist/esm/bcm-tabs.entry.js +106 -17
- package/dist/esm/bcm-tabs.entry.js.map +1 -1
- package/dist/esm/bcm-text.entry.js +122 -0
- package/dist/esm/bcm-text.entry.js.map +1 -0
- package/dist/esm/bcm-textarea.entry.js +3 -3
- package/dist/esm/bcm-tooltip.entry.js +1 -1
- package/dist/esm/bromcom-ui.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/tabs/tabs-list.component.d.ts +8 -0
- package/dist/types/components/tabs/tabs-trigger.component.d.ts +8 -0
- package/dist/types/components/tabs/tabs.component.d.ts +15 -0
- package/dist/types/components.d.ts +60 -0
- package/package.json +1 -1
- package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-dropdown.bcm-dropdown-item.bcm-input.bcm-linked.bcm-shortcut.bcm-text.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/p-1d79c9de.entry.js +0 -2
- package/dist/bromcom-ui/p-1d79c9de.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4766474f.entry.js +0 -2
- package/dist/bromcom-ui/p-4766474f.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4f0851e2.entry.js +0 -2
- package/dist/bromcom-ui/p-4f0851e2.entry.js.map +0 -1
- package/dist/bromcom-ui/p-88d35bcf.entry.js +0 -2
- package/dist/bromcom-ui/p-88d35bcf.entry.js.map +0 -1
- package/dist/bromcom-ui/p-d04246f0.entry.js +0 -2
- package/dist/bromcom-ui/p-d04246f0.entry.js.map +0 -1
- package/dist/cjs/bcm-button.bcm-drawer.bcm-dropdown.bcm-dropdown-item.bcm-input.bcm-linked.bcm-shortcut.bcm-text.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-button_8.cjs.entry.js +0 -1414
- package/dist/cjs/bcm-button_8.cjs.entry.js.map +0 -1
- package/dist/esm/bcm-button.bcm-drawer.bcm-dropdown.bcm-dropdown-item.bcm-input.bcm-linked.bcm-shortcut.bcm-text.entry.js.map +0 -1
- package/dist/esm/bcm-button_8.entry.js +0 -1405
- package/dist/esm/bcm-button_8.entry.js.map +0 -1
- /package/dist/bromcom-ui/{p-b02f5178.entry.js.map → p-7f117b72.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-5c1b22b5.entry.js.map → p-a18d34c7.entry.js.map} +0 -0
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { r as registerInstance, h } from './index-B84DzIAh.js';
|
|
2
2
|
import { t as tv } from './tv-CEcVC0yX.js';
|
|
3
3
|
|
|
4
|
-
const tabsListCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative
|
|
4
|
+
const tabsListCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative}:host([variant=full-width]){width:100%}:host([variant=auto-width]){width:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.absolute{position:absolute}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.z-10{z-index:10}.flex{display:flex}.hidden{display:none}.h-0\\.5{height:.125rem}.w-auto{width:auto}.w-full{width:100%}.flex-row{flex-direction:row}.items-center{align-items:center}.bg-\\[--bcm-ui-color-text-placeholder\\]{background-color:var(--bcm-ui-color-text-placeholder)}.bg-\\[--bcm-ui-color-text-primary\\]{background-color:var(--bcm-ui-color-text-primary)}.opacity-0{opacity:0}.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)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}";
|
|
5
5
|
|
|
6
6
|
const BcmTabsList = class {
|
|
7
7
|
constructor(hostRef) {
|
|
8
8
|
registerInstance(this, hostRef);
|
|
9
|
+
/**
|
|
10
|
+
* Tab variant - controls width behavior
|
|
11
|
+
*/
|
|
12
|
+
this.variant = 'full-width';
|
|
13
|
+
/**
|
|
14
|
+
* Whether to enable smooth animations for inkbar and transitions
|
|
15
|
+
*/
|
|
16
|
+
this.smooth = true;
|
|
9
17
|
/**
|
|
10
18
|
* Tailwind variants configuration for styling the tabs list container and inkbar
|
|
11
19
|
*/
|
|
@@ -14,21 +22,56 @@ const BcmTabsList = class {
|
|
|
14
22
|
/**
|
|
15
23
|
* Main container that holds both the tablist and inkbar
|
|
16
24
|
*/
|
|
17
|
-
container: 'flex flex-row items-center
|
|
25
|
+
container: 'flex flex-row items-center relative',
|
|
18
26
|
/**
|
|
19
27
|
* The sliding indicator that appears under the active tab
|
|
20
28
|
*/
|
|
21
|
-
inkbar: 'inkbar absolute bottom-0 left-0
|
|
29
|
+
inkbar: 'inkbar absolute bottom-0 left-0 h-0.5 bg-[--bcm-ui-color-text-primary] z-10 opacity-0',
|
|
22
30
|
/**
|
|
23
31
|
* The container for tab trigger elements
|
|
24
32
|
*/
|
|
25
|
-
tabList: 'tabs-list flex flex-row items-center
|
|
33
|
+
tabList: 'tabs-list flex flex-row items-center relative',
|
|
34
|
+
/**
|
|
35
|
+
* Background line for auto-width variant
|
|
36
|
+
*/
|
|
37
|
+
backgroundLine: 'absolute bottom-0 left-0 right-0 h-0.5 bg-[--bcm-ui-color-text-placeholder]',
|
|
38
|
+
},
|
|
39
|
+
variants: {
|
|
40
|
+
variant: {
|
|
41
|
+
'full-width': {
|
|
42
|
+
container: 'w-full',
|
|
43
|
+
tabList: 'w-full',
|
|
44
|
+
inkbar: 'right-0',
|
|
45
|
+
backgroundLine: 'hidden',
|
|
46
|
+
},
|
|
47
|
+
'auto-width': {
|
|
48
|
+
container: 'w-auto',
|
|
49
|
+
tabList: 'w-auto',
|
|
50
|
+
inkbar: 'right-0',
|
|
51
|
+
backgroundLine: 'block',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
smooth: {
|
|
55
|
+
true: {
|
|
56
|
+
inkbar: 'transition-all duration-200 ease-in-out',
|
|
57
|
+
},
|
|
58
|
+
false: {
|
|
59
|
+
inkbar: '',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
defaultVariants: {
|
|
64
|
+
variant: 'full-width',
|
|
65
|
+
smooth: true,
|
|
26
66
|
},
|
|
27
67
|
});
|
|
28
68
|
}
|
|
29
69
|
render() {
|
|
30
|
-
const { container, inkbar, tabList } = this.class(
|
|
31
|
-
|
|
70
|
+
const { container, inkbar, tabList, backgroundLine } = this.class({
|
|
71
|
+
variant: this.variant,
|
|
72
|
+
smooth: this.smooth,
|
|
73
|
+
});
|
|
74
|
+
return (h("div", { key: '024191da887d16461269660cb7c97d896848bef0', class: container(), slot: "tabs-list" }, h("div", { key: '5be00109388015401723b94881bed240594cd722', class: backgroundLine() }), h("div", { key: '83c291950deaa88f32950fa84ced38f22a971dc7', class: inkbar() }), h("div", { key: 'f160a54fa4b3c82b63114e169d0ff36bf4c6d014', class: tabList(), role: "tablist" }, h("slot", { key: 'fbedd8dae37e259778d44294237616abfc1ea2dd' }))));
|
|
32
75
|
}
|
|
33
76
|
};
|
|
34
77
|
BcmTabsList.style = tabsListCss;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcm-tabs-list.entry.js","sources":["src/components/tabs/tabs-list.css?tag=bcm-tabs-list&encapsulation=shadow","src/components/tabs/tabs-list.component.tsx"],"sourcesContent":["/* tabs-list.css */\n:host {\n display: block;\n position: relative;\n width: 100%;\n}\n","import { Component, h, ComponentInterface } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\n/**\n * @description Container component for tab triggers that includes the sliding indicator (inkbar)\n * @slot - Default slot for tab trigger elements\n */\n@Component({\n tag: 'bcm-tabs-list',\n styleUrl: 'tabs-list.css',\n shadow: true,\n})\nexport class BcmTabsList implements ComponentInterface {\n /**\n * Tailwind variants configuration for styling the tabs list container and inkbar\n */\n private class = tv({\n slots: {\n /**\n * Main container that holds both the tablist and inkbar\n */\n container: 'flex flex-row items-center
|
|
1
|
+
{"version":3,"file":"bcm-tabs-list.entry.js","sources":["src/components/tabs/tabs-list.css?tag=bcm-tabs-list&encapsulation=shadow","src/components/tabs/tabs-list.component.tsx"],"sourcesContent":["/* tabs-list.css */\n:host {\n display: block;\n position: relative;\n}\n\n:host([variant='full-width']) {\n width: 100%;\n}\n\n:host([variant='auto-width']) {\n width: auto;\n}\n","import { Component, Prop, h, ComponentInterface } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\n/**\n * @description Container component for tab triggers that includes the sliding indicator (inkbar)\n * @slot - Default slot for tab trigger elements\n */\n@Component({\n tag: 'bcm-tabs-list',\n styleUrl: 'tabs-list.css',\n shadow: true,\n})\nexport class BcmTabsList implements ComponentInterface {\n /**\n * Tab variant - controls width behavior\n */\n @Prop({ reflect: true })\n variant: 'full-width' | 'auto-width' = 'full-width';\n\n /**\n * Whether to enable smooth animations for inkbar and transitions\n */\n @Prop({ reflect: true })\n smooth: boolean = true;\n /**\n * Tailwind variants configuration for styling the tabs list container and inkbar\n */\n private class = tv({\n slots: {\n /**\n * Main container that holds both the tablist and inkbar\n */\n container: 'flex flex-row items-center relative',\n\n /**\n * The sliding indicator that appears under the active tab\n */\n inkbar: 'inkbar absolute bottom-0 left-0 h-0.5 bg-[--bcm-ui-color-text-primary] z-10 opacity-0',\n\n /**\n * The container for tab trigger elements\n */\n tabList: 'tabs-list flex flex-row items-center relative',\n\n /**\n * Background line for auto-width variant\n */\n backgroundLine: 'absolute bottom-0 left-0 right-0 h-0.5 bg-[--bcm-ui-color-text-placeholder]',\n },\n variants: {\n variant: {\n 'full-width': {\n container: 'w-full',\n tabList: 'w-full',\n inkbar: 'right-0',\n backgroundLine: 'hidden',\n },\n 'auto-width': {\n container: 'w-auto',\n tabList: 'w-auto',\n inkbar: 'right-0',\n backgroundLine: 'block',\n },\n },\n smooth: {\n true: {\n inkbar: 'transition-all duration-200 ease-in-out',\n },\n false: {\n inkbar: '',\n },\n },\n },\n defaultVariants: {\n variant: 'full-width',\n smooth: true,\n },\n });\n\n render() {\n const { container, inkbar, tabList, backgroundLine } = this.class({\n variant: this.variant,\n smooth: this.smooth,\n });\n return (\n <div class={container()} slot=\"tabs-list\">\n <div class={backgroundLine()}></div>\n <div class={inkbar()}></div>\n <div class={tabList()} role=\"tablist\">\n <slot></slot>\n </div>\n </div>\n );\n }\n}\n"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG,41CAA41C;;MCYn2C,WAAW,GAAA,MAAA;AALxB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;AAEG;AAEH,QAAA,IAAO,CAAA,OAAA,GAAgC,YAAY;AAEnD;;AAEG;AAEH,QAAA,IAAM,CAAA,MAAA,GAAY,IAAI;AACtB;;AAEG;AACK,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AACjB,YAAA,KAAK,EAAE;AACL;;AAEG;AACH,gBAAA,SAAS,EAAE,qCAAqC;AAEhD;;AAEG;AACH,gBAAA,MAAM,EAAE,uFAAuF;AAE/F;;AAEG;AACH,gBAAA,OAAO,EAAE,+CAA+C;AAExD;;AAEG;AACH,gBAAA,cAAc,EAAE,6EAA6E;AAC9F,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,OAAO,EAAE;AACP,oBAAA,YAAY,EAAE;AACZ,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,cAAc,EAAE,QAAQ;AACzB,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,cAAc,EAAE,OAAO;AACxB,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,yCAAyC;AAClD,qBAAA;AACD,oBAAA,KAAK,EAAE;AACL,wBAAA,MAAM,EAAE,EAAE;AACX,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA;AACF,SAAA,CAAC;AAiBH;IAfC,MAAM,GAAA;AACJ,QAAA,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAChE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC;AACF,QAAA,QACE,4DAAK,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAC,WAAW,EAAA,EACvC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,cAAc,EAAE,EAAQ,CAAA,EACpC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,MAAM,EAAE,EAAQ,CAAA,EAC5B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAC,SAAS,EAAA,EACnC,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACF;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-B84DzIAh.js';
|
|
2
2
|
import { t as tv } from './tv-CEcVC0yX.js';
|
|
3
3
|
|
|
4
|
-
const tabsTriggerCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative
|
|
4
|
+
const tabsTriggerCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative}:host([variant=full-width]){width:100%}:host([variant=auto-width]){width:auto}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.flex{display:flex}.h-\\[2px\\]{height:2px}.w-auto{width:auto}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.border-none{border-style:none}.bg-\\[--bcm-ui-color-text-disabled\\]{background-color:var(--bcm-ui-color-text-disabled)}.bg-\\[--bcm-ui-color-text-placeholder\\]{background-color:var(--bcm-ui-color-text-placeholder)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.text-center{text-align:center}.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-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-placeholder{color:var(--bcm-ui-color-text-placeholder)}.text-color-primary{color:var(--bcm-ui-color-text-primary)}.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)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\\:text-color-primary:hover{color:var(--bcm-ui-color-text-primary)}";
|
|
5
5
|
|
|
6
6
|
const BcmTabsTrigger = class {
|
|
7
7
|
constructor(hostRef) {
|
|
@@ -19,13 +19,21 @@ const BcmTabsTrigger = class {
|
|
|
19
19
|
* Whether the tab is disabled
|
|
20
20
|
*/
|
|
21
21
|
this.disabled = false;
|
|
22
|
+
/**
|
|
23
|
+
* Tab variant - controls width behavior
|
|
24
|
+
*/
|
|
25
|
+
this.variant = 'full-width';
|
|
26
|
+
/**
|
|
27
|
+
* Whether to enable smooth animations for transitions
|
|
28
|
+
*/
|
|
29
|
+
this.smooth = true;
|
|
22
30
|
/**
|
|
23
31
|
* Tailwind variants configuration for styling
|
|
24
32
|
*/
|
|
25
33
|
this.class = tv({
|
|
26
34
|
slots: {
|
|
27
|
-
tab: 'bcm-ui-element text-center flex flex-row justify-center items-center font-medium
|
|
28
|
-
borderLine: 'bottom-0
|
|
35
|
+
tab: 'bcm-ui-element text-center flex flex-row justify-center items-center font-medium py-1 px-3 bg-white border-none',
|
|
36
|
+
borderLine: 'bottom-0 left-0 right-0 h-[2px]',
|
|
29
37
|
},
|
|
30
38
|
variants: {
|
|
31
39
|
size: {
|
|
@@ -38,7 +46,7 @@ const BcmTabsTrigger = class {
|
|
|
38
46
|
tab: 'text-color-primary',
|
|
39
47
|
},
|
|
40
48
|
false: {
|
|
41
|
-
tab: 'text-color-
|
|
49
|
+
tab: 'text-color-placeholder',
|
|
42
50
|
},
|
|
43
51
|
},
|
|
44
52
|
disabled: {
|
|
@@ -48,7 +56,27 @@ const BcmTabsTrigger = class {
|
|
|
48
56
|
},
|
|
49
57
|
false: {
|
|
50
58
|
tab: 'cursor-pointer text-color hover:text-color-primary',
|
|
51
|
-
borderLine: 'bg-[--bcm-ui-color-text-
|
|
59
|
+
borderLine: 'bg-[--bcm-ui-color-text-placeholder]',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
variant: {
|
|
63
|
+
'full-width': {
|
|
64
|
+
tab: 'w-full',
|
|
65
|
+
borderLine: 'w-full',
|
|
66
|
+
},
|
|
67
|
+
'auto-width': {
|
|
68
|
+
tab: 'w-auto',
|
|
69
|
+
borderLine: 'w-full',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
smooth: {
|
|
73
|
+
true: {
|
|
74
|
+
tab: 'transition-all duration-200 ease-in-out',
|
|
75
|
+
borderLine: 'transition-all duration-200 ease-in-out',
|
|
76
|
+
},
|
|
77
|
+
false: {
|
|
78
|
+
tab: '',
|
|
79
|
+
borderLine: '',
|
|
52
80
|
},
|
|
53
81
|
},
|
|
54
82
|
},
|
|
@@ -56,6 +84,8 @@ const BcmTabsTrigger = class {
|
|
|
56
84
|
size: 'medium',
|
|
57
85
|
active: false,
|
|
58
86
|
disabled: false,
|
|
87
|
+
variant: 'full-width',
|
|
88
|
+
smooth: true,
|
|
59
89
|
},
|
|
60
90
|
}, {
|
|
61
91
|
twMerge: false,
|
|
@@ -75,8 +105,10 @@ const BcmTabsTrigger = class {
|
|
|
75
105
|
size: this.size,
|
|
76
106
|
active: this.active,
|
|
77
107
|
disabled: this.disabled,
|
|
108
|
+
variant: this.variant,
|
|
109
|
+
smooth: this.smooth,
|
|
78
110
|
});
|
|
79
|
-
return (h(Host, { key: '
|
|
111
|
+
return (h(Host, { key: '5424cb7174c82878a415bab34e35b8f738580f89', role: "tab", "aria-selected": this.active.toString(), "aria-disabled": this.disabled }, h("button", { key: '3222e26cd8d148547c80b917e039c46852696cbf', class: tab(), disabled: this.disabled, part: "tab", onClick: () => this.handleClick() }, h("slot", { key: '11ec64418405358f95f0bfb8c6cb6c4b6f099a1e' })), h("div", { key: '8ebda693389b88ff87859907aca5c00f6277e243', class: borderLine() })));
|
|
80
112
|
}
|
|
81
113
|
get el() { return getElement(this); }
|
|
82
114
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcm-tabs-trigger.entry.js","sources":["src/components/tabs/tabs-trigger.css?tag=bcm-tabs-trigger&encapsulation=shadow","src/components/tabs/tabs-trigger.component.tsx"],"sourcesContent":[":host {\n position: relative;\n display: block;\n width: 100%;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter, ComponentInterface } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\n/**\n * @description Tab trigger component that functions as a clickable tab button\n * @slot - Default slot for tab label content\n */\n@Component({\n tag: 'bcm-tabs-trigger',\n styleUrl: 'tabs-trigger.css',\n shadow: true,\n})\nexport class BcmTabsTrigger implements ComponentInterface {\n /**\n * Reference to the host element\n */\n @Element() el: HTMLElement;\n\n /**\n * Unique identifier value for the tab\n */\n @Prop({ reflect: true })\n value: string;\n\n /**\n * Whether the tab is currently active\n */\n @Prop({ reflect: true })\n active: boolean = false;\n\n /**\n * Size of the tab\n */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the tab is disabled\n */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Event emitted when this tab is selected\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmTabSelected',\n })\n bcmTabSelected: EventEmitter<string>;\n\n /**\n * Handles click events on the tab\n * Emits bcmTabSelected event with tab value if not disabled\n */\n private handleClick() {\n if (this.disabled) return;\n this.bcmTabSelected.emit(this.value);\n }\n\n /**\n * Tailwind variants configuration for styling\n */\n private class = tv(\n {\n slots: {\n tab: 'bcm-ui-element text-center flex flex-row justify-center items-center font-medium
|
|
1
|
+
{"version":3,"file":"bcm-tabs-trigger.entry.js","sources":["src/components/tabs/tabs-trigger.css?tag=bcm-tabs-trigger&encapsulation=shadow","src/components/tabs/tabs-trigger.component.tsx"],"sourcesContent":[":host {\n position: relative;\n display: block;\n}\n\n:host([variant='full-width']) {\n width: 100%;\n}\n\n:host([variant='auto-width']) {\n width: auto;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter, ComponentInterface } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\n/**\n * @description Tab trigger component that functions as a clickable tab button\n * @slot - Default slot for tab label content\n */\n@Component({\n tag: 'bcm-tabs-trigger',\n styleUrl: 'tabs-trigger.css',\n shadow: true,\n})\nexport class BcmTabsTrigger implements ComponentInterface {\n /**\n * Reference to the host element\n */\n @Element() el: HTMLElement;\n\n /**\n * Unique identifier value for the tab\n */\n @Prop({ reflect: true })\n value: string;\n\n /**\n * Whether the tab is currently active\n */\n @Prop({ reflect: true })\n active: boolean = false;\n\n /**\n * Size of the tab\n */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the tab is disabled\n */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Tab variant - controls width behavior\n */\n @Prop({ reflect: true })\n variant: 'full-width' | 'auto-width' = 'full-width';\n\n /**\n * Whether to enable smooth animations for transitions\n */\n @Prop({ reflect: true })\n smooth: boolean = true;\n\n /**\n * Event emitted when this tab is selected\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmTabSelected',\n })\n bcmTabSelected: EventEmitter<string>;\n\n /**\n * Handles click events on the tab\n * Emits bcmTabSelected event with tab value if not disabled\n */\n private handleClick() {\n if (this.disabled) return;\n this.bcmTabSelected.emit(this.value);\n }\n\n /**\n * Tailwind variants configuration for styling\n */\n private class = tv(\n {\n slots: {\n tab: 'bcm-ui-element text-center flex flex-row justify-center items-center font-medium py-1 px-3 bg-white border-none',\n borderLine: 'bottom-0 left-0 right-0 h-[2px]',\n },\n variants: {\n size: {\n small: { tab: 'text-size-4 gap-2' },\n medium: { tab: 'text-size-5 gap-2.5' },\n large: { tab: 'text-size-6 gap-3' },\n },\n active: {\n true: {\n tab: 'text-color-primary',\n },\n false: {\n tab: 'text-color-placeholder',\n },\n },\n disabled: {\n true: {\n tab: 'cursor-not-allowed text-color-disabled',\n borderLine: 'bg-[--bcm-ui-color-text-disabled]',\n },\n false: {\n tab: 'cursor-pointer text-color hover:text-color-primary',\n borderLine: 'bg-[--bcm-ui-color-text-placeholder]',\n },\n },\n variant: {\n 'full-width': {\n tab: 'w-full',\n borderLine: 'w-full',\n },\n 'auto-width': {\n tab: 'w-auto',\n borderLine: 'w-full',\n },\n },\n smooth: {\n true: {\n tab: 'transition-all duration-200 ease-in-out',\n borderLine: 'transition-all duration-200 ease-in-out',\n },\n false: {\n tab: '',\n borderLine: '',\n },\n },\n },\n defaultVariants: {\n size: 'medium',\n active: false,\n disabled: false,\n variant: 'full-width',\n smooth: true,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const { tab, borderLine } = this.class({\n size: this.size,\n active: this.active,\n disabled: this.disabled,\n variant: this.variant,\n smooth: this.smooth,\n });\n return (\n <Host role=\"tab\" aria-selected={this.active.toString()} aria-disabled={this.disabled}>\n <button class={tab()} disabled={this.disabled} part=\"tab\" onClick={() => this.handleClick()}>\n <slot />\n </button>\n <div class={borderLine()}></div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-B84DzIAh.js';
|
|
2
2
|
import { t as tv } from './tv-CEcVC0yX.js';
|
|
3
3
|
|
|
4
|
-
const bcmTabsCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative
|
|
4
|
+
const bcmTabsCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative}:host([variant=full-width]){width:100%}:host([variant=auto-width]){width:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.flex{display:flex}.contents{display:contents}.w-auto{width:auto}.w-full{width:100%}.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{resize:both}.flex-col{flex-direction:column}.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)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}";
|
|
5
5
|
|
|
6
6
|
const BcmTabs = class {
|
|
7
7
|
constructor(hostRef) {
|
|
@@ -11,13 +11,30 @@ const BcmTabs = class {
|
|
|
11
11
|
* Tab size
|
|
12
12
|
*/
|
|
13
13
|
this.size = 'medium';
|
|
14
|
+
/**
|
|
15
|
+
* Tab variant - controls width behavior
|
|
16
|
+
*/
|
|
17
|
+
this.variant = 'full-width';
|
|
18
|
+
/**
|
|
19
|
+
* Whether to enable smooth animations for inkbar and transitions
|
|
20
|
+
*/
|
|
21
|
+
this.smooth = true;
|
|
14
22
|
this.triggers = [];
|
|
15
23
|
this.contents = [];
|
|
16
24
|
/**
|
|
17
25
|
* Tab container class
|
|
18
26
|
*/
|
|
19
27
|
this.tabClass = tv({
|
|
20
|
-
base: 'tabs-container bcm-ui-element flex flex-col
|
|
28
|
+
base: 'tabs-container bcm-ui-element flex flex-col',
|
|
29
|
+
variants: {
|
|
30
|
+
variant: {
|
|
31
|
+
'full-width': 'w-full',
|
|
32
|
+
'auto-width': 'w-auto',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
defaultVariants: {
|
|
36
|
+
variant: 'full-width',
|
|
37
|
+
},
|
|
21
38
|
});
|
|
22
39
|
}
|
|
23
40
|
componentWillLoad() {
|
|
@@ -26,9 +43,23 @@ const BcmTabs = class {
|
|
|
26
43
|
componentDidLoad() {
|
|
27
44
|
this.refreshElementReferences();
|
|
28
45
|
this.updateTriggerProperties();
|
|
46
|
+
this.updateTabsListProperties();
|
|
29
47
|
this.setupRelations();
|
|
30
|
-
|
|
31
|
-
this.
|
|
48
|
+
// Eğer defaultValue yoksa ilk tab'ı aktif yap
|
|
49
|
+
if (!this.defaultValue && this.triggers.length > 0) {
|
|
50
|
+
this.activeTab = this.triggers[0].value;
|
|
51
|
+
}
|
|
52
|
+
// auto-width variant'ında inkbar hesaplaması için ek gecikme
|
|
53
|
+
if (this.variant === 'auto-width') {
|
|
54
|
+
requestAnimationFrame(() => {
|
|
55
|
+
this.updateInkbar();
|
|
56
|
+
this.updateContentVisibility();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.updateInkbar();
|
|
61
|
+
this.updateContentVisibility();
|
|
62
|
+
}
|
|
32
63
|
}
|
|
33
64
|
/**
|
|
34
65
|
* Refreshes DOM element references
|
|
@@ -59,12 +90,37 @@ const BcmTabs = class {
|
|
|
59
90
|
if (((_a = this.triggers) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
60
91
|
this.triggers.forEach(trigger => {
|
|
61
92
|
trigger.size = this.size;
|
|
93
|
+
trigger.variant = this.variant;
|
|
94
|
+
trigger.smooth = this.smooth;
|
|
62
95
|
});
|
|
63
96
|
}
|
|
64
97
|
}
|
|
98
|
+
updateTabsListProperties() {
|
|
99
|
+
if (this.tabsList) {
|
|
100
|
+
this.tabsList.variant = this.variant;
|
|
101
|
+
this.tabsList.smooth = this.smooth;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
65
104
|
handleSizeChange() {
|
|
66
105
|
this.updateTriggerProperties();
|
|
67
106
|
}
|
|
107
|
+
handleVariantChange() {
|
|
108
|
+
this.updateTriggerProperties();
|
|
109
|
+
this.updateTabsListProperties();
|
|
110
|
+
// auto-width variant'ında inkbar hesaplaması için ek gecikme
|
|
111
|
+
if (this.variant === 'auto-width') {
|
|
112
|
+
requestAnimationFrame(() => {
|
|
113
|
+
this.updateInkbar();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.updateInkbar();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
handleSmoothChange() {
|
|
121
|
+
this.updateTriggerProperties();
|
|
122
|
+
this.updateTabsListProperties();
|
|
123
|
+
}
|
|
68
124
|
async disableTab(value) {
|
|
69
125
|
const trigger = this.triggers.find(t => t.value === value);
|
|
70
126
|
if (trigger) {
|
|
@@ -161,7 +217,7 @@ const BcmTabs = class {
|
|
|
161
217
|
* Updates inkbar position
|
|
162
218
|
*/
|
|
163
219
|
updateInkbar() {
|
|
164
|
-
var _a, _b
|
|
220
|
+
var _a, _b;
|
|
165
221
|
if (!this.tabsList) {
|
|
166
222
|
console.warn('bcm-tabs-list not found');
|
|
167
223
|
return;
|
|
@@ -172,18 +228,15 @@ const BcmTabs = class {
|
|
|
172
228
|
const inkbar = (_b = (_a = this.tabsList) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.inkbar');
|
|
173
229
|
const activeTrigger = this.triggers.find(trigger => trigger.value === this.activeTab);
|
|
174
230
|
if (activeTrigger && inkbar) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
if (
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
inkbar.style.transform = `translateX(${left}px)`;
|
|
182
|
-
inkbar.style.opacity = '1';
|
|
231
|
+
// auto-width variant'ında container genişliği henüz hesaplanmamış olabilir
|
|
232
|
+
// Bu durumda bir sonraki frame'de tekrar deneyelim
|
|
233
|
+
if (this.variant === 'auto-width') {
|
|
234
|
+
requestAnimationFrame(() => {
|
|
235
|
+
this.updateInkbarPosition(inkbar, activeTrigger);
|
|
236
|
+
});
|
|
183
237
|
}
|
|
184
238
|
else {
|
|
185
|
-
|
|
186
|
-
inkbar.style.opacity = '0';
|
|
239
|
+
this.updateInkbarPosition(inkbar, activeTrigger);
|
|
187
240
|
}
|
|
188
241
|
}
|
|
189
242
|
else {
|
|
@@ -191,12 +244,48 @@ const BcmTabs = class {
|
|
|
191
244
|
inkbar.style.opacity = '0';
|
|
192
245
|
}
|
|
193
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Updates inkbar position and size
|
|
249
|
+
*/
|
|
250
|
+
updateInkbarPosition(inkbar, activeTrigger) {
|
|
251
|
+
var _a, _b, _c;
|
|
252
|
+
const triggerRect = activeTrigger.getBoundingClientRect();
|
|
253
|
+
const groupRect = (_c = (_b = (_a = this.tabsList) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.tabs-list')) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect();
|
|
254
|
+
if (triggerRect && groupRect) {
|
|
255
|
+
const left = triggerRect.left - groupRect.left;
|
|
256
|
+
const width = triggerRect.width;
|
|
257
|
+
// Her iki variant için de aynı davranış: sadece aktif tab altında göster
|
|
258
|
+
inkbar.style.width = `${width}px`;
|
|
259
|
+
inkbar.style.transform = `translateX(${left}px)`;
|
|
260
|
+
inkbar.style.left = '0';
|
|
261
|
+
inkbar.style.right = 'auto';
|
|
262
|
+
// smooth prop'una göre opacity geçişi
|
|
263
|
+
if (this.smooth) {
|
|
264
|
+
inkbar.style.opacity = '1';
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
// Animasyon olmadan anında göster
|
|
268
|
+
inkbar.style.transition = 'none';
|
|
269
|
+
inkbar.style.opacity = '1';
|
|
270
|
+
// Bir sonraki frame'de transition'ı geri yükle
|
|
271
|
+
requestAnimationFrame(() => {
|
|
272
|
+
inkbar.style.transition = '';
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
console.warn('Group or trigger rect calculation failed');
|
|
278
|
+
inkbar.style.opacity = '0';
|
|
279
|
+
}
|
|
280
|
+
}
|
|
194
281
|
render() {
|
|
195
|
-
return (h(Host, { key: '
|
|
282
|
+
return (h(Host, { key: '74e8ebe53363fd2357d6f054277e3fc3f3d3e83c' }, h("div", { key: '0d060bcb6b378dc9ba7523482c69c0b786782d96', class: this.tabClass({ variant: this.variant }) }, h("slot", { key: '626fcde55ce47453b4d5252444cf046ca723c1c0', name: "tabs-list" }), h("slot", { key: 'a9fc0887203531d3ea72cba945f4665d98546512' }))));
|
|
196
283
|
}
|
|
197
284
|
get el() { return getElement(this); }
|
|
198
285
|
static get watchers() { return {
|
|
199
|
-
"size": ["handleSizeChange"]
|
|
286
|
+
"size": ["handleSizeChange"],
|
|
287
|
+
"variant": ["handleVariantChange"],
|
|
288
|
+
"smooth": ["handleSmoothChange"]
|
|
200
289
|
}; }
|
|
201
290
|
};
|
|
202
291
|
BcmTabs.style = bcmTabsCss;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcm-tabs.entry.js","sources":["src/components/tabs/bcm-tabs.css?tag=bcm-tabs&encapsulation=shadow","src/components/tabs/tabs.component.tsx"],"sourcesContent":[":host {\n display: block;\n position: relative;\n width: 100%;\n}\n","import { Component, State, Prop, Element, h, Host, Listen, ComponentInterface, Event, EventEmitter, Watch, Method } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\n/**\n * @description Tab interface component\n * @slot - Default slot for content area\n * @slot tabs-list - Special slot for tab list\n */\n@Component({\n tag: 'bcm-tabs',\n styleUrl: 'bcm-tabs.css',\n shadow: true,\n})\nexport class BcmTabs implements ComponentInterface {\n @Element() el: HTMLElement;\n\n /**\n * Default active tab value\n */\n @Prop({ reflect: true })\n defaultValue: string;\n\n /**\n * Tab size\n */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Triggers when tab changes\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmTabChange',\n })\n bcmTabChange: EventEmitter<{\n activeTab: string;\n element: HTMLBcmTabsTriggerElement;\n previousTab?: string;\n }>;\n\n /**\n * Active tab value\n */\n @State() activeTab: string;\n\n /**\n * Previous active tab value\n */\n @State() previousTab: string;\n\n private triggers: HTMLBcmTabsTriggerElement[] = [];\n private contents: HTMLBcmTabsContentElement[] = [];\n private tabsList: HTMLBcmTabsListElement;\n\n componentWillLoad() {\n this.activeTab = this.defaultValue;\n }\n\n componentDidLoad() {\n this.refreshElementReferences();\n this.updateTriggerProperties();\n this.setupRelations();\n this.updateInkbar();\n this.updateContentVisibility();\n }\n\n /**\n * Refreshes DOM element references\n */\n private refreshElementReferences() {\n this.triggers = Array.from(this.el.querySelectorAll('bcm-tabs-trigger'));\n this.contents = Array.from(this.el.querySelectorAll('bcm-tabs-content'));\n this.tabsList = this.el.querySelector('bcm-tabs-list');\n }\n\n /**\n * Establishes relationships between tabs and content\n */\n private setupRelations() {\n this.triggers.forEach(trigger => {\n trigger.active = trigger.value === this.activeTab;\n const panel = this.contents.find(content => content.value === trigger.value);\n if (panel) {\n const panelId = `panel-${trigger.value}`;\n panel.id = panelId;\n trigger.setAttribute('aria-controls', panelId);\n panel.setAttribute('aria-labelledby', `trigger-${trigger.value}`);\n trigger.id = `trigger-${trigger.value}`;\n }\n });\n }\n\n private updateTriggerProperties() {\n if (this.triggers?.length > 0) {\n this.triggers.forEach(trigger => {\n trigger.size = this.size;\n });\n }\n }\n\n @Watch('size')\n handleSizeChange() {\n this.updateTriggerProperties();\n }\n\n @Method()\n async disableTab(value: string): Promise<void> {\n const trigger = this.triggers.find(t => t.value === value);\n if (trigger) {\n trigger.disabled = true;\n }\n }\n\n @Method()\n async enableTab(value: string): Promise<void> {\n const trigger = this.triggers.find(t => t.value === value);\n if (trigger) {\n trigger.disabled = false;\n }\n }\n\n /**\n * Disables all tabs\n */\n @Method()\n async disableAllTabs() {\n this.triggers.forEach(trigger => {\n trigger.disabled = true;\n });\n }\n\n /**\n * Enables all tabs\n */\n @Method()\n async enableAllTabs() {\n this.triggers.forEach(trigger => {\n trigger.disabled = false;\n });\n }\n\n /**\n * Returns the active tab value\n */\n @Method()\n async getActiveTab(): Promise<string> {\n return this.activeTab;\n }\n\n /**\n * Sets the active tab\n */\n @Method()\n async setActiveTab(value: string): Promise<void> {\n const trigger = this.triggers.find(t => t.value === value);\n if (trigger && !trigger.disabled) {\n this.previousTab = this.activeTab;\n this.activeTab = value;\n this.updateInkbar();\n this.updateContentVisibility();\n this.updateTabStatus();\n\n this.bcmTabChange.emit({\n activeTab: this.activeTab,\n element: trigger,\n previousTab: this.previousTab,\n });\n }\n }\n\n /**\n * Updates tab status\n */\n private updateTabStatus() {\n this.triggers.forEach(trigger => {\n const isActive = trigger.value === this.activeTab;\n trigger.active = isActive;\n });\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n this.updateInkbar();\n }\n\n /**\n * Triggered when a tab is selected\n */\n @Listen('bcmTabSelected', { capture: true })\n handleTabSelected(event: CustomEvent<string>) {\n this.previousTab = this.activeTab;\n this.activeTab = event.detail;\n\n this.updateTabStatus();\n this.updateInkbar();\n this.updateContentVisibility();\n\n const activeElement = this.triggers.find(trigger => trigger.value === this.activeTab);\n if (activeElement) {\n this.bcmTabChange.emit({\n activeTab: this.activeTab,\n element: activeElement,\n previousTab: this.previousTab,\n });\n }\n }\n\n /**\n * Updates content visibility\n */\n private updateContentVisibility() {\n this.contents.forEach(content => {\n const isVisible = content.value === this.activeTab;\n content.style.display = isVisible ? 'block' : 'none';\n content.setAttribute('aria-hidden', (!isVisible).toString());\n });\n }\n\n /**\n * Updates inkbar position\n */\n private updateInkbar() {\n if (!this.tabsList) {\n console.warn('bcm-tabs-list not found');\n return;\n }\n\n const totalTriggers = this.triggers.length;\n if (totalTriggers === 0) return;\n\n const inkbar = this.tabsList?.shadowRoot?.querySelector('.inkbar') as HTMLElement;\n const activeTrigger = this.triggers.find(trigger => trigger.value === this.activeTab);\n\n if (activeTrigger && inkbar) {\n const triggerRect = activeTrigger.getBoundingClientRect();\n const groupRect = this.tabsList?.shadowRoot?.querySelector('.tabs-list')?.getBoundingClientRect();\n\n if (triggerRect && groupRect) {\n const left = triggerRect.left - groupRect.left;\n const width = triggerRect.width;\n\n inkbar.style.width = `${width}px`;\n inkbar.style.transform = `translateX(${left}px)`;\n inkbar.style.opacity = '1';\n } else {\n console.warn('Group or trigger rect calculation failed');\n inkbar.style.opacity = '0';\n }\n } else {\n if (inkbar) inkbar.style.opacity = '0';\n }\n }\n\n /**\n * Tab container class\n */\n private tabClass = tv({\n base: 'tabs-container bcm-ui-element flex flex-col w-full',\n });\n\n render() {\n return (\n <Host>\n <div class={this.tabClass()}>\n <slot name=\"tabs-list\" />\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bcm-tabs.entry.js","sources":["src/components/tabs/bcm-tabs.css?tag=bcm-tabs&encapsulation=shadow","src/components/tabs/tabs.component.tsx"],"sourcesContent":[":host {\n display: block;\n position: relative;\n}\n\n:host([variant='full-width']) {\n width: 100%;\n}\n\n:host([variant='auto-width']) {\n width: auto;\n}\n","import { Component, State, Prop, Element, h, Host, Listen, ComponentInterface, Event, EventEmitter, Watch, Method } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\n/**\n * @description Tab interface component\n * @slot - Default slot for content area\n * @slot tabs-list - Special slot for tab list\n */\n@Component({\n tag: 'bcm-tabs',\n styleUrl: 'bcm-tabs.css',\n shadow: true,\n})\nexport class BcmTabs implements ComponentInterface {\n @Element() el: HTMLElement;\n\n /**\n * Default active tab value\n */\n @Prop({ reflect: true })\n defaultValue: string;\n\n /**\n * Tab size\n */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Tab variant - controls width behavior\n */\n @Prop({ reflect: true })\n variant: 'full-width' | 'auto-width' = 'full-width';\n\n /**\n * Whether to enable smooth animations for inkbar and transitions\n */\n @Prop({ reflect: true })\n smooth: boolean = true;\n\n /**\n * Triggers when tab changes\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmTabChange',\n })\n bcmTabChange: EventEmitter<{\n activeTab: string;\n element: HTMLBcmTabsTriggerElement;\n previousTab?: string;\n }>;\n\n /**\n * Active tab value\n */\n @State() activeTab: string;\n\n /**\n * Previous active tab value\n */\n @State() previousTab: string;\n\n private triggers: HTMLBcmTabsTriggerElement[] = [];\n private contents: HTMLBcmTabsContentElement[] = [];\n private tabsList: HTMLBcmTabsListElement;\n\n componentWillLoad() {\n this.activeTab = this.defaultValue;\n }\n\n componentDidLoad() {\n this.refreshElementReferences();\n this.updateTriggerProperties();\n this.updateTabsListProperties();\n this.setupRelations();\n\n // Eğer defaultValue yoksa ilk tab'ı aktif yap\n if (!this.defaultValue && this.triggers.length > 0) {\n this.activeTab = this.triggers[0].value;\n }\n\n // auto-width variant'ında inkbar hesaplaması için ek gecikme\n if (this.variant === 'auto-width') {\n requestAnimationFrame(() => {\n this.updateInkbar();\n this.updateContentVisibility();\n });\n } else {\n this.updateInkbar();\n this.updateContentVisibility();\n }\n }\n\n /**\n * Refreshes DOM element references\n */\n private refreshElementReferences() {\n this.triggers = Array.from(this.el.querySelectorAll('bcm-tabs-trigger'));\n this.contents = Array.from(this.el.querySelectorAll('bcm-tabs-content'));\n this.tabsList = this.el.querySelector('bcm-tabs-list');\n }\n\n /**\n * Establishes relationships between tabs and content\n */\n private setupRelations() {\n this.triggers.forEach(trigger => {\n trigger.active = trigger.value === this.activeTab;\n const panel = this.contents.find(content => content.value === trigger.value);\n if (panel) {\n const panelId = `panel-${trigger.value}`;\n panel.id = panelId;\n trigger.setAttribute('aria-controls', panelId);\n panel.setAttribute('aria-labelledby', `trigger-${trigger.value}`);\n trigger.id = `trigger-${trigger.value}`;\n }\n });\n }\n\n private updateTriggerProperties() {\n if (this.triggers?.length > 0) {\n this.triggers.forEach(trigger => {\n trigger.size = this.size;\n trigger.variant = this.variant;\n trigger.smooth = this.smooth;\n });\n }\n }\n\n private updateTabsListProperties() {\n if (this.tabsList) {\n this.tabsList.variant = this.variant;\n this.tabsList.smooth = this.smooth;\n }\n }\n\n @Watch('size')\n handleSizeChange() {\n this.updateTriggerProperties();\n }\n\n @Watch('variant')\n handleVariantChange() {\n this.updateTriggerProperties();\n this.updateTabsListProperties();\n\n // auto-width variant'ında inkbar hesaplaması için ek gecikme\n if (this.variant === 'auto-width') {\n requestAnimationFrame(() => {\n this.updateInkbar();\n });\n } else {\n this.updateInkbar();\n }\n }\n\n @Watch('smooth')\n handleSmoothChange() {\n this.updateTriggerProperties();\n this.updateTabsListProperties();\n }\n\n @Method()\n async disableTab(value: string): Promise<void> {\n const trigger = this.triggers.find(t => t.value === value);\n if (trigger) {\n trigger.disabled = true;\n }\n }\n\n @Method()\n async enableTab(value: string): Promise<void> {\n const trigger = this.triggers.find(t => t.value === value);\n if (trigger) {\n trigger.disabled = false;\n }\n }\n\n /**\n * Disables all tabs\n */\n @Method()\n async disableAllTabs() {\n this.triggers.forEach(trigger => {\n trigger.disabled = true;\n });\n }\n\n /**\n * Enables all tabs\n */\n @Method()\n async enableAllTabs() {\n this.triggers.forEach(trigger => {\n trigger.disabled = false;\n });\n }\n\n /**\n * Returns the active tab value\n */\n @Method()\n async getActiveTab(): Promise<string> {\n return this.activeTab;\n }\n\n /**\n * Sets the active tab\n */\n @Method()\n async setActiveTab(value: string): Promise<void> {\n const trigger = this.triggers.find(t => t.value === value);\n if (trigger && !trigger.disabled) {\n this.previousTab = this.activeTab;\n this.activeTab = value;\n this.updateInkbar();\n this.updateContentVisibility();\n this.updateTabStatus();\n\n this.bcmTabChange.emit({\n activeTab: this.activeTab,\n element: trigger,\n previousTab: this.previousTab,\n });\n }\n }\n\n /**\n * Updates tab status\n */\n private updateTabStatus() {\n this.triggers.forEach(trigger => {\n const isActive = trigger.value === this.activeTab;\n trigger.active = isActive;\n });\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n this.updateInkbar();\n }\n\n /**\n * Triggered when a tab is selected\n */\n @Listen('bcmTabSelected', { capture: true })\n handleTabSelected(event: CustomEvent<string>) {\n this.previousTab = this.activeTab;\n this.activeTab = event.detail;\n\n this.updateTabStatus();\n this.updateInkbar();\n this.updateContentVisibility();\n\n const activeElement = this.triggers.find(trigger => trigger.value === this.activeTab);\n if (activeElement) {\n this.bcmTabChange.emit({\n activeTab: this.activeTab,\n element: activeElement,\n previousTab: this.previousTab,\n });\n }\n }\n\n /**\n * Updates content visibility\n */\n private updateContentVisibility() {\n this.contents.forEach(content => {\n const isVisible = content.value === this.activeTab;\n content.style.display = isVisible ? 'block' : 'none';\n content.setAttribute('aria-hidden', (!isVisible).toString());\n });\n }\n\n /**\n * Updates inkbar position\n */\n private updateInkbar() {\n if (!this.tabsList) {\n console.warn('bcm-tabs-list not found');\n return;\n }\n\n const totalTriggers = this.triggers.length;\n if (totalTriggers === 0) return;\n\n const inkbar = this.tabsList?.shadowRoot?.querySelector('.inkbar') as HTMLElement;\n const activeTrigger = this.triggers.find(trigger => trigger.value === this.activeTab);\n\n if (activeTrigger && inkbar) {\n // auto-width variant'ında container genişliği henüz hesaplanmamış olabilir\n // Bu durumda bir sonraki frame'de tekrar deneyelim\n if (this.variant === 'auto-width') {\n requestAnimationFrame(() => {\n this.updateInkbarPosition(inkbar, activeTrigger);\n });\n } else {\n this.updateInkbarPosition(inkbar, activeTrigger);\n }\n } else {\n if (inkbar) inkbar.style.opacity = '0';\n }\n }\n\n /**\n * Updates inkbar position and size\n */\n private updateInkbarPosition(inkbar: HTMLElement, activeTrigger: HTMLElement) {\n const triggerRect = activeTrigger.getBoundingClientRect();\n const groupRect = this.tabsList?.shadowRoot?.querySelector('.tabs-list')?.getBoundingClientRect();\n\n if (triggerRect && groupRect) {\n const left = triggerRect.left - groupRect.left;\n const width = triggerRect.width;\n\n // Her iki variant için de aynı davranış: sadece aktif tab altında göster\n inkbar.style.width = `${width}px`;\n inkbar.style.transform = `translateX(${left}px)`;\n inkbar.style.left = '0';\n inkbar.style.right = 'auto';\n\n // smooth prop'una göre opacity geçişi\n if (this.smooth) {\n inkbar.style.opacity = '1';\n } else {\n // Animasyon olmadan anında göster\n inkbar.style.transition = 'none';\n inkbar.style.opacity = '1';\n // Bir sonraki frame'de transition'ı geri yükle\n requestAnimationFrame(() => {\n inkbar.style.transition = '';\n });\n }\n } else {\n console.warn('Group or trigger rect calculation failed');\n inkbar.style.opacity = '0';\n }\n }\n\n /**\n * Tab container class\n */\n private tabClass = tv({\n base: 'tabs-container bcm-ui-element flex flex-col',\n variants: {\n variant: {\n 'full-width': 'w-full',\n 'auto-width': 'w-auto',\n },\n },\n defaultVariants: {\n variant: 'full-width',\n },\n });\n\n render() {\n return (\n <Host>\n <div class={this.tabClass({ variant: this.variant })}>\n <slot name=\"tabs-list\" />\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { r as registerInstance, h } from './index-B84DzIAh.js';
|
|
2
|
+
import { c as classNames } from './index-BfTCfPZ1.js';
|
|
3
|
+
|
|
4
|
+
const variantTagMap = {
|
|
5
|
+
display: 'h1',
|
|
6
|
+
heading1: 'h2',
|
|
7
|
+
heading2: 'h3',
|
|
8
|
+
title1: 'h4',
|
|
9
|
+
title2: 'h5',
|
|
10
|
+
title3: 'h6',
|
|
11
|
+
body: 'p',
|
|
12
|
+
bodyAccent: 'p',
|
|
13
|
+
helper: 'p',
|
|
14
|
+
caption: 'p',
|
|
15
|
+
label: 'label',
|
|
16
|
+
placeholder: 'p',
|
|
17
|
+
link: 'a',
|
|
18
|
+
info: 'p',
|
|
19
|
+
infoAccent: 'p',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const textCss = ".static{position:static}.m-0{margin:0}.appearance-none{appearance:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-0{padding:0}.text-size-12{font-size:var(--bcm-ui-font-size-12,60px);line-height:var(--bcm-ui-line-height-12,72px)}.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)}.text-size-7{font-size:var(--bcm-ui-font-size-7,20px);line-height:var(--bcm-ui-line-height-7,28px)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-color-caption{color:var(--bcm-ui-color-text-caption)}.text-color-default{color:var(--bcm-ui-color-text-default)}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-header{color:var(--bcm-ui-color-text-header)}.text-color-helper{color:var(--bcm-ui-color-text-helper)}.text-color-label{color:var(--bcm-ui-color-text-label)}.text-color-placeholder{color:var(--bcm-ui-color-text-placeholder)}.text-color-primary{color:var(--bcm-ui-color-text-primary)}.underline{text-decoration-line:underline}.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)}";
|
|
23
|
+
|
|
24
|
+
const BcmText = class {
|
|
25
|
+
constructor(hostRef) {
|
|
26
|
+
registerInstance(this, hostRef);
|
|
27
|
+
/** Text variant */
|
|
28
|
+
this.variant = 'body';
|
|
29
|
+
/** Text size */
|
|
30
|
+
this.size = 'medium';
|
|
31
|
+
/** Text overflow behavior */
|
|
32
|
+
this.overflow = false;
|
|
33
|
+
this.variantClassMap = {
|
|
34
|
+
display: 'font-semibold text-size-12 text-color-header',
|
|
35
|
+
heading1: 'font-semibold text-size-7 text-color-header',
|
|
36
|
+
heading2: 'font-semibold text-size-6 text-color-header',
|
|
37
|
+
title1: {
|
|
38
|
+
small: 'font-semibold text-size-5 text-color-header',
|
|
39
|
+
medium: 'font-semibold text-size-6 text-color-header',
|
|
40
|
+
large: 'font-semibold text-size-7 text-color-header',
|
|
41
|
+
},
|
|
42
|
+
title2: {
|
|
43
|
+
small: 'font-semibold text-size-4 text-color-default',
|
|
44
|
+
medium: 'font-semibold text-size-5 text-color-default',
|
|
45
|
+
large: 'font-semibold text-size-6 text-color-default',
|
|
46
|
+
},
|
|
47
|
+
title3: {
|
|
48
|
+
small: 'font-semibold text-size-3 text-color-disabled',
|
|
49
|
+
medium: 'font-semibold text-size-4 text-color-disabled',
|
|
50
|
+
large: 'font-semibold text-size-5 text-color-disabled',
|
|
51
|
+
},
|
|
52
|
+
body: {
|
|
53
|
+
small: 'font-regular text-size-4 text-color-default',
|
|
54
|
+
medium: 'font-regular text-size-5 text-color-default',
|
|
55
|
+
large: 'font-regular text-size-6 text-color-default',
|
|
56
|
+
},
|
|
57
|
+
bodyAccent: {
|
|
58
|
+
small: 'font-medium text-size-4 text-color-default',
|
|
59
|
+
medium: 'font-medium text-size-5 text-color-default',
|
|
60
|
+
large: 'font-medium text-size-6 text-color-default',
|
|
61
|
+
},
|
|
62
|
+
helper: {
|
|
63
|
+
small: 'font-regular text-size-4 text-color-helper',
|
|
64
|
+
medium: 'font-regular text-size-5 text-color-helper',
|
|
65
|
+
large: 'font-regular text-size-6 text-color-helper',
|
|
66
|
+
},
|
|
67
|
+
caption: {
|
|
68
|
+
small: 'font-regular text-size-3 text-color-caption',
|
|
69
|
+
medium: 'font-regular text-size-4 text-color-caption',
|
|
70
|
+
large: 'font-regular text-size-5 text-color-caption',
|
|
71
|
+
},
|
|
72
|
+
link: {
|
|
73
|
+
small: 'font-medium text-size-4 underline text-color-primary',
|
|
74
|
+
medium: 'font-medium text-size-5 underline text-color-primary',
|
|
75
|
+
large: 'font-medium text-size-6 underline text-color-primary',
|
|
76
|
+
},
|
|
77
|
+
label: {
|
|
78
|
+
small: 'font-medium text-size-3 text-color-label',
|
|
79
|
+
medium: 'font-medium text-size-4 text-color-label',
|
|
80
|
+
large: 'font-medium text-size-5 text-color-label',
|
|
81
|
+
},
|
|
82
|
+
placeholder: {
|
|
83
|
+
small: 'font-regular text-size-4 text-color-placeholder',
|
|
84
|
+
medium: 'font-regular text-size-5 text-color-placeholder',
|
|
85
|
+
large: 'font-regular text-size-6 text-color-placeholder',
|
|
86
|
+
},
|
|
87
|
+
info: {
|
|
88
|
+
small: 'font-regular text-size-3 text-color-default',
|
|
89
|
+
medium: 'font-regular text-size-4 text-color-default',
|
|
90
|
+
large: 'font-regular text-size-5 text-color-default',
|
|
91
|
+
},
|
|
92
|
+
infoAccent: {
|
|
93
|
+
small: 'font-medium text-size-3 text-color-header',
|
|
94
|
+
medium: 'font-medium text-size-4 text-color-header',
|
|
95
|
+
large: 'font-medium text-size-5 text-color-header',
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
this.getTextClass = (variant, size) => {
|
|
99
|
+
const variantClasses = this.variantClassMap[variant];
|
|
100
|
+
if (typeof variantClasses === 'string') {
|
|
101
|
+
return variantClasses;
|
|
102
|
+
}
|
|
103
|
+
return variantClasses[size];
|
|
104
|
+
};
|
|
105
|
+
this.getOverflowClass = (overflow) => {
|
|
106
|
+
return overflow ? 'truncate' : '';
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
render() {
|
|
110
|
+
var _a;
|
|
111
|
+
const Tag = variantTagMap[this.variant];
|
|
112
|
+
const variantClass = this.getTextClass(this.variant, this.size);
|
|
113
|
+
const overflowClass = this.getOverflowClass((_a = this.overflow) !== null && _a !== void 0 ? _a : false);
|
|
114
|
+
return (h(Tag, { key: 'cb3c78143a1f52fdadd9458219ef5f12eace04e6', class: classNames('bcm-text appearance-none m-0 p-0', variantClass, overflowClass), part: "text" }, h("slot", { key: '7ab30bbf72b0fe1be98089b6c452662a382363e1' }, this.text)));
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
BcmText.style = textCss;
|
|
118
|
+
|
|
119
|
+
export { BcmText as bcm_text };
|
|
120
|
+
//# sourceMappingURL=bcm-text.entry.js.map
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=bcm-text.entry.js.map
|