@touchvue/ui 1.0.0-beta.46 → 1.0.0-beta.48

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 (46) hide show
  1. package/es/components/float/index.d.ts +15 -0
  2. package/es/components/float/src/Float.vue.d.ts +9 -0
  3. package/es/components/float/src/float.d.ts +4 -0
  4. package/es/components/grid/src/grid-item.vue.d.ts +2 -9
  5. package/es/components/scroll/index.d.ts +3 -3
  6. package/es/components/scroll/src/Scroll.vue.d.ts +1 -1
  7. package/es/components/select/src/select.d.ts +14 -0
  8. package/es/components/select/src/select.vue.d.ts +18 -0
  9. package/es/packages/components/float/src/Float.vue2.mjs +141 -122
  10. package/es/packages/components/float/src/Float.vue2.mjs.map +1 -1
  11. package/es/packages/components/float/src/float.mjs +2 -1
  12. package/es/packages/components/float/src/float.mjs.map +1 -1
  13. package/es/packages/components/grid/src/grid-item.vue2.mjs +9 -52
  14. package/es/packages/components/grid/src/grid-item.vue2.mjs.map +1 -1
  15. package/es/packages/components/select/src/hooks/use-select-class-style.mjs +3 -0
  16. package/es/packages/components/select/src/hooks/use-select-class-style.mjs.map +1 -1
  17. package/es/packages/components/select/src/select.mjs +14 -0
  18. package/es/packages/components/select/src/select.mjs.map +1 -1
  19. package/es/packages/components/select/src/select.vue2.mjs +28 -8
  20. package/es/packages/components/select/src/select.vue2.mjs.map +1 -1
  21. package/es/packages/hooks/useDevice.mjs.map +1 -1
  22. package/lib/components/float/index.d.ts +15 -0
  23. package/lib/components/float/src/Float.vue.d.ts +9 -0
  24. package/lib/components/float/src/float.d.ts +4 -0
  25. package/lib/components/grid/src/grid-item.vue.d.ts +2 -9
  26. package/lib/components/scroll/index.d.ts +3 -3
  27. package/lib/components/scroll/src/Scroll.vue.d.ts +1 -1
  28. package/lib/components/select/src/select.d.ts +14 -0
  29. package/lib/components/select/src/select.vue.d.ts +18 -0
  30. package/lib/packages/components/float/src/Float.vue2.js +140 -121
  31. package/lib/packages/components/float/src/Float.vue2.js.map +1 -1
  32. package/lib/packages/components/float/src/float.js +2 -1
  33. package/lib/packages/components/float/src/float.js.map +1 -1
  34. package/lib/packages/components/grid/src/grid-item.vue2.js +8 -51
  35. package/lib/packages/components/grid/src/grid-item.vue2.js.map +1 -1
  36. package/lib/packages/components/select/src/hooks/use-select-class-style.js +3 -0
  37. package/lib/packages/components/select/src/hooks/use-select-class-style.js.map +1 -1
  38. package/lib/packages/components/select/src/select.js +14 -0
  39. package/lib/packages/components/select/src/select.js.map +1 -1
  40. package/lib/packages/components/select/src/select.vue2.js +27 -7
  41. package/lib/packages/components/select/src/select.vue2.js.map +1 -1
  42. package/lib/packages/hooks/useDevice.js.map +1 -1
  43. package/package.json +1 -1
  44. package/theme/components/index.css +41 -3
  45. package/theme/index.css +41 -3
  46. package/theme/skin/default.css +41 -3
@@ -1 +1 @@
1
- {"version":3,"file":"useDevice.js","sources":["../../../../packages/hooks/useDevice.ts"],"sourcesContent":["import { ref, computed, onMounted, onUnmounted } from 'vue';\nimport { getMedia } from '@touchvue/utils';\n\n/**\n * 设备类型\n */\nexport type DeviceType = 'pc' | 'pad' | 'phone';\n\n/**\n * 全局设备检测管理器\n * 使用单例模式避免重复注册resize事件\n */\nclass DeviceManager {\n private static instance: DeviceManager;\n private deviceType = ref<DeviceType>(getMedia());\n private listeners = new Set<() => void>();\n private resizeHandler: (() => void) | null = null;\n\n private constructor() {\n this.initResizeListener();\n }\n\n static getInstance(): DeviceManager {\n if (!DeviceManager.instance) {\n DeviceManager.instance = new DeviceManager();\n }\n return DeviceManager.instance;\n }\n\n private initResizeListener() {\n if (typeof window !== 'undefined') {\n this.resizeHandler = () => {\n const newDeviceType = getMedia();\n if (this.deviceType.value !== newDeviceType) {\n this.deviceType.value = newDeviceType;\n // 通知所有监听器\n this.listeners.forEach(listener => listener());\n }\n };\n window.addEventListener('resize', this.resizeHandler);\n }\n }\n\n getDeviceType() {\n return this.deviceType;\n }\n\n addListener(listener: () => void) {\n this.listeners.add(listener);\n }\n\n removeListener(listener: () => void) {\n this.listeners.delete(listener);\n\n // 如果没有监听器了,移除resize事件\n if (this.listeners.size === 0 && this.resizeHandler && typeof window !== 'undefined') {\n window.removeEventListener('resize', this.resizeHandler);\n this.resizeHandler = null;\n }\n }\n\n destroy() {\n if (this.resizeHandler && typeof window !== 'undefined') {\n window.removeEventListener('resize', this.resizeHandler);\n }\n this.listeners.clear();\n this.resizeHandler = null;\n }\n}\n\n/**\n * 设备检测 Hook\n * 提供响应式的设备类型判断,替代 Vue2 中的 $phone、$pc、$pad\n * 使用单例模式避免重复注册resize事件监听器\n */\nexport function useDevice() {\n const manager = DeviceManager.getInstance();\n const deviceType = manager.getDeviceType();\n\n // 计算属性:是否为手机\n const isPhone = computed(() => deviceType.value === 'phone');\n\n // 计算属性:是否为平板\n const isPad = computed(() => deviceType.value === 'pad');\n\n // 计算属性:是否为PC\n const isPc = computed(() => deviceType.value === 'pc');\n\n // 计算属性:是否为移动设备(手机或平板)\n const isMobile = computed(() => deviceType.value === 'phone' || deviceType.value === 'pad');\n\n // 更新设备类型的回调\n const updateCallback = () => {\n // 这里不需要做任何事情,因为deviceType是响应式的\n // 当manager更新deviceType时,所有计算属性会自动更新\n };\n\n // 手动更新设备类型\n const updateDeviceType = () => {\n const newDeviceType = getMedia();\n if (deviceType.value !== newDeviceType) {\n // 直接更新manager中的deviceType\n (deviceType as any).value = newDeviceType;\n }\n };\n\n // 组件挂载时添加监听器\n onMounted(() => {\n manager.addListener(updateCallback);\n });\n\n // 组件卸载时移除监听器\n onUnmounted(() => {\n manager.removeListener(updateCallback);\n });\n\n return {\n // 设备类型(响应式)\n deviceType,\n\n // 响应式判断\n isPhone,\n isPad,\n isPc,\n isMobile,\n\n // 手动更新设备类型\n updateDeviceType,\n };\n}\n\n/**\n * 获取当前设备类型(非响应式)\n * @returns 设备类型字符串\n */\nexport function getDeviceType(): DeviceType {\n return getMedia();\n}\n\n/**\n * 判断是否为手机设备(非响应式)\n * @returns 是否为手机\n */\nexport function isPhoneDevice(): boolean {\n return getMedia() === 'phone';\n}\n\n/**\n * 判断是否为平板设备(非响应式)\n * @returns 是否为平板\n */\nexport function isPadDevice(): boolean {\n return getMedia() === 'pad';\n}\n\n/**\n * 判断是否为PC设备(非响应式)\n * @returns 是否为PC\n */\nexport function isPcDevice(): boolean {\n return getMedia() === 'pc';\n}\n\n/**\n * 判断是否为移动设备(非响应式)\n * @returns 是否为移动设备(手机或平板)\n */\nexport function isMobileDevice(): boolean {\n const device = getMedia();\n return device === 'phone' || device === 'pad';\n}\n"],"names":["ref","getMedia","computed","onMounted","onUnmounted"],"mappings":"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"}
1
+ {"version":3,"file":"useDevice.js","sources":["../../../../packages/hooks/useDevice.ts"],"sourcesContent":["import { ref, computed, onMounted, onUnmounted } from 'vue'\nimport { getMedia } from '@touchvue/utils'\n\n/**\n * 设备类型\n */\nexport type DeviceType = 'pc' | 'pad' | 'phone'\n\n/**\n * 全局设备检测管理器\n * 使用单例模式避免重复注册resize事件\n */\nclass DeviceManager {\n\tprivate static instance: DeviceManager\n\tprivate deviceType = ref<DeviceType>(getMedia())\n\tprivate listeners = new Set<() => void>()\n\tprivate resizeHandler: (() => void) | null = null\n\n\tprivate constructor() {\n\t\tthis.initResizeListener()\n\t}\n\n\tstatic getInstance(): DeviceManager {\n\t\tif (!DeviceManager.instance) {\n\t\t\tDeviceManager.instance = new DeviceManager()\n\t\t}\n\t\treturn DeviceManager.instance\n\t}\n\n\tprivate initResizeListener() {\n\t\tif (typeof window !== 'undefined') {\n\t\t\tthis.resizeHandler = () => {\n\t\t\t\tconst newDeviceType = getMedia()\n\t\t\t\tif (this.deviceType.value !== newDeviceType) {\n\t\t\t\t\tthis.deviceType.value = newDeviceType\n\t\t\t\t\t// 通知所有监听器\n\t\t\t\t\tthis.listeners.forEach(listener => listener())\n\t\t\t\t}\n\t\t\t}\n\t\t\twindow.addEventListener('resize', this.resizeHandler)\n\t\t}\n\t}\n\n\tgetDeviceType() {\n\t\treturn this.deviceType\n\t}\n\n\taddListener(listener: () => void) {\n\t\tthis.listeners.add(listener)\n\t}\n\n\tremoveListener(listener: () => void) {\n\t\tthis.listeners.delete(listener)\n\n\t\t// 如果没有监听器了,移除resize事件\n\t\tif (this.listeners.size === 0 && this.resizeHandler && typeof window !== 'undefined') {\n\t\t\twindow.removeEventListener('resize', this.resizeHandler)\n\t\t\tthis.resizeHandler = null\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.resizeHandler && typeof window !== 'undefined') {\n\t\t\twindow.removeEventListener('resize', this.resizeHandler)\n\t\t}\n\t\tthis.listeners.clear()\n\t\tthis.resizeHandler = null\n\t}\n}\n\n/**\n * 设备检测 Hook\n * 提供响应式的设备类型判断,替代 Vue2 中的 $phone、$pc、$pad\n * 使用单例模式避免重复注册resize事件监听器\n */\nexport function useDevice() {\n\tconst manager = DeviceManager.getInstance()\n\tconst deviceType = manager.getDeviceType()\n\n\t// 计算属性:是否为手机\n\tconst isPhone = computed(() => deviceType.value === 'phone')\n\n\t// 计算属性:是否为平板\n\tconst isPad = computed(() => deviceType.value === 'pad')\n\n\t// 计算属性:是否为PC\n\tconst isPc = computed(() => deviceType.value === 'pc')\n\n\t// 计算属性:是否为移动设备(手机或平板)\n\tconst isMobile = computed(() => deviceType.value === 'phone' || deviceType.value === 'pad')\n\n\t// 更新设备类型的回调\n\tconst updateCallback = () => {\n\t\t// 这里不需要做任何事情,因为deviceType是响应式的\n\t\t// 当manager更新deviceType时,所有计算属性会自动更新\n\t}\n\n\t// 手动更新设备类型\n\tconst updateDeviceType = () => {\n\t\tconst newDeviceType = getMedia()\n\t\tif (deviceType.value !== newDeviceType) {\n\t\t\t// 直接更新manager中的deviceType\n\t\t\t;(deviceType as any).value = newDeviceType\n\t\t}\n\t}\n\n\t// 组件挂载时添加监听器\n\tonMounted(() => {\n\t\tmanager.addListener(updateCallback)\n\t})\n\n\t// 组件卸载时移除监听器\n\tonUnmounted(() => {\n\t\tmanager.removeListener(updateCallback)\n\t})\n\n\treturn {\n\t\t// 设备类型(响应式)\n\t\tdeviceType,\n\n\t\t// 响应式判断\n\t\tisPhone,\n\t\tisPad,\n\t\tisPc,\n\t\tisMobile,\n\n\t\t// 手动更新设备类型\n\t\tupdateDeviceType\n\t}\n}\n\n/**\n * 获取当前设备类型(非响应式)\n * @returns 设备类型字符串\n */\nexport function getDeviceType(): DeviceType {\n\treturn getMedia()\n}\n\n/**\n * 判断是否为手机设备(非响应式)\n * @returns 是否为手机\n */\nexport function isPhoneDevice(): boolean {\n\treturn getMedia() === 'phone'\n}\n\n/**\n * 判断是否为平板设备(非响应式)\n * @returns 是否为平板\n */\nexport function isPadDevice(): boolean {\n\treturn getMedia() === 'pad'\n}\n\n/**\n * 判断是否为PC设备(非响应式)\n * @returns 是否为PC\n */\nexport function isPcDevice(): boolean {\n\treturn getMedia() === 'pc'\n}\n\n/**\n * 判断是否为移动设备(非响应式)\n * @returns 是否为移动设备(手机或平板)\n */\nexport function isMobileDevice(): boolean {\n\tconst device = getMedia()\n\treturn device === 'phone' || device === 'pad'\n}\n"],"names":["ref","getMedia","computed","onMounted","onUnmounted"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@touchvue/ui",
3
- "version": "1.0.0-beta.46",
3
+ "version": "1.0.0-beta.48",
4
4
  "description": "TouchVue UI Component Library",
5
5
  "main": "lib/index.js",
6
6
  "private": false,
@@ -737,6 +737,7 @@ html body .height-full {
737
737
  gap: var(--gap-y) var(--gap-x);
738
738
  padding: var(--padding);
739
739
  vertical-align: top;
740
+ box-sizing: border-box;
740
741
  }
741
742
  .to-grid > [flex] {
742
743
  flex: 1;
@@ -819,6 +820,10 @@ html body .height-full {
819
820
  .to-grid.is-col > *[merge="10"] {
820
821
  --merge: 10;
821
822
  }
823
+ .to-grid.is-col > .to-grid {
824
+ --item-col: var(--col);
825
+ width: calc((100% - (var(--item-col) - 1) * var(--gap-x)) / var(--item-col) * var(--merge) + (var(--merge) - 1) * var(--gap-x));
826
+ }
822
827
  .to-grid.col-avg {
823
828
  display: flex;
824
829
  }
@@ -866,10 +871,10 @@ html body .height-full {
866
871
  .to-grid.col-1 > *:last-child::after {
867
872
  display: none;
868
873
  }
869
- .to-grid.height-full {
870
- height: 100%;
874
+ .to-grid-item {
875
+ box-sizing: border-box;
871
876
  }
872
- .to-grid.height-full > .to-grid-item {
877
+ .to-grid.height-full:not(.dir-v) > .to-grid-item {
873
878
  height: 100%;
874
879
  }
875
880
  @font-face {
@@ -1926,6 +1931,12 @@ html body .height-full {
1926
1931
  --dot-color: var(--color-fg);
1927
1932
  --dot-radius: 50%;
1928
1933
  --rotate-offset: 0em;
1934
+ --hover-bg: #dedede;
1935
+ --hover-color: var(--color);
1936
+ --hover-border: var(--border);
1937
+ --active-bg: #ababab;
1938
+ --active-color: var(--color);
1939
+ --active-border: var(--border);
1929
1940
  }
1930
1941
  .to-tag {
1931
1942
  display: inline-block;
@@ -2093,6 +2104,19 @@ html body .height-full {
2093
2104
  .to-tag.type-corner.position-bottom-right .to-tag-wrapper {
2094
2105
  border-radius: var(--radius) 0 0 0;
2095
2106
  }
2107
+ .to-tag.is-link {
2108
+ cursor: pointer;
2109
+ }
2110
+ .to-tag.is-link .to-tag-wrapper:hover {
2111
+ background: var(--hover-bg);
2112
+ color: var(--hover-color);
2113
+ border: var(--hover-border);
2114
+ }
2115
+ .to-tag.is-link .to-tag-wrapper:active {
2116
+ background: var(--active-bg);
2117
+ color: var(--active-color);
2118
+ border: var(--active-border);
2119
+ }
2096
2120
  .to-box {
2097
2121
  --bg: var(--color-bg);
2098
2122
  --bg-size: 100% 100%;
@@ -3320,6 +3344,20 @@ html body .height-full {
3320
3344
  .to-select.is-changed {
3321
3345
  color: var(--primary);
3322
3346
  }
3347
+ .to-select.is-filterable .to-select-content {
3348
+ padding-left: 0;
3349
+ padding-top: 0;
3350
+ padding-bottom: 0;
3351
+ display: flex;
3352
+ }
3353
+ .to-select.is-filterable .to-select-input {
3354
+ flex: 1;
3355
+ }
3356
+ .to-select.is-filterable .to-select-input .to-input {
3357
+ --bg: none;
3358
+ --border: 0 none;
3359
+ flex: 1;
3360
+ }
3323
3361
  .to-select-icon {
3324
3362
  --color: inherit;
3325
3363
  --width: 1em;
package/theme/index.css CHANGED
@@ -740,6 +740,7 @@ html body .height-full {
740
740
  gap: var(--gap-y) var(--gap-x);
741
741
  padding: var(--padding);
742
742
  vertical-align: top;
743
+ box-sizing: border-box;
743
744
  }
744
745
  .to-grid > [flex] {
745
746
  flex: 1;
@@ -822,6 +823,10 @@ html body .height-full {
822
823
  .to-grid.is-col > *[merge="10"] {
823
824
  --merge: 10;
824
825
  }
826
+ .to-grid.is-col > .to-grid {
827
+ --item-col: var(--col);
828
+ width: calc((100% - (var(--item-col) - 1) * var(--gap-x)) / var(--item-col) * var(--merge) + (var(--merge) - 1) * var(--gap-x));
829
+ }
825
830
  .to-grid.col-avg {
826
831
  display: flex;
827
832
  }
@@ -869,10 +874,10 @@ html body .height-full {
869
874
  .to-grid.col-1 > *:last-child::after {
870
875
  display: none;
871
876
  }
872
- .to-grid.height-full {
873
- height: 100%;
877
+ .to-grid-item {
878
+ box-sizing: border-box;
874
879
  }
875
- .to-grid.height-full > .to-grid-item {
880
+ .to-grid.height-full:not(.dir-v) > .to-grid-item {
876
881
  height: 100%;
877
882
  }
878
883
  @font-face {
@@ -1929,6 +1934,12 @@ html body .height-full {
1929
1934
  --dot-color: var(--color-fg);
1930
1935
  --dot-radius: 50%;
1931
1936
  --rotate-offset: 0em;
1937
+ --hover-bg: #dedede;
1938
+ --hover-color: var(--color);
1939
+ --hover-border: var(--border);
1940
+ --active-bg: #ababab;
1941
+ --active-color: var(--color);
1942
+ --active-border: var(--border);
1932
1943
  }
1933
1944
  .to-tag {
1934
1945
  display: inline-block;
@@ -2096,6 +2107,19 @@ html body .height-full {
2096
2107
  .to-tag.type-corner.position-bottom-right .to-tag-wrapper {
2097
2108
  border-radius: var(--radius) 0 0 0;
2098
2109
  }
2110
+ .to-tag.is-link {
2111
+ cursor: pointer;
2112
+ }
2113
+ .to-tag.is-link .to-tag-wrapper:hover {
2114
+ background: var(--hover-bg);
2115
+ color: var(--hover-color);
2116
+ border: var(--hover-border);
2117
+ }
2118
+ .to-tag.is-link .to-tag-wrapper:active {
2119
+ background: var(--active-bg);
2120
+ color: var(--active-color);
2121
+ border: var(--active-border);
2122
+ }
2099
2123
  .to-box {
2100
2124
  --bg: var(--color-bg);
2101
2125
  --bg-size: 100% 100%;
@@ -3323,6 +3347,20 @@ html body .height-full {
3323
3347
  .to-select.is-changed {
3324
3348
  color: var(--primary);
3325
3349
  }
3350
+ .to-select.is-filterable .to-select-content {
3351
+ padding-left: 0;
3352
+ padding-top: 0;
3353
+ padding-bottom: 0;
3354
+ display: flex;
3355
+ }
3356
+ .to-select.is-filterable .to-select-input {
3357
+ flex: 1;
3358
+ }
3359
+ .to-select.is-filterable .to-select-input .to-input {
3360
+ --bg: none;
3361
+ --border: 0 none;
3362
+ flex: 1;
3363
+ }
3326
3364
  .to-select-icon {
3327
3365
  --color: inherit;
3328
3366
  --width: 1em;
@@ -740,6 +740,7 @@ html body .height-full {
740
740
  gap: var(--gap-y) var(--gap-x);
741
741
  padding: var(--padding);
742
742
  vertical-align: top;
743
+ box-sizing: border-box;
743
744
  }
744
745
  .to-grid > [flex] {
745
746
  flex: 1;
@@ -822,6 +823,10 @@ html body .height-full {
822
823
  .to-grid.is-col > *[merge="10"] {
823
824
  --merge: 10;
824
825
  }
826
+ .to-grid.is-col > .to-grid {
827
+ --item-col: var(--col);
828
+ width: calc((100% - (var(--item-col) - 1) * var(--gap-x)) / var(--item-col) * var(--merge) + (var(--merge) - 1) * var(--gap-x));
829
+ }
825
830
  .to-grid.col-avg {
826
831
  display: flex;
827
832
  }
@@ -869,10 +874,10 @@ html body .height-full {
869
874
  .to-grid.col-1 > *:last-child::after {
870
875
  display: none;
871
876
  }
872
- .to-grid.height-full {
873
- height: 100%;
877
+ .to-grid-item {
878
+ box-sizing: border-box;
874
879
  }
875
- .to-grid.height-full > .to-grid-item {
880
+ .to-grid.height-full:not(.dir-v) > .to-grid-item {
876
881
  height: 100%;
877
882
  }
878
883
  @font-face {
@@ -1929,6 +1934,12 @@ html body .height-full {
1929
1934
  --dot-color: var(--color-fg);
1930
1935
  --dot-radius: 50%;
1931
1936
  --rotate-offset: 0em;
1937
+ --hover-bg: #dedede;
1938
+ --hover-color: var(--color);
1939
+ --hover-border: var(--border);
1940
+ --active-bg: #ababab;
1941
+ --active-color: var(--color);
1942
+ --active-border: var(--border);
1932
1943
  }
1933
1944
  .to-tag {
1934
1945
  display: inline-block;
@@ -2096,6 +2107,19 @@ html body .height-full {
2096
2107
  .to-tag.type-corner.position-bottom-right .to-tag-wrapper {
2097
2108
  border-radius: var(--radius) 0 0 0;
2098
2109
  }
2110
+ .to-tag.is-link {
2111
+ cursor: pointer;
2112
+ }
2113
+ .to-tag.is-link .to-tag-wrapper:hover {
2114
+ background: var(--hover-bg);
2115
+ color: var(--hover-color);
2116
+ border: var(--hover-border);
2117
+ }
2118
+ .to-tag.is-link .to-tag-wrapper:active {
2119
+ background: var(--active-bg);
2120
+ color: var(--active-color);
2121
+ border: var(--active-border);
2122
+ }
2099
2123
  .to-box {
2100
2124
  --bg: var(--color-bg);
2101
2125
  --bg-size: 100% 100%;
@@ -3323,6 +3347,20 @@ html body .height-full {
3323
3347
  .to-select.is-changed {
3324
3348
  color: var(--primary);
3325
3349
  }
3350
+ .to-select.is-filterable .to-select-content {
3351
+ padding-left: 0;
3352
+ padding-top: 0;
3353
+ padding-bottom: 0;
3354
+ display: flex;
3355
+ }
3356
+ .to-select.is-filterable .to-select-input {
3357
+ flex: 1;
3358
+ }
3359
+ .to-select.is-filterable .to-select-input .to-input {
3360
+ --bg: none;
3361
+ --border: 0 none;
3362
+ flex: 1;
3363
+ }
3326
3364
  .to-select-icon {
3327
3365
  --color: inherit;
3328
3366
  --width: 1em;