@pisell/private-materials 3.4.16 → 3.4.18

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 (211) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +9 -9
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/components/appointmentBooking/components/Content/index.js +1 -1
  12. package/es/components/appointmentBooking/components/Content/index.less +3 -3
  13. package/es/components/appointmentBooking/components/Services/index.js +2 -2
  14. package/es/components/appointmentBooking/index.js +8 -2
  15. package/es/components/booking/info2/service/addTimeModal/index.js +0 -1
  16. package/es/components/booking/utils.d.ts +2 -2
  17. package/es/components/eftposPay/hooks.d.ts +1 -1
  18. package/es/components/eftposPay/store/index.d.ts +2 -2
  19. package/es/components/eventBooking/index.js +8 -1
  20. package/es/components/ticketBooking/components/addServiceVariant/addService.js +3 -3
  21. package/es/hooks/useWindowSize.js +8 -1
  22. package/es/index.d.ts +3 -0
  23. package/es/index.js +4 -1
  24. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
  25. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.js +29 -0
  26. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
  27. package/es/plus/productSelect/CategoryTabs/index.d.ts +18 -0
  28. package/es/plus/productSelect/CategoryTabs/index.js +171 -0
  29. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
  30. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.js +37 -0
  31. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
  32. package/es/plus/productSelect/ProductCard/index.d.ts +45 -0
  33. package/es/plus/productSelect/ProductCard/index.js +170 -0
  34. package/es/plus/productSelect/ProductCard/index.less +253 -0
  35. package/es/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
  36. package/es/plus/productSelect/ProductList/gridComponents.js +149 -0
  37. package/es/plus/productSelect/ProductList/index.d.ts +22 -0
  38. package/es/plus/productSelect/ProductList/index.js +72 -0
  39. package/es/plus/productSelect/ProductList/index.less +0 -0
  40. package/es/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
  41. package/es/plus/productSelect/components/IntersectionObserver.js +276 -0
  42. package/es/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
  43. package/es/plus/productSelect/components/TabsStructure/TabsStructure.js +357 -0
  44. package/es/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
  45. package/es/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
  46. package/es/plus/productSelect/components/TabsStructure/hooks.js +243 -0
  47. package/es/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
  48. package/es/plus/productSelect/components/TabsStructure/index.js +13 -0
  49. package/es/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
  50. package/es/plus/productSelect/components/TabsStructure/styles.js +87 -0
  51. package/es/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
  52. package/es/plus/productSelect/components/TabsStructure/types.js +1 -0
  53. package/es/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
  54. package/es/plus/productSelect/components/TabsStructure/utils.js +56 -0
  55. package/es/plus/productSelect/components/pisellPriceText/index.d.ts +12 -0
  56. package/es/plus/productSelect/components/pisellPriceText/index.js +44 -0
  57. package/es/plus/productSelect/components/pisellPriceText/index.less +4 -0
  58. package/es/plus/productSelect/hooks/useToken.d.ts +18 -0
  59. package/es/plus/productSelect/hooks/useToken.js +34 -0
  60. package/es/plus/productSelect/index.d.ts +31 -0
  61. package/es/plus/productSelect/index.js +270 -0
  62. package/es/plus/productSelect/index.less +56 -0
  63. package/es/plus/productSelect/locales.d.ts +18 -0
  64. package/es/plus/productSelect/locales.js +17 -0
  65. package/es/plus/productSelect/theme/token.d.ts +17 -0
  66. package/es/plus/productSelect/theme/token.js +19 -0
  67. package/es/plus/productSelect/utils.d.ts +39 -0
  68. package/es/plus/productSelect/utils.js +162 -0
  69. package/es/plus/saasCreateOrganization/components/Header.d.ts +3 -0
  70. package/es/plus/saasCreateOrganization/components/Header.js +62 -0
  71. package/es/plus/saasCreateOrganization/index.d.ts +4 -0
  72. package/es/plus/saasCreateOrganization/index.js +15 -0
  73. package/es/plus/saasCreateOrganization/index.less +55 -0
  74. package/es/plus/saasCreateOrganization/locales.d.ts +15 -0
  75. package/es/plus/saasCreateOrganization/locales.js +14 -0
  76. package/es/plus/saasCreateOrganization/types.d.ts +69 -0
  77. package/es/plus/saasCreateOrganization/types.js +1 -0
  78. package/es/plus/saasLogin/index.d.ts +5 -0
  79. package/es/plus/saasLogin/index.js +165 -0
  80. package/es/plus/saasLogin/index.less +136 -0
  81. package/es/plus/saasLogin/locales.d.ts +51 -0
  82. package/es/plus/saasLogin/locales.js +50 -0
  83. package/es/plus/saasLogin/types.d.ts +62 -0
  84. package/es/plus/saasLogin/types.js +1 -0
  85. package/es/plus/saasLogin/utils.d.ts +35 -0
  86. package/es/plus/saasLogin/utils.js +31 -0
  87. package/es/plus/saasRegister/components/EntryEmail.d.ts +9 -0
  88. package/es/plus/saasRegister/components/EntryEmail.js +92 -0
  89. package/es/plus/saasRegister/components/EntryInfo.d.ts +9 -0
  90. package/es/plus/saasRegister/components/EntryInfo.js +145 -0
  91. package/es/plus/saasRegister/components/GoLogin.d.ts +4 -0
  92. package/es/plus/saasRegister/components/GoLogin.js +27 -0
  93. package/es/plus/saasRegister/components/Header.d.ts +3 -0
  94. package/es/plus/saasRegister/components/Header.js +62 -0
  95. package/es/plus/saasRegister/components/VerifyError.d.ts +8 -0
  96. package/es/plus/saasRegister/components/VerifyError.js +68 -0
  97. package/es/plus/saasRegister/components/VerifyingLink.d.ts +5 -0
  98. package/es/plus/saasRegister/components/VerifyingLink.js +16 -0
  99. package/es/plus/saasRegister/components/VertifyEmail.d.ts +7 -0
  100. package/es/plus/saasRegister/components/VertifyEmail.js +121 -0
  101. package/es/plus/saasRegister/index.d.ts +5 -0
  102. package/es/plus/saasRegister/index.js +246 -0
  103. package/es/plus/saasRegister/index.less +218 -0
  104. package/es/plus/saasRegister/locales.d.ts +117 -0
  105. package/es/plus/saasRegister/locales.js +116 -0
  106. package/es/plus/saasRegister/types.d.ts +114 -0
  107. package/es/plus/saasRegister/types.js +24 -0
  108. package/lib/components/appointmentBooking/components/Content/index.js +1 -1
  109. package/lib/components/appointmentBooking/components/Content/index.less +3 -3
  110. package/lib/components/appointmentBooking/components/Services/index.js +2 -2
  111. package/lib/components/appointmentBooking/index.js +6 -1
  112. package/lib/components/booking/info2/service/addTimeModal/index.js +0 -1
  113. package/lib/components/booking/utils.d.ts +2 -2
  114. package/lib/components/eftposPay/hooks.d.ts +1 -1
  115. package/lib/components/eftposPay/store/index.d.ts +2 -2
  116. package/lib/components/eventBooking/index.js +6 -1
  117. package/lib/components/ticketBooking/components/addServiceVariant/addService.js +3 -3
  118. package/lib/hooks/useWindowSize.js +6 -1
  119. package/lib/index.d.ts +3 -0
  120. package/lib/index.js +9 -0
  121. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
  122. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.js +62 -0
  123. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
  124. package/lib/plus/productSelect/CategoryTabs/index.d.ts +18 -0
  125. package/lib/plus/productSelect/CategoryTabs/index.js +183 -0
  126. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
  127. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.js +58 -0
  128. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
  129. package/lib/plus/productSelect/ProductCard/index.d.ts +45 -0
  130. package/lib/plus/productSelect/ProductCard/index.js +184 -0
  131. package/lib/plus/productSelect/ProductCard/index.less +253 -0
  132. package/lib/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
  133. package/lib/plus/productSelect/ProductList/gridComponents.js +148 -0
  134. package/lib/plus/productSelect/ProductList/index.d.ts +22 -0
  135. package/lib/plus/productSelect/ProductList/index.js +86 -0
  136. package/lib/plus/productSelect/ProductList/index.less +0 -0
  137. package/lib/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
  138. package/lib/plus/productSelect/components/IntersectionObserver.js +269 -0
  139. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
  140. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.js +393 -0
  141. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
  142. package/lib/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
  143. package/lib/plus/productSelect/components/TabsStructure/hooks.js +209 -0
  144. package/lib/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
  145. package/lib/plus/productSelect/components/TabsStructure/index.js +92 -0
  146. package/lib/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
  147. package/lib/plus/productSelect/components/TabsStructure/styles.js +122 -0
  148. package/lib/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
  149. package/lib/plus/productSelect/components/TabsStructure/types.js +17 -0
  150. package/lib/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
  151. package/lib/plus/productSelect/components/TabsStructure/utils.js +72 -0
  152. package/lib/plus/productSelect/components/pisellPriceText/index.d.ts +12 -0
  153. package/lib/plus/productSelect/components/pisellPriceText/index.js +73 -0
  154. package/lib/plus/productSelect/components/pisellPriceText/index.less +4 -0
  155. package/lib/plus/productSelect/hooks/useToken.d.ts +18 -0
  156. package/lib/plus/productSelect/hooks/useToken.js +50 -0
  157. package/lib/plus/productSelect/index.d.ts +31 -0
  158. package/lib/plus/productSelect/index.js +299 -0
  159. package/lib/plus/productSelect/index.less +56 -0
  160. package/lib/plus/productSelect/locales.d.ts +18 -0
  161. package/lib/plus/productSelect/locales.js +41 -0
  162. package/lib/plus/productSelect/theme/token.d.ts +17 -0
  163. package/lib/plus/productSelect/theme/token.js +47 -0
  164. package/lib/plus/productSelect/utils.d.ts +39 -0
  165. package/lib/plus/productSelect/utils.js +138 -0
  166. package/lib/plus/saasCreateOrganization/components/Header.d.ts +3 -0
  167. package/lib/plus/saasCreateOrganization/components/Header.js +99 -0
  168. package/lib/plus/saasCreateOrganization/index.d.ts +4 -0
  169. package/lib/plus/saasCreateOrganization/index.js +47 -0
  170. package/lib/plus/saasCreateOrganization/index.less +55 -0
  171. package/lib/plus/saasCreateOrganization/locales.d.ts +15 -0
  172. package/lib/plus/saasCreateOrganization/locales.js +38 -0
  173. package/lib/plus/saasCreateOrganization/types.d.ts +69 -0
  174. package/lib/plus/saasCreateOrganization/types.js +17 -0
  175. package/lib/plus/saasLogin/index.d.ts +5 -0
  176. package/lib/plus/saasLogin/index.js +171 -0
  177. package/lib/plus/saasLogin/index.less +136 -0
  178. package/lib/plus/saasLogin/locales.d.ts +51 -0
  179. package/lib/plus/saasLogin/locales.js +74 -0
  180. package/lib/plus/saasLogin/types.d.ts +62 -0
  181. package/lib/plus/saasLogin/types.js +17 -0
  182. package/lib/plus/saasLogin/utils.d.ts +35 -0
  183. package/lib/plus/saasLogin/utils.js +50 -0
  184. package/lib/plus/saasRegister/components/EntryEmail.d.ts +9 -0
  185. package/lib/plus/saasRegister/components/EntryEmail.js +92 -0
  186. package/lib/plus/saasRegister/components/EntryInfo.d.ts +9 -0
  187. package/lib/plus/saasRegister/components/EntryInfo.js +128 -0
  188. package/lib/plus/saasRegister/components/GoLogin.d.ts +4 -0
  189. package/lib/plus/saasRegister/components/GoLogin.js +58 -0
  190. package/lib/plus/saasRegister/components/Header.d.ts +3 -0
  191. package/lib/plus/saasRegister/components/Header.js +99 -0
  192. package/lib/plus/saasRegister/components/VerifyError.d.ts +8 -0
  193. package/lib/plus/saasRegister/components/VerifyError.js +123 -0
  194. package/lib/plus/saasRegister/components/VerifyingLink.d.ts +5 -0
  195. package/lib/plus/saasRegister/components/VerifyingLink.js +44 -0
  196. package/lib/plus/saasRegister/components/VertifyEmail.d.ts +7 -0
  197. package/lib/plus/saasRegister/components/VertifyEmail.js +110 -0
  198. package/lib/plus/saasRegister/index.d.ts +5 -0
  199. package/lib/plus/saasRegister/index.js +205 -0
  200. package/lib/plus/saasRegister/index.less +218 -0
  201. package/lib/plus/saasRegister/locales.d.ts +117 -0
  202. package/lib/plus/saasRegister/locales.js +140 -0
  203. package/lib/plus/saasRegister/types.d.ts +114 -0
  204. package/lib/plus/saasRegister/types.js +54 -0
  205. package/lowcode/saas-create-organization/meta.ts +214 -0
  206. package/lowcode/saas-create-organization/snippets.ts +25 -0
  207. package/lowcode/saas-login/meta.ts +370 -0
  208. package/lowcode/saas-login/snippets.ts +38 -0
  209. package/lowcode/saas-register/meta.ts +386 -0
  210. package/lowcode/saas-register/snippets.ts +31 -0
  211. package/package.json +2 -2
@@ -0,0 +1,224 @@
1
+ // ===== Mixins =====
2
+ .pisell-tabstruct-focus-ring() {
3
+ outline: 2px solid var(--ps-color-primary, #7f56d9);
4
+ outline-offset: 2px;
5
+ }
6
+
7
+ .pisell-tabstruct-disabled() {
8
+ opacity: 0.6;
9
+ cursor: not-allowed;
10
+ pointer-events: none;
11
+ }
12
+
13
+ .pisell-tabstruct-smooth-scroll() {
14
+ scroll-behavior: smooth;
15
+ -webkit-overflow-scrolling: touch;
16
+ }
17
+
18
+ .pisell-tabstruct-hide-scrollbar() {
19
+ scrollbar-width: none;
20
+ /* Firefox */
21
+ -ms-overflow-style: none;
22
+ /* IE and Edge */
23
+
24
+ &::-webkit-scrollbar {
25
+ display: none;
26
+ /* Chrome, Safari, Opera */
27
+ }
28
+ }
29
+
30
+ // ===== Tab Wrapper =====
31
+ .pisell-tabstruct-wrapper {
32
+ position: relative;
33
+ display: flex;
34
+ align-items: center;
35
+ inline-size: 100%;
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ // ===== Tab List =====
40
+ .pisell-tabstruct-list {
41
+ padding: 0;
42
+ margin: 0;
43
+ display: inline-flex;
44
+ align-items: center;
45
+ list-style: none;
46
+ gap: 8px;
47
+ border-radius: 20px;
48
+ }
49
+
50
+ // ===== Tab Item =====
51
+ .pisell-tabstruct-item {
52
+ position: relative;
53
+ display: inline-flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ padding: 0 16px;
57
+ height: 40px;
58
+ border: none;
59
+ background: var(--ps-tab-item-bg, #fff);
60
+ color: #1b1b1b;
61
+ font-size: 14px;
62
+ font-weight: 600;
63
+ line-height: 1.4;
64
+ text-decoration: none;
65
+ cursor: pointer;
66
+ transition: all 0.2s ease-in-out;
67
+ white-space: nowrap;
68
+ user-select: none;
69
+ // 基础样式采用原pill样式
70
+ border-radius: 20px;
71
+
72
+ // Focus state
73
+ &:focus-visible {
74
+ .pisell-tabstruct-focus-ring();
75
+ }
76
+
77
+ &--selected {
78
+ color: #ffffff;
79
+ border-radius: 20px;
80
+ background-color: var(--ps-color-primary, #7f56d9);;
81
+ }
82
+
83
+ &[aria-selected='true'] {
84
+ color: #ffffff;
85
+ border-radius: 20px;
86
+ background-color: var(--ps-color-primary, #7f56d9);;
87
+ }
88
+
89
+ // Disabled state
90
+ &--disabled {
91
+ .pisell-tabstruct-disabled();
92
+ color: #adb5bd;
93
+ }
94
+ }
95
+
96
+ // ===== Tab Rail =====
97
+ .pisell-tabstruct-rail {
98
+ position: relative;
99
+ display: inline-flex;
100
+ inline-size: 100%;
101
+ overflow: auto;
102
+ scroll-snap-type: x mandatory;
103
+ .pisell-tabstruct-smooth-scroll();
104
+ .pisell-tabstruct-hide-scrollbar();
105
+ }
106
+
107
+ // ===== Selection Indicator =====
108
+ .pisell-tabstruct-selection {
109
+ position: absolute;
110
+ z-index: 10;
111
+ transition: all 0.2s ease-in-out;
112
+ pointer-events: none;
113
+ z-index: 0;
114
+ block-size: 100%;
115
+ background-color: var(--ps-color-primary, #7f56d9);
116
+ border-radius: 20px;
117
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
118
+
119
+ &--positioned {
120
+ inset-block-start: auto;
121
+ inset-block-end: 0;
122
+ inset-inline-start: 0;
123
+ }
124
+
125
+ &::before {
126
+ content: '';
127
+ position: absolute;
128
+ inset: 2px;
129
+ border-radius: calc(20px - 2px);
130
+ }
131
+
132
+ &::after {
133
+ content: '';
134
+ position: absolute;
135
+ inset-block-start: 1px;
136
+ inset-inline-start: 1px;
137
+ inset-inline-end: 1px;
138
+ block-size: 50%;
139
+ background-color: var(--ps-color-primary, #7f56d9);
140
+ border-radius: 20px 20px 0 0;
141
+ }
142
+
143
+ &--focused {
144
+ .pisell-tabstruct-focus-ring();
145
+ }
146
+ }
147
+
148
+ // ===== Scroll Shadow =====
149
+ .pisell-tabstruct-shadow {
150
+ position: absolute;
151
+ z-index: 5;
152
+ pointer-events: none;
153
+ opacity: 0;
154
+ transition: opacity all 0.2s ease-in-out;
155
+
156
+ &--visible {
157
+ opacity: 1;
158
+ }
159
+
160
+ &--start {
161
+ inset-block-start: 0;
162
+ inset-block-end: 0;
163
+ inset-inline-start: 0;
164
+ inline-size: 20px;
165
+ background: linear-gradient(90deg, rgba(0, 0, 0, 0.1) 0%, transparent 100%);
166
+ }
167
+
168
+ &--end {
169
+ inset-block-start: 0;
170
+ inset-block-end: 0;
171
+ inset-inline-end: 0;
172
+ inline-size: 20px;
173
+ background: linear-gradient(
174
+ 270deg,
175
+ rgba(0, 0, 0, 0.1) 0%,
176
+ transparent 100%
177
+ );
178
+ }
179
+ }
180
+
181
+ // ===== Chevron Controls =====
182
+ .pisell-tabstruct-chevron-controls {
183
+ display: flex;
184
+ align-items: center;
185
+ gap: 8px;
186
+ z-index: 15;
187
+ }
188
+
189
+ .pisell-tabstruct-chevron-button {
190
+ display: inline-flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ width: 24px;
194
+ height: 24px;
195
+ padding: 0;
196
+ border: 1px solid transparent;
197
+ border-radius: 12px;
198
+ background-color: #f8f9fa;
199
+ color: #262626;
200
+ cursor: pointer;
201
+ transition: all 0.2s ease-in-out;
202
+ flex-shrink: 0;
203
+
204
+ &:hover:not(.pisell-tabstruct-chevron-button--disabled) {
205
+ background-color: #e9ecef;
206
+ color: #495057;
207
+ }
208
+
209
+ &:focus-visible {
210
+ .pisell-tabstruct-focus-ring();
211
+ }
212
+
213
+ &--disabled {
214
+ .pisell-tabstruct-disabled();
215
+ color: #adb5bd;
216
+ background-color: #f2f4f7;
217
+ }
218
+
219
+ svg {
220
+ font-size: 20px;
221
+ font-weight: bold;
222
+ flex-shrink: 0;
223
+ }
224
+ }
@@ -0,0 +1,22 @@
1
+ /// <reference types="react" />
2
+ interface UseSelectionIndicatorReturn {
3
+ selectionIndicatorProps: {
4
+ focusRingClasses: string;
5
+ isFocusVisible: boolean;
6
+ style: React.CSSProperties;
7
+ };
8
+ listContainerProps: {
9
+ onFocus: (event: React.FocusEvent) => void;
10
+ onBlur: () => void;
11
+ onMouseDown: () => void;
12
+ };
13
+ }
14
+ /**
15
+ * Hook for managing selection indicator position with enhanced features
16
+ * @param containerRef - Ref to the tab container
17
+ * @param selectedTabId - ID of the currently selected tab (optional)
18
+ * @param transition - Custom transition string (optional)
19
+ * @returns Selection indicator props and list container props
20
+ */
21
+ export declare function useSelectionIndicator(containerRef: React.RefObject<HTMLElement>, selectedTabId?: string, transition?: string): UseSelectionIndicatorReturn;
22
+ export {};
@@ -0,0 +1,209 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/plus/productSelect/components/TabsStructure/hooks.ts
20
+ var hooks_exports = {};
21
+ __export(hooks_exports, {
22
+ useSelectionIndicator: () => useSelectionIndicator
23
+ });
24
+ module.exports = __toCommonJS(hooks_exports);
25
+ var import_react = require("react");
26
+ var import_utils = require("./utils");
27
+ function useSelectionIndicator(containerRef, selectedTabId, transition) {
28
+ const [indicatorStyle, setIndicatorStyle] = (0, import_react.useState)({
29
+ width: 0,
30
+ transform: "translateX(0)",
31
+ transition: "none"
32
+ });
33
+ const [selectedTabRef, setSelectedTabRef] = (0, import_react.useState)();
34
+ const [isFocusVisible, setIsFocusVisible] = (0, import_react.useState)(false);
35
+ const [focusRingClasses, setFocusRingClasses] = (0, import_react.useState)("");
36
+ const setSelectedTab = (0, import_react.useCallback)((element) => {
37
+ setSelectedTabRef(
38
+ (prevRef) => (prevRef == null ? void 0 : prevRef.current) === element ? prevRef : { current: element }
39
+ );
40
+ }, []);
41
+ const findSelectedTabByAttribute = (0, import_react.useCallback)(() => {
42
+ if (!containerRef.current) return null;
43
+ const selectedTab = containerRef.current.querySelector('[role="tab"][aria-selected="true"]');
44
+ if (selectedTab) {
45
+ setSelectedTab(selectedTab);
46
+ }
47
+ return selectedTab;
48
+ }, [containerRef, setSelectedTab]);
49
+ const findSelectedTabById = (0, import_react.useCallback)(() => {
50
+ if (!selectedTabId || !containerRef.current) return null;
51
+ const selectedTab = containerRef.current.querySelector(`[id="${selectedTabId}"]`);
52
+ return selectedTab;
53
+ }, [containerRef, selectedTabId]);
54
+ const getTransition = (0, import_react.useCallback)((customTransition) => {
55
+ return customTransition || "transform 300ms, width 100ms";
56
+ }, []);
57
+ const getDirection = (0, import_react.useCallback)(() => {
58
+ if (!containerRef.current) return "ltr";
59
+ return window.getComputedStyle(containerRef.current).direction || "ltr";
60
+ }, [containerRef]);
61
+ const updateIndicatorPosition = (0, import_react.useCallback)(() => {
62
+ try {
63
+ const selectedTab = findSelectedTabByAttribute() || findSelectedTabById();
64
+ if (!selectedTab || !containerRef.current) {
65
+ setIndicatorStyle((prev) => ({
66
+ ...prev,
67
+ width: 0,
68
+ transform: "translateX(0)"
69
+ }));
70
+ return;
71
+ }
72
+ const container = containerRef.current;
73
+ const offsetParent = selectedTab.offsetParent;
74
+ if (!offsetParent) {
75
+ setIndicatorStyle((prev) => ({
76
+ ...prev,
77
+ width: 0,
78
+ transform: "translateX(0)"
79
+ }));
80
+ return;
81
+ }
82
+ if (!selectedTab.isConnected) {
83
+ console.warn("useSelectionIndicator: Selected tab is no longer connected to DOM");
84
+ return;
85
+ }
86
+ const direction = getDirection();
87
+ const width = selectedTab.offsetWidth;
88
+ if (width <= 0) {
89
+ setIndicatorStyle((prev) => ({
90
+ ...prev,
91
+ width: 0,
92
+ transform: "translateX(0)"
93
+ }));
94
+ return;
95
+ }
96
+ let left;
97
+ if (direction === "rtl") {
98
+ left = -1 * (offsetParent.clientWidth - selectedTab.offsetLeft - selectedTab.offsetWidth);
99
+ } else {
100
+ left = selectedTab.offsetLeft;
101
+ }
102
+ const transitionValue = getTransition(transition);
103
+ setIndicatorStyle({
104
+ width: `${width}px`,
105
+ transform: `translateX(${left}px)`,
106
+ transition: transitionValue
107
+ });
108
+ } catch (error) {
109
+ console.warn("useSelectionIndicator: Error updating indicator position:", error);
110
+ setIndicatorStyle((prev) => ({
111
+ ...prev,
112
+ width: 0,
113
+ transform: "translateX(0)"
114
+ }));
115
+ }
116
+ }, [containerRef, selectedTabId, transition, findSelectedTabByAttribute, findSelectedTabById, getDirection, getTransition]);
117
+ const debouncedUpdate = (0, import_react.useMemo)(
118
+ () => (0, import_utils.debounce)(updateIndicatorPosition, 50),
119
+ [updateIndicatorPosition]
120
+ );
121
+ const handleFocusIn = (0, import_react.useCallback)((event) => {
122
+ setIsFocusVisible(event.target instanceof HTMLElement && event.target.matches(":focus-visible"));
123
+ setFocusRingClasses(event.target instanceof HTMLElement && event.target.matches(":focus-visible") ? "focus-visible" : "");
124
+ }, []);
125
+ const handleFocusOut = (0, import_react.useCallback)(() => {
126
+ setIsFocusVisible(false);
127
+ setFocusRingClasses("");
128
+ }, []);
129
+ const handleMouseDown = (0, import_react.useCallback)(() => {
130
+ setIsFocusVisible(false);
131
+ setFocusRingClasses("");
132
+ }, []);
133
+ (0, import_react.useEffect)(() => {
134
+ debouncedUpdate();
135
+ }, [debouncedUpdate, selectedTabId]);
136
+ (0, import_react.useEffect)(() => {
137
+ const container = containerRef.current;
138
+ if (!container) return;
139
+ let resizeObserver = null;
140
+ try {
141
+ resizeObserver = new ResizeObserver((entries) => {
142
+ try {
143
+ const validEntries = entries.filter(
144
+ (entry) => entry.target && entry.target.isConnected
145
+ );
146
+ if (validEntries.length > 0) {
147
+ debouncedUpdate();
148
+ }
149
+ } catch (error) {
150
+ console.warn("useSelectionIndicator: Error in ResizeObserver callback:", error);
151
+ }
152
+ });
153
+ resizeObserver.observe(container);
154
+ if (selectedTabRef == null ? void 0 : selectedTabRef.current) {
155
+ resizeObserver.observe(selectedTabRef.current);
156
+ }
157
+ } catch (error) {
158
+ console.warn("useSelectionIndicator: Failed to create ResizeObserver:", error);
159
+ }
160
+ return () => {
161
+ if (resizeObserver) {
162
+ try {
163
+ resizeObserver.disconnect();
164
+ } catch (error) {
165
+ console.warn("useSelectionIndicator: Error disconnecting ResizeObserver:", error);
166
+ }
167
+ }
168
+ };
169
+ }, [containerRef, selectedTabRef, debouncedUpdate]);
170
+ (0, import_react.useEffect)(() => {
171
+ const container = containerRef.current;
172
+ if (!container) return;
173
+ const nativeFocusIn = (event) => {
174
+ const syntheticEvent = {
175
+ ...event,
176
+ currentTarget: event.currentTarget,
177
+ target: event.target
178
+ };
179
+ handleFocusIn(syntheticEvent);
180
+ };
181
+ container.addEventListener("focusin", nativeFocusIn);
182
+ container.addEventListener("focusout", handleFocusOut);
183
+ container.addEventListener("mousedown", handleMouseDown);
184
+ return () => {
185
+ container.removeEventListener("focusin", nativeFocusIn);
186
+ container.removeEventListener("focusout", handleFocusOut);
187
+ container.removeEventListener("mousedown", handleMouseDown);
188
+ };
189
+ }, [containerRef, handleFocusIn, handleFocusOut, handleMouseDown]);
190
+ return {
191
+ selectionIndicatorProps: {
192
+ focusRingClasses,
193
+ isFocusVisible,
194
+ style: {
195
+ ...indicatorStyle,
196
+ transition: getTransition(transition)
197
+ }
198
+ },
199
+ listContainerProps: {
200
+ onFocus: handleFocusIn,
201
+ onBlur: handleFocusOut,
202
+ onMouseDown: handleMouseDown
203
+ }
204
+ };
205
+ }
206
+ // Annotate the CommonJS export names for ESM import in node:
207
+ 0 && (module.exports = {
208
+ useSelectionIndicator
209
+ });
@@ -0,0 +1,5 @@
1
+ export { default as TabsStructure, TabListContainer, TabItem, Rail, SelectionIndicator, ScrollShadow, ChevronControls, ChevronButton } from './TabsStructure';
2
+ export type { TabsStructureProps, TabListContainerProps, TabItemProps, RailProps, SelectionIndicatorProps, ScrollShadowProps, ChevronControlsProps, ChevronButtonProps, TabContextValue, ScrollLocation, TabWrapperClasses, TabListClasses, TabItemClasses, RailClasses, SelectionClasses, ShadowClasses, ChevronClasses, } from './types';
3
+ export { tabWrapperClasses, tabListClasses, tabItemClasses, railClasses, selectionClasses, shadowClasses, chevronClasses, chevronButtonClasses, tabWrapperClassNames, tabListClassNames, tabItemClassNames, railClassNames, selectionClassNames, shadowClassNames, chevronClassNames } from './styles';
4
+ export { debounce, mergeRefs } from './utils';
5
+ export { useSelectionIndicator, } from './hooks';
@@ -0,0 +1,92 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/plus/productSelect/components/TabsStructure/index.ts
30
+ var TabsStructure_exports = {};
31
+ __export(TabsStructure_exports, {
32
+ ChevronButton: () => import_TabsStructure.ChevronButton,
33
+ ChevronControls: () => import_TabsStructure.ChevronControls,
34
+ Rail: () => import_TabsStructure.Rail,
35
+ ScrollShadow: () => import_TabsStructure.ScrollShadow,
36
+ SelectionIndicator: () => import_TabsStructure.SelectionIndicator,
37
+ TabItem: () => import_TabsStructure.TabItem,
38
+ TabListContainer: () => import_TabsStructure.TabListContainer,
39
+ TabsStructure: () => import_TabsStructure.default,
40
+ chevronButtonClasses: () => import_styles.chevronButtonClasses,
41
+ chevronClassNames: () => import_styles.chevronClassNames,
42
+ chevronClasses: () => import_styles.chevronClasses,
43
+ debounce: () => import_utils.debounce,
44
+ mergeRefs: () => import_utils.mergeRefs,
45
+ railClassNames: () => import_styles.railClassNames,
46
+ railClasses: () => import_styles.railClasses,
47
+ selectionClassNames: () => import_styles.selectionClassNames,
48
+ selectionClasses: () => import_styles.selectionClasses,
49
+ shadowClassNames: () => import_styles.shadowClassNames,
50
+ shadowClasses: () => import_styles.shadowClasses,
51
+ tabItemClassNames: () => import_styles.tabItemClassNames,
52
+ tabItemClasses: () => import_styles.tabItemClasses,
53
+ tabListClassNames: () => import_styles.tabListClassNames,
54
+ tabListClasses: () => import_styles.tabListClasses,
55
+ tabWrapperClassNames: () => import_styles.tabWrapperClassNames,
56
+ tabWrapperClasses: () => import_styles.tabWrapperClasses,
57
+ useSelectionIndicator: () => import_hooks.useSelectionIndicator
58
+ });
59
+ module.exports = __toCommonJS(TabsStructure_exports);
60
+ var import_TabsStructure = __toESM(require("./TabsStructure"));
61
+ var import_styles = require("./styles");
62
+ var import_utils = require("./utils");
63
+ var import_hooks = require("./hooks");
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {
66
+ ChevronButton,
67
+ ChevronControls,
68
+ Rail,
69
+ ScrollShadow,
70
+ SelectionIndicator,
71
+ TabItem,
72
+ TabListContainer,
73
+ TabsStructure,
74
+ chevronButtonClasses,
75
+ chevronClassNames,
76
+ chevronClasses,
77
+ debounce,
78
+ mergeRefs,
79
+ railClassNames,
80
+ railClasses,
81
+ selectionClassNames,
82
+ selectionClasses,
83
+ shadowClassNames,
84
+ shadowClasses,
85
+ tabItemClassNames,
86
+ tabItemClasses,
87
+ tabListClassNames,
88
+ tabListClasses,
89
+ tabWrapperClassNames,
90
+ tabWrapperClasses,
91
+ useSelectionIndicator
92
+ });
@@ -0,0 +1,47 @@
1
+ /**
2
+ * CSS Classes mapping for TabComponent
3
+ */
4
+ import { TabWrapperClasses, TabListClasses, TabItemClasses, RailClasses, SelectionClasses, ShadowClasses, ChevronClasses } from './types';
5
+ export declare const tabWrapperClasses: TabWrapperClasses;
6
+ export declare const tabListClasses: TabListClasses;
7
+ export declare const tabItemClasses: TabItemClasses;
8
+ export declare const railClasses: RailClasses;
9
+ export declare const selectionClasses: SelectionClasses;
10
+ export declare const shadowClasses: ShadowClasses;
11
+ export declare const chevronClasses: ChevronClasses;
12
+ export declare const chevronButtonClasses: {
13
+ button: string;
14
+ disabled: string;
15
+ prev: string;
16
+ next: string;
17
+ };
18
+ export declare const tabWrapperClassNames: {
19
+ wrapper: string;
20
+ };
21
+ export declare const tabListClassNames: {
22
+ list: string;
23
+ };
24
+ export declare const tabItemClassNames: {
25
+ item: string;
26
+ selected: string;
27
+ disabled: string;
28
+ };
29
+ export declare const railClassNames: {
30
+ rail: string;
31
+ };
32
+ export declare const selectionClassNames: {
33
+ selection: string;
34
+ position: string;
35
+ focused: string;
36
+ };
37
+ export declare const shadowClassNames: {
38
+ shadow: string;
39
+ isVisible: string;
40
+ locationStart: string;
41
+ locationEnd: string;
42
+ };
43
+ export declare const chevronClassNames: {
44
+ controls: string;
45
+ button: string;
46
+ disabled: string;
47
+ };