@redneckz/wildless-cms-uni-blocks 0.7.5 → 0.7.6

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 (117) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +103 -19
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/Tabs/LinkTab.d.ts +1 -0
  5. package/bundle/components/Tabs/ScrollableTabs.d.ts +8 -0
  6. package/bundle/components/Tabs/TabsContent.d.ts +12 -0
  7. package/bundle/components/Tabs/renderGroupTab.d.ts +2 -2
  8. package/bundle/components/Tabs/renderTab.d.ts +2 -1
  9. package/bundle/components/Tabs/tabItemClasses.d.ts +6 -1
  10. package/dist/components/Tabs/LinkTab.d.ts +1 -0
  11. package/dist/components/Tabs/LinkTab.js +2 -2
  12. package/dist/components/Tabs/LinkTab.js.map +1 -1
  13. package/dist/components/Tabs/ScrollableTabs.d.ts +8 -0
  14. package/dist/components/Tabs/ScrollableTabs.js +24 -0
  15. package/dist/components/Tabs/ScrollableTabs.js.map +1 -0
  16. package/dist/components/Tabs/Tabs.js +9 -2
  17. package/dist/components/Tabs/Tabs.js.map +1 -1
  18. package/dist/components/Tabs/TabsContent.d.ts +12 -0
  19. package/dist/components/Tabs/renderGroupTab.d.ts +2 -2
  20. package/dist/components/Tabs/renderGroupTab.js +12 -4
  21. package/dist/components/Tabs/renderGroupTab.js.map +1 -1
  22. package/dist/components/Tabs/renderTab.d.ts +2 -1
  23. package/dist/components/Tabs/renderTab.js +4 -6
  24. package/dist/components/Tabs/renderTab.js.map +1 -1
  25. package/dist/components/Tabs/tabItemClasses.d.ts +6 -1
  26. package/dist/components/Tabs/tabItemClasses.js +61 -2
  27. package/dist/components/Tabs/tabItemClasses.js.map +1 -1
  28. package/dist/setup-fixture.js +0 -1
  29. package/dist/setup-fixture.js.map +1 -1
  30. package/lib/common.css +1 -1
  31. package/lib/components/Tabs/LinkTab.d.ts +1 -0
  32. package/lib/components/Tabs/LinkTab.js +3 -3
  33. package/lib/components/Tabs/LinkTab.js.map +1 -1
  34. package/lib/components/Tabs/ScrollableTabs.d.ts +8 -0
  35. package/lib/components/Tabs/ScrollableTabs.js +22 -0
  36. package/lib/components/Tabs/ScrollableTabs.js.map +1 -0
  37. package/lib/components/Tabs/Tabs.fixture.d.ts +1 -0
  38. package/lib/components/Tabs/Tabs.js +9 -2
  39. package/lib/components/Tabs/Tabs.js.map +1 -1
  40. package/lib/components/Tabs/TabsContent.d.ts +12 -0
  41. package/lib/components/Tabs/renderGroupTab.d.ts +2 -2
  42. package/lib/components/Tabs/renderGroupTab.js +13 -5
  43. package/lib/components/Tabs/renderGroupTab.js.map +1 -1
  44. package/lib/components/Tabs/renderTab.d.ts +2 -1
  45. package/lib/components/Tabs/renderTab.js +4 -6
  46. package/lib/components/Tabs/renderTab.js.map +1 -1
  47. package/lib/components/Tabs/tabItemClasses.d.ts +6 -1
  48. package/lib/components/Tabs/tabItemClasses.js +58 -1
  49. package/lib/components/Tabs/tabItemClasses.js.map +1 -1
  50. package/lib/setup-fixture.js +0 -1
  51. package/lib/setup-fixture.js.map +1 -1
  52. package/mobile/bundle/bundle.umd.js +1 -1
  53. package/mobile/bundle/bundle.umd.min.js +1 -1
  54. package/mobile/bundle/components/Tabs/LinkTab.d.ts +1 -0
  55. package/mobile/bundle/components/Tabs/ScrollableTabs.d.ts +8 -0
  56. package/mobile/bundle/components/Tabs/TabsContent.d.ts +12 -0
  57. package/mobile/bundle/components/Tabs/renderGroupTab.d.ts +2 -2
  58. package/mobile/bundle/components/Tabs/renderTab.d.ts +2 -1
  59. package/mobile/bundle/components/Tabs/tabItemClasses.d.ts +6 -1
  60. package/mobile/dist/components/Tabs/LinkTab.d.ts +1 -0
  61. package/mobile/dist/components/Tabs/LinkTab.js +2 -2
  62. package/mobile/dist/components/Tabs/LinkTab.js.map +1 -1
  63. package/mobile/dist/components/Tabs/ScrollableTabs.d.ts +8 -0
  64. package/mobile/dist/components/Tabs/ScrollableTabs.js +24 -0
  65. package/mobile/dist/components/Tabs/ScrollableTabs.js.map +1 -0
  66. package/mobile/dist/components/Tabs/Tabs.js +9 -2
  67. package/mobile/dist/components/Tabs/Tabs.js.map +1 -1
  68. package/mobile/dist/components/Tabs/TabsContent.d.ts +12 -0
  69. package/mobile/dist/components/Tabs/renderGroupTab.d.ts +2 -2
  70. package/mobile/dist/components/Tabs/renderGroupTab.js +12 -4
  71. package/mobile/dist/components/Tabs/renderGroupTab.js.map +1 -1
  72. package/mobile/dist/components/Tabs/renderTab.d.ts +2 -1
  73. package/mobile/dist/components/Tabs/renderTab.js +4 -6
  74. package/mobile/dist/components/Tabs/renderTab.js.map +1 -1
  75. package/mobile/dist/components/Tabs/tabItemClasses.d.ts +6 -1
  76. package/mobile/dist/components/Tabs/tabItemClasses.js +61 -2
  77. package/mobile/dist/components/Tabs/tabItemClasses.js.map +1 -1
  78. package/mobile/dist/setup-fixture.js +0 -1
  79. package/mobile/dist/setup-fixture.js.map +1 -1
  80. package/mobile/lib/components/Tabs/LinkTab.d.ts +1 -0
  81. package/mobile/lib/components/Tabs/LinkTab.js +3 -3
  82. package/mobile/lib/components/Tabs/LinkTab.js.map +1 -1
  83. package/mobile/lib/components/Tabs/ScrollableTabs.d.ts +8 -0
  84. package/mobile/lib/components/Tabs/ScrollableTabs.js +22 -0
  85. package/mobile/lib/components/Tabs/ScrollableTabs.js.map +1 -0
  86. package/mobile/lib/components/Tabs/Tabs.js +9 -2
  87. package/mobile/lib/components/Tabs/Tabs.js.map +1 -1
  88. package/mobile/lib/components/Tabs/TabsContent.d.ts +12 -0
  89. package/mobile/lib/components/Tabs/renderGroupTab.d.ts +2 -2
  90. package/mobile/lib/components/Tabs/renderGroupTab.js +13 -5
  91. package/mobile/lib/components/Tabs/renderGroupTab.js.map +1 -1
  92. package/mobile/lib/components/Tabs/renderTab.d.ts +2 -1
  93. package/mobile/lib/components/Tabs/renderTab.js +4 -6
  94. package/mobile/lib/components/Tabs/renderTab.js.map +1 -1
  95. package/mobile/lib/components/Tabs/tabItemClasses.d.ts +6 -1
  96. package/mobile/lib/components/Tabs/tabItemClasses.js +58 -1
  97. package/mobile/lib/components/Tabs/tabItemClasses.js.map +1 -1
  98. package/mobile/lib/setup-fixture.js +0 -1
  99. package/mobile/lib/setup-fixture.js.map +1 -1
  100. package/mobile/src/components/Tabs/LinkTab.tsx +5 -13
  101. package/mobile/src/components/Tabs/ScrollableTabs.tsx +55 -0
  102. package/mobile/src/components/Tabs/Tabs.tsx +26 -4
  103. package/mobile/src/components/Tabs/TabsContent.ts +13 -0
  104. package/mobile/src/components/Tabs/renderGroupTab.tsx +30 -20
  105. package/mobile/src/components/Tabs/renderTab.tsx +8 -5
  106. package/mobile/src/components/Tabs/tabItemClasses.ts +65 -1
  107. package/mobile/src/setup-fixture.ts +0 -1
  108. package/package.json +1 -1
  109. package/src/components/Tabs/LinkTab.tsx +5 -13
  110. package/src/components/Tabs/ScrollableTabs.tsx +55 -0
  111. package/src/components/Tabs/Tabs.fixture.tsx +22 -0
  112. package/src/components/Tabs/Tabs.tsx +26 -4
  113. package/src/components/Tabs/TabsContent.ts +13 -0
  114. package/src/components/Tabs/renderGroupTab.tsx +30 -20
  115. package/src/components/Tabs/renderTab.tsx +8 -5
  116. package/src/components/Tabs/tabItemClasses.ts +65 -1
  117. package/src/setup-fixture.ts +0 -1
@@ -4,23 +4,21 @@ const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
4
  const assertUnreachable_1 = require("../../utils/assertUnreachable");
5
5
  const LinkTab_1 = require("./LinkTab");
6
6
  const renderGroupTab_1 = require("./renderGroupTab");
7
- const renderTab = ({ page, currentTab, showCounter, onClick }) =>
8
- // Linter doesn't understand that switch processes all cases
9
- // eslint-disable-next-line consistent-return
10
- (tab, i) => {
7
+ const renderTab = ({ page, currentTab, showCounter, onClick, isScrollable = false }) => (tab, i) => {
11
8
  const type = tab.type;
12
9
  if (!(type === 'group' || type === 'link')) {
13
10
  return null;
14
11
  }
15
12
  switch (type) {
16
13
  case 'group':
17
- return (0, renderGroupTab_1.renderGroupTab)({ page, currentTab, showCounter, onClick })(tab, i);
14
+ return (0, renderGroupTab_1.renderGroupTab)({ page, currentTab, showCounter, onClick, isScrollable })(tab, i);
18
15
  case 'link': {
19
- return (0, jsx_runtime_1.jsx)(LinkTab_1.LinkTab, { tab: tab, currentTab: currentTab }, String(i));
16
+ return ((0, jsx_runtime_1.jsx)(LinkTab_1.LinkTab, { tab: tab, currentTab: currentTab, isScrollable: isScrollable }, String(i)));
20
17
  }
21
18
  default:
22
19
  (0, assertUnreachable_1.assertUnreachable)(type);
23
20
  }
21
+ return null;
24
22
  };
25
23
  exports.renderTab = renderTab;
26
24
  //# sourceMappingURL=renderTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";;;AACA,qEAAkE;AAClE,uCAAoC;AACpC,qDAAkD;AAU3C,MAAM,SAAS,GACpB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAkB,EAAE,EAAE;AAC/D,4DAA4D;AAC5D,6CAA6C;AAC7C,CAAC,GAAY,EAAE,CAAS,EAAE,EAAE;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE;QAC1C,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,OAAO,IAAA,+BAAc,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5E,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,uBAAC,iBAAO,IAAiB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,IAA3C,MAAM,CAAC,CAAC,CAAC,CAAsC,CAAC;SACtE;QACD;YACE,IAAA,qCAAiB,EAAC,IAAI,CAAC,CAAC;KAC3B;AACH,CAAC,CAAC;AApBS,QAAA,SAAS,aAoBlB"}
1
+ {"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";;;AACA,qEAAkE;AAClE,uCAAoC;AACpC,qDAAkD;AAW3C,MAAM,SAAS,GACpB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAkB,EAAE,EAAE,CACrF,CAAC,GAAY,EAAE,CAAS,EAAE,EAAE;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE;QAC1C,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,OAAO,IAAA,+BAAc,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,uBAAC,iBAAO,IAAiB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,IAAvE,MAAM,CAAC,CAAC,CAAC,CAAkE,CAC1F,CAAC;SACH;QACD;YACE,IAAA,qCAAiB,EAAC,IAAI,CAAC,CAAC;KAC3B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAtBS,QAAA,SAAS,aAsBlB"}
@@ -1,6 +1,11 @@
1
1
  export declare const LINK_CLASSES = "h-12 flex-1 flex items-center justify-center cursor-pointer";
2
2
  export declare const ACTIVE_LINK_CLASSES = "bg-primary-main";
3
3
  export declare const INACTIVE_LINK_CLASSES = "group/btn bg-white";
4
- export declare const TEXT_CLASSES = "font-sans text-m";
4
+ export declare const SCROLLABLE_ACTIVE_LINK_CLASSES = "bg-white text-primary-main";
5
+ export declare const WIDESCREEN_ACTIVE_LINK_CLASSES = "bg-primary-main text-white";
6
+ export declare const TEXT_CLASSES = "font-sans text-m text-center";
5
7
  export declare const ACTIVE_TEXT_CLASSES = "text-white";
6
8
  export declare const INACTIVE_TEXT_CLASSES = "text-secondary-text group-hover/btn:text-primary-main";
9
+ export declare const WHITE_ACTIVE_TEXT_CLASSES = "text-primary-main";
10
+ export declare const getGroupTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
11
+ export declare const getLinkTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
@@ -1,9 +1,68 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.INACTIVE_TEXT_CLASSES = exports.ACTIVE_TEXT_CLASSES = exports.TEXT_CLASSES = exports.INACTIVE_LINK_CLASSES = exports.ACTIVE_LINK_CLASSES = exports.LINK_CLASSES = void 0;
2
+ exports.getLinkTabClassName = exports.getGroupTabClassName = exports.WHITE_ACTIVE_TEXT_CLASSES = exports.INACTIVE_TEXT_CLASSES = exports.ACTIVE_TEXT_CLASSES = exports.TEXT_CLASSES = exports.WIDESCREEN_ACTIVE_LINK_CLASSES = exports.SCROLLABLE_ACTIVE_LINK_CLASSES = exports.INACTIVE_LINK_CLASSES = exports.ACTIVE_LINK_CLASSES = exports.LINK_CLASSES = void 0;
3
3
  exports.LINK_CLASSES = 'h-12 flex-1 flex items-center justify-center cursor-pointer';
4
4
  exports.ACTIVE_LINK_CLASSES = 'bg-primary-main';
5
5
  exports.INACTIVE_LINK_CLASSES = 'group/btn bg-white';
6
- exports.TEXT_CLASSES = 'font-sans text-m';
6
+ exports.SCROLLABLE_ACTIVE_LINK_CLASSES = 'bg-white text-primary-main';
7
+ exports.WIDESCREEN_ACTIVE_LINK_CLASSES = 'bg-primary-main text-white';
8
+ exports.TEXT_CLASSES = 'font-sans text-m text-center';
7
9
  exports.ACTIVE_TEXT_CLASSES = 'text-white';
8
10
  exports.INACTIVE_TEXT_CLASSES = 'text-secondary-text group-hover/btn:text-primary-main';
11
+ exports.WHITE_ACTIVE_TEXT_CLASSES = 'text-primary-main';
12
+ const GROUP_TAB_CLASSES = {
13
+ div: {
14
+ scrollable: {
15
+ active: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.SCROLLABLE_ACTIVE_LINK_CLASSES}`,
16
+ default: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES}`,
17
+ },
18
+ default: {
19
+ active: `${exports.LINK_CLASSES} ${exports.WIDESCREEN_ACTIVE_LINK_CLASSES} whitespace-nowrap`,
20
+ default: `${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES} whitespace-nowrap`,
21
+ },
22
+ },
23
+ text: {
24
+ scrollable: {
25
+ active: `h-full border-0 border-b-2`,
26
+ default: ``,
27
+ },
28
+ default: {
29
+ active: '',
30
+ default: '',
31
+ },
32
+ },
33
+ };
34
+ const LINK_TAB_CLASSES = {
35
+ link: {
36
+ scrollable: {
37
+ active: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.SCROLLABLE_ACTIVE_LINK_CLASSES}`,
38
+ default: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES}`,
39
+ },
40
+ default: {
41
+ active: `${exports.LINK_CLASSES} ${exports.WIDESCREEN_ACTIVE_LINK_CLASSES}`,
42
+ default: `${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES}`,
43
+ },
44
+ },
45
+ text: {
46
+ scrollable: {
47
+ active: `${exports.TEXT_CLASSES} flex items-center h-full border-0 border-b-2 ${exports.WHITE_ACTIVE_TEXT_CLASSES}`,
48
+ default: `${exports.TEXT_CLASSES} ${exports.INACTIVE_TEXT_CLASSES}`,
49
+ },
50
+ default: {
51
+ active: `${exports.TEXT_CLASSES} ${exports.ACTIVE_TEXT_CLASSES}`,
52
+ default: `${exports.TEXT_CLASSES} ${exports.INACTIVE_TEXT_CLASSES}`,
53
+ },
54
+ },
55
+ };
56
+ const getGroupTabClassName = (type, active, isScrollable) => {
57
+ const styleType = isScrollable ? 'scrollable' : 'default';
58
+ const styleActive = active ? 'active' : 'default';
59
+ return GROUP_TAB_CLASSES[type][styleType][styleActive];
60
+ };
61
+ exports.getGroupTabClassName = getGroupTabClassName;
62
+ const getLinkTabClassName = (type, active, isScrollable) => {
63
+ const styleType = isScrollable ? 'scrollable' : 'default';
64
+ const styleActive = active ? 'active' : 'default';
65
+ return LINK_TAB_CLASSES[type][styleType][styleActive];
66
+ };
67
+ exports.getLinkTabClassName = getLinkTabClassName;
9
68
  //# sourceMappingURL=tabItemClasses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":";;AAAa,QAAA,YAAY,GAAG,6DAA6D,CAAC;AAC7E,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AACxC,QAAA,qBAAqB,GAAG,oBAAoB,CAAC;AAE7C,QAAA,YAAY,GAAG,kBAAkB,CAAC;AAClC,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,uDAAuD,CAAC"}
1
+ {"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":";;AAAa,QAAA,YAAY,GAAG,6DAA6D,CAAC;AAC7E,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AACxC,QAAA,qBAAqB,GAAG,oBAAoB,CAAC;AAE7C,QAAA,8BAA8B,GAAG,4BAA4B,CAAC;AAC9D,QAAA,8BAA8B,GAAG,4BAA4B,CAAC;AAE9D,QAAA,YAAY,GAAG,8BAA8B,CAAC;AAC9C,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,uDAAuD,CAAC;AAEhF,QAAA,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,MAAM,iBAAiB,GAAG;IACxB,GAAG,EAAE;QACH,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,oBAAY,IAAI,sCAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,oBAAY,IAAI,6BAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,oBAAY,IAAI,sCAA8B,oBAAoB;YAC7E,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,oBAAoB;SACtE;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,4BAA4B;YACpC,OAAO,EAAE,EAAE;SACZ;QACD,OAAO,EAAE;YACP,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AACF,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,oBAAY,IAAI,sCAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,oBAAY,IAAI,6BAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,oBAAY,IAAI,sCAA8B,EAAE;YAC3D,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,EAAE;SACpD;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,GAAG,oBAAY,iDAAiD,iCAAyB,EAAE;YACnG,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,EAAE;SACpD;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,oBAAY,IAAI,2BAAmB,EAAE;YAChD,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,EAAE;SACpD;KACF;CACF,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC3F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC,CAAC;AALW,QAAA,oBAAoB,wBAK/B;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC1F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B"}
@@ -27,7 +27,6 @@ useRouter_1.useRouter.setup(() => {
27
27
  });
28
28
  handlerDecorator_1.handlerDecorator.setup((handler, targetContent) => (ev) => {
29
29
  ev.preventDefault();
30
- console.log(ev.target, ev, targetContent);
31
30
  handler(ev);
32
31
  });
33
32
  //# sourceMappingURL=setup-fixture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":";;;;AAAA,6CAA2C;AAC3C,iCAAiC;AACjC,+DAA4D;AAC5D,iDAA8C;AAC9C,uDAAoD;AACpD,0DAA6B;AAE7B,iCAAe,CAAC,KAAK,CAAC,kBAAG,CAAC,CAAC;AAE3B,qBAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,iCAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mCAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":";;;;AAAA,6CAA2C;AAC3C,iCAAiC;AACjC,+DAA4D;AAC5D,iDAA8C;AAC9C,uDAAoD;AACpD,0DAA6B;AAE7B,iCAAe,CAAC,KAAK,CAAC,kBAAG,CAAC,CAAC;AAE3B,qBAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,iCAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mCAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import type { LinkTabData, TabData } from './TabsContent';
2
2
  interface LinkTabProps {
3
3
  tab: LinkTabData;
4
4
  currentTab?: TabData;
5
+ isScrollable?: boolean;
5
6
  }
6
7
  export declare const LinkTab: import("@redneckz/uni-jsx").UNIComponent<LinkTabProps, any, any>;
7
8
  export {};
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
3
  import { useLink } from '../../hooks/useLink.js';
4
- import { ACTIVE_LINK_CLASSES, ACTIVE_TEXT_CLASSES, INACTIVE_LINK_CLASSES, INACTIVE_TEXT_CLASSES, LINK_CLASSES, TEXT_CLASSES, } from './tabItemClasses.js';
4
+ import { getLinkTabClassName } from './tabItemClasses.js';
5
5
  export const LinkTab = JSX((props) => {
6
- const { tab, currentTab } = props;
6
+ const { tab, currentTab, isScrollable = false } = props;
7
7
  const active = currentTab?.type === 'link' && currentTab.href === tab.href;
8
8
  const link = useLink();
9
9
  const adjustedProps = link(tab);
10
- return (_jsx("a", { role: "tab", className: `${LINK_CLASSES} ${active ? ACTIVE_LINK_CLASSES : INACTIVE_LINK_CLASSES}`, target: tab.target, href: adjustedProps.href, onClick: adjustedProps.onClick, children: _jsx("span", { className: `${TEXT_CLASSES} ${active ? ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES}`, children: tab.text }) }));
10
+ return (_jsx("a", { role: "tab", className: getLinkTabClassName('link', active, isScrollable), target: tab.target, href: adjustedProps.href, onClick: adjustedProps.onClick, children: _jsx("span", { className: getLinkTabClassName('text', active, isScrollable), children: tab.text }) }));
11
11
  });
12
12
  //# sourceMappingURL=LinkTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/LinkTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAe,CAAC,KAAK,EAAE,EAAE;IACjD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;IAE3E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhC,OAAO,CACL,YACE,IAAI,EAAC,KAAK,EACV,SAAS,EAAE,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EAAE,EACpF,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,IAAI,EAAE,aAAa,CAAC,IAAI,EACxB,OAAO,EAAE,aAAa,CAAC,OAAO,YAE9B,eAAM,SAAS,EAAE,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EAAE,YACvF,GAAG,CAAC,IAAI,GACJ,GACL,CACL,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"LinkTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/LinkTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAe,CAAC,KAAK,EAAE,EAAE;IACjD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IACxD,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;IAE3E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhC,OAAO,CACL,YACE,IAAI,EAAC,KAAK,EACV,SAAS,EAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAC5D,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,IAAI,EAAE,aAAa,CAAC,IAAI,EACxB,OAAO,EAAE,aAAa,CAAC,OAAO,YAE9B,eAAM,SAAS,EAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,YAAG,GAAG,CAAC,IAAI,GAAQ,GACnF,CACL,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { RenderTabProps } from './renderTab';
2
+ import type { TabData } from './TabsContent';
3
+ interface ScrollableTabsProps extends RenderTabProps {
4
+ tabs?: TabData[];
5
+ }
6
+ export declare type IsScrollButtonsShown = boolean[];
7
+ export declare const ScrollableTabs: import("@redneckz/uni-jsx").UNIComponent<ScrollableTabsProps, any, any>;
8
+ export {};
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { SwipeListContainer } from '../../ui-kit/SwipeListControl/SwipeListContainer.js';
4
+ import { useSwipeListScroll } from '../../ui-kit/SwipeListControl/useSwipeListScroll.js';
5
+ import { ScrollLeftButton, ScrollRightButton } from '../../ui-kit/Button/ArrowButton.js';
6
+ import { renderTab } from './renderTab.js';
7
+ const scrollButtonStyle = 'absolute z-50 top-0';
8
+ export const ScrollableTabs = JSX((props) => {
9
+ const { tabs, onClick, currentTab, page, showCounter } = props;
10
+ const [containerRef, scroll] = useSwipeListScroll({
11
+ itemCount: tabs?.length || 0,
12
+ isCyclic: false,
13
+ });
14
+ return (_jsxs("div", { className: "relative max-w-full m-auto", children: [_jsx("div", { className: `font-sans max-w-full w-full overflow-hidden relative bg-white`, children: _jsx(SwipeListContainer, { containerRef: containerRef, snapAlign: "snap-start", onVisibleIndicesChange: scroll.handleVisibleIndicesChange, children: tabs?.map(renderTab({
15
+ onClick,
16
+ currentTab,
17
+ showCounter,
18
+ page,
19
+ isScrollable: true,
20
+ })) }) }), scroll.canScrollLeft ? (_jsx(ScrollLeftButton, { className: `${scrollButtonStyle} left-6`, onClick: scroll.scrollLeft })) : null, scroll.canScrollRight ? (_jsx(ScrollRightButton, { className: `${scrollButtonStyle} rotate-180 right-6`, onClick: scroll.scrollRight })) : null] }));
21
+ });
22
+ //# sourceMappingURL=ScrollableTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollableTabs.js","sourceRoot":"","sources":["../../../src/components/Tabs/ScrollableTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAsB,CAAC,KAAK,EAAE,EAAE;IAC/D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE/D,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAAiB;QAChE,SAAS,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QAC5B,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,CACL,eAAK,SAAS,EAAC,4BAA4B,aACzC,cAAK,SAAS,EAAE,+DAA+D,YAC7E,KAAC,kBAAkB,IACjB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAC,YAAY,EACtB,sBAAsB,EAAE,MAAM,CAAC,0BAA0B,YAExD,IAAI,EAAE,GAAG,CACR,SAAS,CAAC;wBACR,OAAO;wBACP,UAAU;wBACV,WAAW;wBACX,IAAI;wBACJ,YAAY,EAAE,IAAI;qBACnB,CAAC,CACH,GACkB,GACjB,EACL,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CACtB,KAAC,gBAAgB,IAAC,SAAS,EAAE,GAAG,iBAAiB,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,GAAI,CAC3F,CAAC,CAAC,CAAC,IAAI,EACP,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CACvB,KAAC,iBAAiB,IAChB,SAAS,EAAE,GAAG,iBAAiB,qBAAqB,EACpD,OAAO,EAAE,MAAM,CAAC,WAAW,GAC3B,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -4,14 +4,16 @@ import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
4
4
  import { EventBus } from '../../EventBus/EventBus.js';
5
5
  import { BlockWrapper } from '../../ui-kit/BlockWrapper.js';
6
6
  import { renderTab } from './renderTab.js';
7
+ import { ScrollableTabs } from './ScrollableTabs.js';
7
8
  export const Tabs = JSX((props) => {
8
- const { className = '', tabs, showCounter, isSticky, ...rest } = props;
9
+ const { className = '', tabs, showCounter, isSticky, tabsMode, ...rest } = props;
9
10
  const [currentTab, setCurrentTab] = useState(tabs ? tabs[0] : undefined);
10
11
  useEffect(() => EventBus.inst.subscribe('tab', (event) => {
11
12
  const tab = tabs?.find(checkTab(event));
12
13
  if (event.type === 'link' && tab) {
13
14
  setCurrentTab(tab);
14
15
  }
16
+ return [];
15
17
  }), [tabs]);
16
18
  useEffect(() => currentTab?.type === 'group'
17
19
  ? EventBus.inst.subject('tab', { label: currentTab.ref })
@@ -22,7 +24,12 @@ export const Tabs = JSX((props) => {
22
24
  }
23
25
  setCurrentTab(selectedTab);
24
26
  }, []);
25
- return (_jsx(BlockWrapper, { className: `${isSticky ? 'sticky top-1 z-20 ' : ''}box-border flex gap-x-1 ${className}`, role: "tablist", ...rest, children: tabs?.map(renderTab({ onClick: handleClick, currentTab, showCounter, ...rest })) }));
27
+ return (_jsx(BlockWrapper, { className: `relative box-border flex gap-x-1 w-full ${isSticky ? 'sticky top-1 z-20 ' : ''} ${className}`, role: "tablist", ...rest, children: tabsMode === 'scrollable' ? (_jsx(ScrollableTabs, { tabs: tabs, onClick: handleClick, currentTab: currentTab, showCounter: showCounter, ...rest })) : (tabs?.map(renderTab({
28
+ onClick: handleClick,
29
+ currentTab,
30
+ showCounter,
31
+ ...rest,
32
+ }))) }));
26
33
  });
27
34
  const checkTab = (event) => (_) => _.type === 'link' && _.href === `#${event.label}`;
28
35
  //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUxC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAiB,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEzE,SAAS,CACP,GAAG,EAAE,CACH,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,EAAE;YAChC,aAAa,CAAC,GAAG,CAAC,CAAC;SACpB;IACH,CAAC,CAAC,EACJ,CAAC,IAAI,CAAC,CACP,CAAC;IAEF,SAAS,CACP,GAAG,EAAE,CACH,UAAU,EAAE,IAAI,KAAK,OAAO;QAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;QACzD,CAAC,CAAC,SAAS,EACf,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,WAAoB,EAAE,EAAE;QACvD,IAAI,WAAW,EAAE,IAAI,KAAK,OAAO,EAAE;YACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;SAC/E;QACD,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,YAAY,IACX,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,2BAA2B,SAAS,EAAE,EACxF,IAAI,EAAC,SAAS,KACV,IAAI,YAEP,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GACpE,CAChB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,CAAU,EAAE,EAAE,CAC7D,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASlD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAiB,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEjF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEzE,SAAS,CACP,GAAG,EAAE,CACH,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,EAAE;YAChC,aAAa,CAAC,GAAG,CAAC,CAAC;SACpB;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,EACJ,CAAC,IAAI,CAAC,CACP,CAAC;IAEF,SAAS,CACP,GAAG,EAAE,CACH,UAAU,EAAE,IAAI,KAAK,OAAO;QAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;QACzD,CAAC,CAAC,SAAS,EACf,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,WAAoB,EAAE,EAAE;QACvD,IAAI,WAAW,EAAE,IAAI,KAAK,OAAO,EAAE;YACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;SAC/E;QACD,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,YAAY,IACX,SAAS,EAAE,2CACT,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EACpC,IAAI,SAAS,EAAE,EACf,IAAI,EAAC,SAAS,KACV,IAAI,YAEP,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAC3B,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,KACpB,IAAI,GACR,CACH,CAAC,CAAC,CAAC,CACF,IAAI,EAAE,GAAG,CACP,SAAS,CAAC;YACR,OAAO,EAAE,WAAW;YACpB,UAAU;YACV,WAAW;YACX,GAAG,IAAI;SACR,CAAC,CACH,CACF,GACY,CAChB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,CAAU,EAAE,EAAE,CAC7D,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC"}
@@ -23,6 +23,13 @@ export declare type LinkTabData = LinkProps & {
23
23
  * }
24
24
  */
25
25
  export declare type TabData = GroupTabData | LinkTabData;
26
+ /**
27
+ * @enumNames [
28
+ * "По ширине экрана",
29
+ * "С прокруткой"
30
+ * ]
31
+ */
32
+ export declare type TabsMode = 'wideScreen' | 'scrollable';
26
33
  /**
27
34
  * @title Вкладки
28
35
  */
@@ -33,4 +40,9 @@ export interface TabsContent {
33
40
  isSticky?: boolean;
34
41
  /** @title Показывать счетчик блоков во вкладках */
35
42
  showCounter?: boolean;
43
+ /**
44
+ * @title Режим вкладок
45
+ * @default "wideScreen"
46
+ */
47
+ tabsMode?: TabsMode;
36
48
  }
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
- import type { RenderTabProps } from './renderTab';
3
2
  import type { GroupTabData } from './TabsContent';
4
- export declare const renderGroupTab: ({ page, currentTab, showCounter, onClick }: RenderTabProps) => (tab: GroupTabData, i: number) => JSX.Element;
3
+ import type { RenderTabProps } from './renderTab';
4
+ export declare const renderGroupTab: ({ page, currentTab, showCounter, onClick, isScrollable }: RenderTabProps) => (tab: GroupTabData, i: number) => JSX.Element;
@@ -1,15 +1,23 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
- import { ACTIVE_LINK_CLASSES, ACTIVE_TEXT_CLASSES, INACTIVE_LINK_CLASSES, INACTIVE_TEXT_CLASSES, LINK_CLASSES, TEXT_CLASSES, } from './tabItemClasses.js';
2
+ import { ACTIVE_TEXT_CLASSES, INACTIVE_TEXT_CLASSES, TEXT_CLASSES, WHITE_ACTIVE_TEXT_CLASSES, getGroupTabClassName, } from './tabItemClasses.js';
3
3
  const BADGE_CLASSES = 'min-w-[22px] h-[22px] rounded-full text-xs ml-2 flex justify-center items-center';
4
4
  const ACTIVE_BADGE_CLASSES = 'bg-white/30 text-white';
5
5
  const INACTIVE_BADGE_CLASSES = 'bg-main-divider text-secondary-text group-hover/btn:text-primary-main';
6
- export const renderGroupTab = ({ page, currentTab, showCounter, onClick }) => (tab, i) => {
6
+ export const renderGroupTab = ({ page, currentTab, showCounter, onClick, isScrollable = false }) => (tab, i) => {
7
7
  const active = currentTab === tab;
8
8
  const count = tab.ref && page?.blocks
9
9
  ? page.blocks.filter((block) => block?.labels?.includes(tab.ref)).length
10
10
  : 0;
11
- return (_jsx("div", { className: `${LINK_CLASSES} ${active ? ACTIVE_LINK_CLASSES : INACTIVE_LINK_CLASSES}`, role: "tab", "aria-selected": active, onClick: () => onClick(tab), children: _jsxs("div", { className: "flex flex-1 items-center justify-center", children: [tab?.title ? renderTitle(tab.title, active) : null, showCounter && count ? renderCount(count, active) : null] }) }, String(i)));
11
+ return (_jsx("div", { className: getGroupTabClassName('div', active, isScrollable), role: "tab", "aria-selected": active, onClick: () => onClick(tab), children: _jsxs("div", { className: `flex flex-1 items-center justify-center ${getGroupTabClassName('text', active, isScrollable)}`, children: [renderTitle(tab.title, active, isScrollable), renderCount(showCounter, count, active)] }) }, `group-${String(i)}`));
12
+ };
13
+ const renderTitle = (title, active, isScrollable) => {
14
+ const activeClassName = active ? WHITE_ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES;
15
+ const titleClassName = isScrollable
16
+ ? `${TEXT_CLASSES} ${activeClassName}`
17
+ : `${TEXT_CLASSES} ${active ? ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES}`;
18
+ return title ? _jsx("h3", { className: titleClassName, children: title }) : null;
19
+ };
20
+ const renderCount = (showCounter, count, active) => {
21
+ return showCounter && count ? (_jsx("div", { className: `${BADGE_CLASSES} ${active ? ACTIVE_BADGE_CLASSES : INACTIVE_BADGE_CLASSES}`, children: count })) : null;
12
22
  };
13
- const renderTitle = (title, active) => (_jsx("h3", { className: `${TEXT_CLASSES} ${active ? ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES}`, children: title }));
14
- const renderCount = (count, active) => (_jsx("div", { className: `${BADGE_CLASSES} ${active ? ACTIVE_BADGE_CLASSES : INACTIVE_BADGE_CLASSES}`, children: count }));
15
23
  //# sourceMappingURL=renderGroupTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderGroupTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderGroupTab.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,MAAM,aAAa,GACjB,kFAAkF,CAAC;AACrF,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AACtD,MAAM,sBAAsB,GAC1B,uEAAuE,CAAC;AAE1E,MAAM,CAAC,MAAM,cAAc,GACzB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAkB,EAAE,EAAE,CAC/D,CAAC,GAAiB,EAAE,CAAS,EAAE,EAAE;IAC/B,MAAM,MAAM,GAAG,UAAU,KAAK,GAAG,CAAC;IAElC,MAAM,KAAK,GACT,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM;QACrB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC,CAAC,MAAM;QAClF,CAAC,CAAC,CAAC,CAAC;IAER,OAAO,CACL,cAEE,SAAS,EAAE,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EAAE,EACpF,IAAI,EAAC,KAAK,mBACK,MAAM,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAE3B,eAAK,SAAS,EAAC,yCAAyC,aACrD,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAClD,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IACrD,IATD,MAAM,CAAC,CAAC,CAAC,CAUV,CACP,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,MAAe,EAAE,EAAE,CAAC,CACtD,aAAI,SAAS,EAAE,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EAAE,YACrF,KAAK,GACH,CACN,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,MAAe,EAAE,EAAE,CAAC,CACtD,cAAK,SAAS,EAAE,GAAG,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,EAAE,YACzF,KAAK,GACF,CACP,CAAC"}
1
+ {"version":3,"file":"renderGroupTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderGroupTab.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,aAAa,GACjB,kFAAkF,CAAC;AACrF,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AACtD,MAAM,sBAAsB,GAC1B,uEAAuE,CAAC;AAE1E,MAAM,CAAC,MAAM,cAAc,GACzB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAkB,EAAE,EAAE,CACrF,CAAC,GAAiB,EAAE,CAAS,EAAE,EAAE;IAC/B,MAAM,MAAM,GAAG,UAAU,KAAK,GAAG,CAAC;IAElC,MAAM,KAAK,GACT,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM;QACrB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC,CAAC,MAAM;QAClF,CAAC,CAAC,CAAC,CAAC;IAER,OAAO,CACL,cAEE,SAAS,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAC5D,IAAI,EAAC,KAAK,mBACK,MAAM,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAE3B,eACE,SAAS,EAAE,2CAA2C,oBAAoB,CACxE,MAAM,EACN,MAAM,EACN,YAAY,CACb,EAAE,aAEF,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAC5C,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,IACpC,IAfD,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,CAgBrB,CACP,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,WAAW,GAAG,CAAC,KAAyB,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IACxF,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACnF,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,GAAG,YAAY,IAAI,eAAe,EAAE;QACtC,CAAC,CAAC,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAE9E,OAAO,KAAK,CAAC,CAAC,CAAC,aAAI,SAAS,EAAE,cAAc,YAAG,KAAK,GAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,WAAgC,EAAE,KAAa,EAAE,MAAe,EAAE,EAAE;IACvF,OAAO,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAC5B,cAAK,SAAS,EAAE,GAAG,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,EAAE,YACzF,KAAK,GACF,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC"}
@@ -6,5 +6,6 @@ export interface RenderTabProps {
6
6
  currentTab?: TabData;
7
7
  showCounter?: boolean;
8
8
  onClick: (tab: TabData) => void;
9
+ isScrollable?: boolean;
9
10
  }
10
- export declare const renderTab: ({ page, currentTab, showCounter, onClick }: RenderTabProps) => (tab: TabData, i: number) => JSX.Element | null;
11
+ export declare const renderTab: ({ page, currentTab, showCounter, onClick, isScrollable }: RenderTabProps) => (tab: TabData, i: number) => JSX.Element | null;
@@ -2,22 +2,20 @@ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { assertUnreachable } from '../../utils/assertUnreachable.js';
3
3
  import { LinkTab } from './LinkTab.js';
4
4
  import { renderGroupTab } from './renderGroupTab.js';
5
- export const renderTab = ({ page, currentTab, showCounter, onClick }) =>
6
- // Linter doesn't understand that switch processes all cases
7
- // eslint-disable-next-line consistent-return
8
- (tab, i) => {
5
+ export const renderTab = ({ page, currentTab, showCounter, onClick, isScrollable = false }) => (tab, i) => {
9
6
  const type = tab.type;
10
7
  if (!(type === 'group' || type === 'link')) {
11
8
  return null;
12
9
  }
13
10
  switch (type) {
14
11
  case 'group':
15
- return renderGroupTab({ page, currentTab, showCounter, onClick })(tab, i);
12
+ return renderGroupTab({ page, currentTab, showCounter, onClick, isScrollable })(tab, i);
16
13
  case 'link': {
17
- return _jsx(LinkTab, { tab: tab, currentTab: currentTab }, String(i));
14
+ return (_jsx(LinkTab, { tab: tab, currentTab: currentTab, isScrollable: isScrollable }, String(i)));
18
15
  }
19
16
  default:
20
17
  assertUnreachable(type);
21
18
  }
19
+ return null;
22
20
  };
23
21
  //# sourceMappingURL=renderTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUlD,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAkB,EAAE,EAAE;AAC/D,4DAA4D;AAC5D,6CAA6C;AAC7C,CAAC,GAAY,EAAE,CAAS,EAAE,EAAE;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE;QAC1C,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5E,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,KAAC,OAAO,IAAiB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,IAA3C,MAAM,CAAC,CAAC,CAAC,CAAsC,CAAC;SACtE;QACD;YACE,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC3B;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWlD,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAkB,EAAE,EAAE,CACrF,CAAC,GAAY,EAAE,CAAS,EAAE,EAAE;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE;QAC1C,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,KAAC,OAAO,IAAiB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,IAAvE,MAAM,CAAC,CAAC,CAAC,CAAkE,CAC1F,CAAC;SACH;QACD;YACE,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -1,6 +1,11 @@
1
1
  export declare const LINK_CLASSES = "h-12 flex-1 flex items-center justify-center cursor-pointer";
2
2
  export declare const ACTIVE_LINK_CLASSES = "bg-primary-main";
3
3
  export declare const INACTIVE_LINK_CLASSES = "group/btn bg-white";
4
- export declare const TEXT_CLASSES = "font-sans text-m";
4
+ export declare const SCROLLABLE_ACTIVE_LINK_CLASSES = "bg-white text-primary-main";
5
+ export declare const WIDESCREEN_ACTIVE_LINK_CLASSES = "bg-primary-main text-white";
6
+ export declare const TEXT_CLASSES = "font-sans text-m text-center";
5
7
  export declare const ACTIVE_TEXT_CLASSES = "text-white";
6
8
  export declare const INACTIVE_TEXT_CLASSES = "text-secondary-text group-hover/btn:text-primary-main";
9
+ export declare const WHITE_ACTIVE_TEXT_CLASSES = "text-primary-main";
10
+ export declare const getGroupTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
11
+ export declare const getLinkTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
@@ -1,7 +1,64 @@
1
1
  export const LINK_CLASSES = 'h-12 flex-1 flex items-center justify-center cursor-pointer';
2
2
  export const ACTIVE_LINK_CLASSES = 'bg-primary-main';
3
3
  export const INACTIVE_LINK_CLASSES = 'group/btn bg-white';
4
- export const TEXT_CLASSES = 'font-sans text-m';
4
+ export const SCROLLABLE_ACTIVE_LINK_CLASSES = 'bg-white text-primary-main';
5
+ export const WIDESCREEN_ACTIVE_LINK_CLASSES = 'bg-primary-main text-white';
6
+ export const TEXT_CLASSES = 'font-sans text-m text-center';
5
7
  export const ACTIVE_TEXT_CLASSES = 'text-white';
6
8
  export const INACTIVE_TEXT_CLASSES = 'text-secondary-text group-hover/btn:text-primary-main';
9
+ export const WHITE_ACTIVE_TEXT_CLASSES = 'text-primary-main';
10
+ const GROUP_TAB_CLASSES = {
11
+ div: {
12
+ scrollable: {
13
+ active: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${SCROLLABLE_ACTIVE_LINK_CLASSES}`,
14
+ default: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${INACTIVE_LINK_CLASSES}`,
15
+ },
16
+ default: {
17
+ active: `${LINK_CLASSES} ${WIDESCREEN_ACTIVE_LINK_CLASSES} whitespace-nowrap`,
18
+ default: `${LINK_CLASSES} ${INACTIVE_LINK_CLASSES} whitespace-nowrap`,
19
+ },
20
+ },
21
+ text: {
22
+ scrollable: {
23
+ active: `h-full border-0 border-b-2`,
24
+ default: ``,
25
+ },
26
+ default: {
27
+ active: '',
28
+ default: '',
29
+ },
30
+ },
31
+ };
32
+ const LINK_TAB_CLASSES = {
33
+ link: {
34
+ scrollable: {
35
+ active: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${SCROLLABLE_ACTIVE_LINK_CLASSES}`,
36
+ default: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${INACTIVE_LINK_CLASSES}`,
37
+ },
38
+ default: {
39
+ active: `${LINK_CLASSES} ${WIDESCREEN_ACTIVE_LINK_CLASSES}`,
40
+ default: `${LINK_CLASSES} ${INACTIVE_LINK_CLASSES}`,
41
+ },
42
+ },
43
+ text: {
44
+ scrollable: {
45
+ active: `${TEXT_CLASSES} flex items-center h-full border-0 border-b-2 ${WHITE_ACTIVE_TEXT_CLASSES}`,
46
+ default: `${TEXT_CLASSES} ${INACTIVE_TEXT_CLASSES}`,
47
+ },
48
+ default: {
49
+ active: `${TEXT_CLASSES} ${ACTIVE_TEXT_CLASSES}`,
50
+ default: `${TEXT_CLASSES} ${INACTIVE_TEXT_CLASSES}`,
51
+ },
52
+ },
53
+ };
54
+ export const getGroupTabClassName = (type, active, isScrollable) => {
55
+ const styleType = isScrollable ? 'scrollable' : 'default';
56
+ const styleActive = active ? 'active' : 'default';
57
+ return GROUP_TAB_CLASSES[type][styleType][styleActive];
58
+ };
59
+ export const getLinkTabClassName = (type, active, isScrollable) => {
60
+ const styleType = isScrollable ? 'scrollable' : 'default';
61
+ const styleActive = active ? 'active' : 'default';
62
+ return LINK_TAB_CLASSES[type][styleType][styleActive];
63
+ };
7
64
  //# sourceMappingURL=tabItemClasses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,6DAA6D,CAAC;AAC1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uDAAuD,CAAC"}
1
+ {"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,6DAA6D,CAAC;AAC1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAC3E,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E,MAAM,CAAC,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uDAAuD,CAAC;AAE7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,MAAM,iBAAiB,GAAG;IACxB,GAAG,EAAE;QACH,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,YAAY,IAAI,8BAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,YAAY,IAAI,qBAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,YAAY,IAAI,8BAA8B,oBAAoB;YAC7E,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,oBAAoB;SACtE;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,4BAA4B;YACpC,OAAO,EAAE,EAAE;SACZ;QACD,OAAO,EAAE;YACP,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AACF,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,YAAY,IAAI,8BAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,YAAY,IAAI,qBAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,YAAY,IAAI,8BAA8B,EAAE;YAC3D,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,EAAE;SACpD;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,GAAG,YAAY,iDAAiD,yBAAyB,EAAE;YACnG,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,EAAE;SACpD;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,YAAY,IAAI,mBAAmB,EAAE;YAChD,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,EAAE;SACpD;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC3F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC1F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC,CAAC"}
@@ -23,7 +23,6 @@ useRouter.setup(() => {
23
23
  });
24
24
  handlerDecorator.setup((handler, targetContent) => (ev) => {
25
25
  ev.preventDefault();
26
- console.log(ev.target, ev, targetContent);
27
26
  handler(ev);
28
27
  });
29
28
  //# sourceMappingURL=setup-fixture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
@@ -1,22 +1,16 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useLink } from '../../hooks/useLink';
3
- import {
4
- ACTIVE_LINK_CLASSES,
5
- ACTIVE_TEXT_CLASSES,
6
- INACTIVE_LINK_CLASSES,
7
- INACTIVE_TEXT_CLASSES,
8
- LINK_CLASSES,
9
- TEXT_CLASSES,
10
- } from './tabItemClasses';
3
+ import { getLinkTabClassName } from './tabItemClasses';
11
4
  import type { LinkTabData, TabData } from './TabsContent';
12
5
 
13
6
  interface LinkTabProps {
14
7
  tab: LinkTabData;
15
8
  currentTab?: TabData;
9
+ isScrollable?: boolean;
16
10
  }
17
11
 
18
12
  export const LinkTab = JSX<LinkTabProps>((props) => {
19
- const { tab, currentTab } = props;
13
+ const { tab, currentTab, isScrollable = false } = props;
20
14
  const active = currentTab?.type === 'link' && currentTab.href === tab.href;
21
15
 
22
16
  const link = useLink();
@@ -25,14 +19,12 @@ export const LinkTab = JSX<LinkTabProps>((props) => {
25
19
  return (
26
20
  <a
27
21
  role="tab"
28
- className={`${LINK_CLASSES} ${active ? ACTIVE_LINK_CLASSES : INACTIVE_LINK_CLASSES}`}
22
+ className={getLinkTabClassName('link', active, isScrollable)}
29
23
  target={tab.target}
30
24
  href={adjustedProps.href}
31
25
  onClick={adjustedProps.onClick}
32
26
  >
33
- <span className={`${TEXT_CLASSES} ${active ? ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES}`}>
34
- {tab.text}
35
- </span>
27
+ <span className={getLinkTabClassName('text', active, isScrollable)}>{tab.text}</span>
36
28
  </a>
37
29
  );
38
30
  });
@@ -0,0 +1,55 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import type { RenderTabProps } from './renderTab';
3
+ import type { TabData } from './TabsContent';
4
+ import { SwipeListContainer } from '../../ui-kit/SwipeListControl/SwipeListContainer';
5
+ import { useSwipeListScroll } from '../../ui-kit/SwipeListControl/useSwipeListScroll';
6
+ import { ScrollLeftButton, ScrollRightButton } from '../../ui-kit/Button/ArrowButton';
7
+ import { renderTab } from './renderTab';
8
+
9
+ interface ScrollableTabsProps extends RenderTabProps {
10
+ tabs?: TabData[];
11
+ }
12
+
13
+ export type IsScrollButtonsShown = boolean[];
14
+
15
+ const scrollButtonStyle = 'absolute z-50 top-0';
16
+
17
+ export const ScrollableTabs = JSX<ScrollableTabsProps>((props) => {
18
+ const { tabs, onClick, currentTab, page, showCounter } = props;
19
+
20
+ const [containerRef, scroll] = useSwipeListScroll<HTMLDivElement>({
21
+ itemCount: tabs?.length || 0,
22
+ isCyclic: false,
23
+ });
24
+
25
+ return (
26
+ <div className="relative max-w-full m-auto">
27
+ <div className={`font-sans max-w-full w-full overflow-hidden relative bg-white`}>
28
+ <SwipeListContainer
29
+ containerRef={containerRef}
30
+ snapAlign="snap-start"
31
+ onVisibleIndicesChange={scroll.handleVisibleIndicesChange}
32
+ >
33
+ {tabs?.map(
34
+ renderTab({
35
+ onClick,
36
+ currentTab,
37
+ showCounter,
38
+ page,
39
+ isScrollable: true,
40
+ }),
41
+ )}
42
+ </SwipeListContainer>
43
+ </div>
44
+ {scroll.canScrollLeft ? (
45
+ <ScrollLeftButton className={`${scrollButtonStyle} left-6`} onClick={scroll.scrollLeft} />
46
+ ) : null}
47
+ {scroll.canScrollRight ? (
48
+ <ScrollRightButton
49
+ className={`${scrollButtonStyle} rotate-180 right-6`}
50
+ onClick={scroll.scrollRight}
51
+ />
52
+ ) : null}
53
+ </div>
54
+ );
55
+ });