@rockshin/tao-ui 0.0.1 → 0.0.3

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 (71) hide show
  1. package/dist/components/breadcrumb/breadcrumb.css +1091 -0
  2. package/dist/components/breadcrumb/breadcrumb.d.ts +43 -0
  3. package/dist/components/breadcrumb/breadcrumb.js +268 -0
  4. package/dist/components/button/button.css +46 -21
  5. package/dist/components/checkbox/checkbox.css +33 -12
  6. package/dist/components/collapsible/collapsible.css +1026 -0
  7. package/dist/components/collapsible/collapsible.d.ts +39 -0
  8. package/dist/components/collapsible/collapsible.js +168 -0
  9. package/dist/components/context-menu/context-menu.css +1149 -0
  10. package/dist/components/context-menu/context-menu.d.ts +19 -0
  11. package/dist/components/context-menu/context-menu.js +106 -0
  12. package/dist/components/date-picker/calendar/month-grid.d.ts +1 -1
  13. package/dist/components/date-picker/calendar/time-panel.d.ts +1 -1
  14. package/dist/components/date-picker/calendar/year-grid.d.ts +1 -1
  15. package/dist/components/date-picker/date-picker.css +87 -17
  16. package/dist/components/date-picker/date-picker.js +9 -7
  17. package/dist/components/date-picker/range-picker.js +9 -7
  18. package/dist/components/drawer/drawer.css +128 -15
  19. package/dist/components/drawer/drawer.d.ts +36 -3
  20. package/dist/components/drawer/drawer.js +323 -121
  21. package/dist/components/dropdown/dropdown.css +999 -0
  22. package/dist/components/dropdown/dropdown.d.ts +45 -0
  23. package/dist/components/dropdown/dropdown.js +383 -0
  24. package/dist/components/form-field/form.css +33 -12
  25. package/dist/components/input/input.css +86 -14
  26. package/dist/components/menu/menu-render.d.ts +89 -0
  27. package/dist/components/menu/menu-render.js +379 -0
  28. package/dist/components/menu/menu.css +1145 -0
  29. package/dist/components/modal/confirm-dialog.d.ts +37 -0
  30. package/dist/components/modal/confirm-dialog.js +193 -0
  31. package/dist/components/modal/confirm.d.ts +13 -0
  32. package/dist/components/modal/confirm.js +56 -0
  33. package/dist/components/modal/index.d.ts +21 -0
  34. package/dist/components/modal/index.js +18 -0
  35. package/dist/components/modal/modal.css +1169 -0
  36. package/dist/components/modal/modal.d.ts +50 -0
  37. package/dist/components/modal/modal.js +362 -0
  38. package/dist/components/modal/use-modal.d.ts +21 -0
  39. package/dist/components/modal/use-modal.js +83 -0
  40. package/dist/components/pagination/pagination.css +33 -12
  41. package/dist/components/pagination/pagination.js +3 -1
  42. package/dist/components/radio/radio.css +33 -12
  43. package/dist/components/scroll-area/scroll-area.css +33 -12
  44. package/dist/components/select/mobile-select.css +75 -13
  45. package/dist/components/select/mobile-select.d.ts +4 -1
  46. package/dist/components/select/mobile-select.js +103 -107
  47. package/dist/components/select/select.css +167 -26
  48. package/dist/components/select/select.d.ts +62 -4
  49. package/dist/components/select/select.js +359 -377
  50. package/dist/components/spinner/spinner.css +1084 -0
  51. package/dist/components/spinner/spinner.d.ts +26 -0
  52. package/dist/components/spinner/spinner.js +229 -0
  53. package/dist/components/splitter/splitter.css +33 -12
  54. package/dist/components/switch/switch.css +33 -12
  55. package/dist/components/table/table.css +57 -18
  56. package/dist/components/table/table.d.ts +17 -2
  57. package/dist/components/table/table.js +214 -206
  58. package/dist/components/tabs/tabs.css +36 -17
  59. package/dist/components/tag/tag.css +33 -12
  60. package/dist/components/textarea/textarea.css +1246 -0
  61. package/dist/components/textarea/textarea.d.ts +19 -0
  62. package/dist/components/textarea/textarea.js +181 -0
  63. package/dist/index.d.ts +25 -18
  64. package/dist/index.js +22 -15
  65. package/dist/layouts/stack/layout.css +33 -12
  66. package/dist/provider/tao-provider.d.ts +17 -1
  67. package/dist/provider/tao-provider.js +53 -15
  68. package/dist/theme/control.css +86 -13
  69. package/dist/theme/theme.css +33 -12
  70. package/llms.txt +7 -6
  71. package/package.json +18 -13
@@ -307,11 +307,16 @@
307
307
  --tao-radius: 6px;
308
308
  --tao-font-size: 14px;
309
309
  --tao-control-height: 36px;
310
+ --tao-control-width: 200px;
311
+ --tao-control-range-width: 360px;
310
312
  --tao-size-unit: 4px;
311
313
  --tao-line-width: 1px;
312
314
  --tao-font-family: "Geist Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
313
315
  --tao-font-family-code: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
314
316
  --tao-motion-unit: .1s;
317
+ --tao-z-index-drawer: 1000;
318
+ --tao-z-index-modal: 1000;
319
+ --tao-z-index-popup: 1100;
315
320
  --tao-primary: var(--tao-color-primary);
316
321
  --tao-primary-hover: var(--tao-color-primary);
317
322
  }
@@ -529,8 +534,8 @@
529
534
  }
530
535
 
531
536
  :root, [data-tao-provider] {
532
- --tao-color-bg-container: var(--tao-color-bg-base);
533
- --tao-color-bg-elevated: var(--tao-color-bg-base);
537
+ --tao-color-bg-container: oklch(100% 0 0);
538
+ --tao-color-bg-elevated: oklch(100% 0 0);
534
539
  --tao-color-border: var(--tao-color-text-base);
535
540
  }
536
541
 
@@ -541,16 +546,7 @@
541
546
  }
542
547
 
543
548
  :root, [data-tao-provider] {
544
- --tao-color-border-secondary: var(--tao-color-text-base);
545
- }
546
-
547
- @supports (color: color-mix(in lab, red, red)) {
548
- :root, [data-tao-provider] {
549
- --tao-color-border-secondary: color-mix(in oklch, var(--tao-color-text-base) 10%, var(--tao-color-bg-base));
550
- }
551
- }
552
-
553
- :root, [data-tao-provider] {
549
+ --tao-color-border-secondary: #0000170b;
554
550
  --tao-radius-xs: 2px;
555
551
  --tao-radius-sm: calc(var(--tao-radius) - 2px);
556
552
  --tao-radius-md: var(--tao-radius);
@@ -633,6 +629,10 @@
633
629
  visibility: collapse;
634
630
  }
635
631
 
632
+ .visible {
633
+ visibility: visible;
634
+ }
635
+
636
636
  .absolute {
637
637
  position: absolute;
638
638
  }
@@ -715,6 +715,10 @@
715
715
  display: inline;
716
716
  }
717
717
 
718
+ .inline-flex {
719
+ display: inline-flex;
720
+ }
721
+
718
722
  .table {
719
723
  display: table;
720
724
  }
@@ -727,6 +731,10 @@
727
731
  transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
728
732
  }
729
733
 
734
+ .resize {
735
+ resize: both;
736
+ }
737
+
730
738
  .flex-wrap {
731
739
  flex-wrap: wrap;
732
740
  }
@@ -742,6 +750,14 @@
742
750
  border-width: 1px;
743
751
  }
744
752
 
753
+ .italic {
754
+ font-style: italic;
755
+ }
756
+
757
+ .underline {
758
+ text-decoration-line: underline;
759
+ }
760
+
745
761
  .shadow {
746
762
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
747
763
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -771,6 +787,11 @@
771
787
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
772
788
  transition-duration: var(--tw-duration, var(--default-transition-duration));
773
789
  }
790
+
791
+ .select-all {
792
+ -webkit-user-select: all;
793
+ user-select: all;
794
+ }
774
795
  }
775
796
 
776
797
  [data-tao-radio-wrapper] {
@@ -307,11 +307,16 @@
307
307
  --tao-radius: 6px;
308
308
  --tao-font-size: 14px;
309
309
  --tao-control-height: 36px;
310
+ --tao-control-width: 200px;
311
+ --tao-control-range-width: 360px;
310
312
  --tao-size-unit: 4px;
311
313
  --tao-line-width: 1px;
312
314
  --tao-font-family: "Geist Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
313
315
  --tao-font-family-code: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
314
316
  --tao-motion-unit: .1s;
317
+ --tao-z-index-drawer: 1000;
318
+ --tao-z-index-modal: 1000;
319
+ --tao-z-index-popup: 1100;
315
320
  --tao-primary: var(--tao-color-primary);
316
321
  --tao-primary-hover: var(--tao-color-primary);
317
322
  }
@@ -529,8 +534,8 @@
529
534
  }
530
535
 
531
536
  :root, [data-tao-provider] {
532
- --tao-color-bg-container: var(--tao-color-bg-base);
533
- --tao-color-bg-elevated: var(--tao-color-bg-base);
537
+ --tao-color-bg-container: oklch(100% 0 0);
538
+ --tao-color-bg-elevated: oklch(100% 0 0);
534
539
  --tao-color-border: var(--tao-color-text-base);
535
540
  }
536
541
 
@@ -541,16 +546,7 @@
541
546
  }
542
547
 
543
548
  :root, [data-tao-provider] {
544
- --tao-color-border-secondary: var(--tao-color-text-base);
545
- }
546
-
547
- @supports (color: color-mix(in lab, red, red)) {
548
- :root, [data-tao-provider] {
549
- --tao-color-border-secondary: color-mix(in oklch, var(--tao-color-text-base) 10%, var(--tao-color-bg-base));
550
- }
551
- }
552
-
553
- :root, [data-tao-provider] {
549
+ --tao-color-border-secondary: #0000170b;
554
550
  --tao-radius-xs: 2px;
555
551
  --tao-radius-sm: calc(var(--tao-radius) - 2px);
556
552
  --tao-radius-md: var(--tao-radius);
@@ -633,6 +629,10 @@
633
629
  visibility: collapse;
634
630
  }
635
631
 
632
+ .visible {
633
+ visibility: visible;
634
+ }
635
+
636
636
  .absolute {
637
637
  position: absolute;
638
638
  }
@@ -715,6 +715,10 @@
715
715
  display: inline;
716
716
  }
717
717
 
718
+ .inline-flex {
719
+ display: inline-flex;
720
+ }
721
+
718
722
  .table {
719
723
  display: table;
720
724
  }
@@ -727,6 +731,10 @@
727
731
  transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
728
732
  }
729
733
 
734
+ .resize {
735
+ resize: both;
736
+ }
737
+
730
738
  .flex-wrap {
731
739
  flex-wrap: wrap;
732
740
  }
@@ -742,6 +750,14 @@
742
750
  border-width: 1px;
743
751
  }
744
752
 
753
+ .italic {
754
+ font-style: italic;
755
+ }
756
+
757
+ .underline {
758
+ text-decoration-line: underline;
759
+ }
760
+
745
761
  .shadow {
746
762
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
747
763
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -771,6 +787,11 @@
771
787
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
772
788
  transition-duration: var(--tw-duration, var(--default-transition-duration));
773
789
  }
790
+
791
+ .select-all {
792
+ -webkit-user-select: all;
793
+ user-select: all;
794
+ }
774
795
  }
775
796
 
776
797
  [data-tao-scroll-area] {
@@ -307,11 +307,16 @@
307
307
  --tao-radius: 6px;
308
308
  --tao-font-size: 14px;
309
309
  --tao-control-height: 36px;
310
+ --tao-control-width: 200px;
311
+ --tao-control-range-width: 360px;
310
312
  --tao-size-unit: 4px;
311
313
  --tao-line-width: 1px;
312
314
  --tao-font-family: "Geist Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
313
315
  --tao-font-family-code: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
314
316
  --tao-motion-unit: .1s;
317
+ --tao-z-index-drawer: 1000;
318
+ --tao-z-index-modal: 1000;
319
+ --tao-z-index-popup: 1100;
315
320
  --tao-primary: var(--tao-color-primary);
316
321
  --tao-primary-hover: var(--tao-color-primary);
317
322
  }
@@ -529,8 +534,8 @@
529
534
  }
530
535
 
531
536
  :root, [data-tao-provider] {
532
- --tao-color-bg-container: var(--tao-color-bg-base);
533
- --tao-color-bg-elevated: var(--tao-color-bg-base);
537
+ --tao-color-bg-container: oklch(100% 0 0);
538
+ --tao-color-bg-elevated: oklch(100% 0 0);
534
539
  --tao-color-border: var(--tao-color-text-base);
535
540
  }
536
541
 
@@ -541,16 +546,7 @@
541
546
  }
542
547
 
543
548
  :root, [data-tao-provider] {
544
- --tao-color-border-secondary: var(--tao-color-text-base);
545
- }
546
-
547
- @supports (color: color-mix(in lab, red, red)) {
548
- :root, [data-tao-provider] {
549
- --tao-color-border-secondary: color-mix(in oklch, var(--tao-color-text-base) 10%, var(--tao-color-bg-base));
550
- }
551
- }
552
-
553
- :root, [data-tao-provider] {
549
+ --tao-color-border-secondary: #0000170b;
554
550
  --tao-radius-xs: 2px;
555
551
  --tao-radius-sm: calc(var(--tao-radius) - 2px);
556
552
  --tao-radius-md: var(--tao-radius);
@@ -633,6 +629,10 @@
633
629
  visibility: collapse;
634
630
  }
635
631
 
632
+ .visible {
633
+ visibility: visible;
634
+ }
635
+
636
636
  .absolute {
637
637
  position: absolute;
638
638
  }
@@ -715,6 +715,10 @@
715
715
  display: inline;
716
716
  }
717
717
 
718
+ .inline-flex {
719
+ display: inline-flex;
720
+ }
721
+
718
722
  .table {
719
723
  display: table;
720
724
  }
@@ -727,6 +731,10 @@
727
731
  transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
728
732
  }
729
733
 
734
+ .resize {
735
+ resize: both;
736
+ }
737
+
730
738
  .flex-wrap {
731
739
  flex-wrap: wrap;
732
740
  }
@@ -742,6 +750,14 @@
742
750
  border-width: 1px;
743
751
  }
744
752
 
753
+ .italic {
754
+ font-style: italic;
755
+ }
756
+
757
+ .underline {
758
+ text-decoration-line: underline;
759
+ }
760
+
745
761
  .shadow {
746
762
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
747
763
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -771,6 +787,11 @@
771
787
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
772
788
  transition-duration: var(--tw-duration, var(--default-transition-duration));
773
789
  }
790
+
791
+ .select-all {
792
+ -webkit-user-select: all;
793
+ user-select: all;
794
+ }
774
795
  }
775
796
 
776
797
  [data-tao-drawer]:has([data-tao-sheet-list]) [data-tao-drawer-body] {
@@ -813,6 +834,13 @@
813
834
  overflow-y: auto;
814
835
  }
815
836
 
837
+ [data-tao-sheet-group-label] {
838
+ padding: var(--tao-padding-sm) var(--tao-padding) var(--tao-padding-xxs);
839
+ font-size: var(--tao-font-size-sm);
840
+ font-weight: var(--tao-font-weight-medium);
841
+ color: var(--tao-color-text-tertiary);
842
+ }
843
+
816
844
  [data-tao-sheet-item] {
817
845
  min-height: 48px;
818
846
  padding-inline: var(--tao-padding);
@@ -838,10 +866,44 @@
838
866
  cursor: not-allowed;
839
867
  }
840
868
 
869
+ [data-tao-sheet-item-icon] {
870
+ border-radius: var(--tao-radius-md);
871
+ width: 2rem;
872
+ height: 2rem;
873
+ flex-shrink: 0;
874
+ justify-content: center;
875
+ align-items: center;
876
+ margin-inline-end: var(--tao-padding-sm);
877
+ display: inline-flex;
878
+ overflow: hidden;
879
+ }
880
+
881
+ [data-tao-sheet-item-icon] > * {
882
+ object-fit: cover;
883
+ width: 100%;
884
+ height: 100%;
885
+ }
886
+
887
+ [data-tao-sheet-item-main] {
888
+ flex-direction: column;
889
+ flex: 1;
890
+ min-width: 0;
891
+ display: flex;
892
+ }
893
+
841
894
  [data-tao-sheet-item-label] {
842
895
  text-overflow: ellipsis;
843
896
  white-space: nowrap;
844
- flex: 1;
897
+ overflow: hidden;
898
+ }
899
+
900
+ [data-tao-sheet-item-desc] {
901
+ font-size: var(--tao-font-size-sm);
902
+ line-height: var(--tao-line-height-sm);
903
+ color: var(--tao-color-text-tertiary);
904
+ text-overflow: ellipsis;
905
+ white-space: nowrap;
906
+ margin-block-start: 2px;
845
907
  overflow: hidden;
846
908
  }
847
909
 
@@ -9,9 +9,12 @@ interface MobileSelectContentProps {
9
9
  showSearch?: boolean;
10
10
  filterOption?: (input: string, option: SelectOption) => boolean;
11
11
  notFoundContent?: ReactNode;
12
+ optionRender?: (option: SelectOption, info: {
13
+ index: number;
14
+ }) => ReactNode;
12
15
  onClose: () => void;
13
16
  }
14
- export declare function MobileSelectContent({ options, value, onChange, showSearch, filterOption, notFoundContent, onClose, }: MobileSelectContentProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function MobileSelectContent({ options, value, onChange, showSearch, filterOption, notFoundContent, optionRender, onClose, }: MobileSelectContentProps): import("react/jsx-runtime").JSX.Element;
15
18
  export interface MobileSelectDrawerProps extends MobileSelectContentProps {
16
19
  open: boolean;
17
20
  }
@@ -1,126 +1,122 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { useState } from "react";
3
+ import { useCallback, useMemo, useState } from "react";
4
4
  import { Drawer } from "../drawer/drawer.js";
5
5
  import "./mobile-select.css";
6
6
  const defaultFilter = (input, option)=>{
7
7
  const label = 'string' == typeof option.label ? option.label : String(option.label);
8
8
  return label.toLowerCase().includes(input.toLowerCase());
9
9
  };
10
- function MobileSelectContent(t0) {
11
- const $ = c(23);
12
- const { options, value, onChange, showSearch, filterOption, notFoundContent: t1, onClose } = t0;
13
- const notFoundContent = void 0 === t1 ? "No results" : t1;
14
- const [search, setSearch] = useState("");
15
- let t2;
16
- bb0: {
17
- if (!showSearch || !search) {
18
- t2 = options;
19
- break bb0;
20
- }
10
+ function filterTree(options, fn, input) {
11
+ const result = [];
12
+ for (const o of options)if (o.options) {
13
+ const kids = filterTree(o.options, fn, input);
14
+ if (kids.length) result.push({
15
+ ...o,
16
+ options: kids
17
+ });
18
+ } else if (fn(input, o)) result.push(o);
19
+ return result;
20
+ }
21
+ function countLeaves(options) {
22
+ return options.reduce((n, o)=>n + (o.options ? countLeaves(o.options) : 1), 0);
23
+ }
24
+ function MobileSelectContent({ options, value, onChange, showSearch, filterOption, notFoundContent = 'No results', optionRender, onClose }) {
25
+ const [search, setSearch] = useState('');
26
+ const filteredOptions = useMemo(()=>{
27
+ if (!showSearch || !search) return options;
21
28
  const fn = filterOption ?? defaultFilter;
22
- let t3;
23
- if ($[0] !== fn || $[1] !== options || $[2] !== search) {
24
- let t4;
25
- if ($[4] !== fn || $[5] !== search) {
26
- t4 = (o)=>fn(search, o);
27
- $[4] = fn;
28
- $[5] = search;
29
- $[6] = t4;
30
- } else t4 = $[6];
31
- t3 = options.filter(t4);
32
- $[0] = fn;
33
- $[1] = options;
34
- $[2] = search;
35
- $[3] = t3;
36
- } else t3 = $[3];
37
- t2 = t3;
38
- }
39
- const filteredOptions = t2;
40
- let t3;
41
- if ($[7] !== onChange || $[8] !== onClose) {
42
- t3 = (optValue)=>{
43
- onChange?.(optValue);
44
- onClose();
45
- };
46
- $[7] = onChange;
47
- $[8] = onClose;
48
- $[9] = t3;
49
- } else t3 = $[9];
50
- const handleSelect = t3;
51
- let t4;
52
- if ($[10] !== search || $[11] !== showSearch) {
53
- t4 = showSearch && /*#__PURE__*/ jsxs("div", {
54
- "data-tao-sheet-search": "",
29
+ return filterTree(options, fn, search);
30
+ }, [
31
+ options,
32
+ search,
33
+ showSearch,
34
+ filterOption
35
+ ]);
36
+ const handleSelect = useCallback((optValue)=>{
37
+ onChange?.(optValue);
38
+ onClose();
39
+ }, [
40
+ onChange,
41
+ onClose
42
+ ]);
43
+ let optIndex = 0;
44
+ const renderItem = (opt)=>{
45
+ const index = optIndex++;
46
+ const isSelected = opt.value === value;
47
+ return /*#__PURE__*/ jsxs("div", {
48
+ "data-tao-sheet-item": "",
49
+ "data-tao-selected": isSelected || void 0,
50
+ "data-tao-disabled": opt.disabled || void 0,
51
+ onClick: ()=>{
52
+ if (!opt.disabled) handleSelect(opt.value);
53
+ },
54
+ "data-tao-has-desc": null != opt.description || void 0,
55
55
  children: [
56
- /*#__PURE__*/ jsx(SearchIcon, {}),
57
- /*#__PURE__*/ jsx("input", {
58
- "data-tao-sheet-search-input": "",
59
- value: search,
60
- onChange: (e)=>setSearch(e.target.value),
61
- placeholder: "Search...",
62
- autoFocus: true
56
+ optionRender ? optionRender(opt, {
57
+ index
58
+ }) : /*#__PURE__*/ jsxs(Fragment, {
59
+ children: [
60
+ null != opt.icon && /*#__PURE__*/ jsx("span", {
61
+ "data-tao-sheet-item-icon": "",
62
+ children: opt.icon
63
+ }),
64
+ /*#__PURE__*/ jsxs("span", {
65
+ "data-tao-sheet-item-main": "",
66
+ children: [
67
+ /*#__PURE__*/ jsx("span", {
68
+ "data-tao-sheet-item-label": "",
69
+ children: opt.label
70
+ }),
71
+ null != opt.description && /*#__PURE__*/ jsx("span", {
72
+ "data-tao-sheet-item-desc": "",
73
+ children: opt.description
74
+ })
75
+ ]
76
+ })
77
+ ]
78
+ }),
79
+ isSelected && /*#__PURE__*/ jsx("span", {
80
+ "data-tao-sheet-item-check": "",
81
+ children: /*#__PURE__*/ jsx(CheckIcon, {})
63
82
  })
64
83
  ]
65
- });
66
- $[10] = search;
67
- $[11] = showSearch;
68
- $[12] = t4;
69
- } else t4 = $[12];
70
- let t5;
71
- if ($[13] !== filteredOptions || $[14] !== handleSelect || $[15] !== notFoundContent || $[16] !== value) {
72
- t5 = filteredOptions.length > 0 ? filteredOptions.map((opt)=>{
73
- const isSelected = opt.value === value;
74
- return /*#__PURE__*/ jsxs("div", {
75
- "data-tao-sheet-item": "",
76
- "data-tao-selected": isSelected || void 0,
77
- "data-tao-disabled": opt.disabled || void 0,
78
- onClick: ()=>{
79
- if (!opt.disabled) handleSelect(opt.value);
80
- },
84
+ }, opt.value);
85
+ };
86
+ const renderTree = (opts)=>opts.map((o)=>o.options ? /*#__PURE__*/ jsxs("div", {
87
+ "data-tao-sheet-group": "",
81
88
  children: [
82
- /*#__PURE__*/ jsx("span", {
83
- "data-tao-sheet-item-label": "",
84
- children: opt.label
89
+ /*#__PURE__*/ jsx("div", {
90
+ "data-tao-sheet-group-label": "",
91
+ children: o.label
85
92
  }),
86
- isSelected && /*#__PURE__*/ jsx("span", {
87
- "data-tao-sheet-item-check": "",
88
- children: /*#__PURE__*/ jsx(CheckIcon, {})
93
+ o.options.map(renderItem)
94
+ ]
95
+ }, o.value) : renderItem(o));
96
+ return /*#__PURE__*/ jsxs(Fragment, {
97
+ children: [
98
+ showSearch && /*#__PURE__*/ jsxs("div", {
99
+ "data-tao-sheet-search": "",
100
+ children: [
101
+ /*#__PURE__*/ jsx(SearchIcon, {}),
102
+ /*#__PURE__*/ jsx("input", {
103
+ "data-tao-sheet-search-input": "",
104
+ value: search,
105
+ onChange: (e)=>setSearch(e.target.value),
106
+ placeholder: "Search...",
107
+ autoFocus: true
89
108
  })
90
109
  ]
91
- }, opt.value);
92
- }) : /*#__PURE__*/ jsx("div", {
93
- "data-tao-sheet-empty": "",
94
- children: notFoundContent
95
- });
96
- $[13] = filteredOptions;
97
- $[14] = handleSelect;
98
- $[15] = notFoundContent;
99
- $[16] = value;
100
- $[17] = t5;
101
- } else t5 = $[17];
102
- let t6;
103
- if ($[18] !== t5) {
104
- t6 = /*#__PURE__*/ jsx("div", {
105
- "data-tao-sheet-list": "",
106
- children: t5
107
- });
108
- $[18] = t5;
109
- $[19] = t6;
110
- } else t6 = $[19];
111
- let t7;
112
- if ($[20] !== t4 || $[21] !== t6) {
113
- t7 = /*#__PURE__*/ jsxs(Fragment, {
114
- children: [
115
- t4,
116
- t6
117
- ]
118
- });
119
- $[20] = t4;
120
- $[21] = t6;
121
- $[22] = t7;
122
- } else t7 = $[22];
123
- return t7;
110
+ }),
111
+ /*#__PURE__*/ jsx("div", {
112
+ "data-tao-sheet-list": "",
113
+ children: countLeaves(filteredOptions) > 0 ? renderTree(filteredOptions) : /*#__PURE__*/ jsx("div", {
114
+ "data-tao-sheet-empty": "",
115
+ children: notFoundContent
116
+ })
117
+ })
118
+ ]
119
+ });
124
120
  }
125
121
  function MobileSelectDrawer(t0) {
126
122
  const $ = c(14);