@xjur-ui/react 1.0.6 → 2.0.0

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 (115) hide show
  1. package/.turbo/turbo-build.log +97 -45
  2. package/CHANGELOG.md +44 -0
  3. package/README.md +146 -0
  4. package/dist/chunk-CBFC4QME.js +2 -0
  5. package/dist/chunk-CBFC4QME.js.map +1 -0
  6. package/dist/chunk-EIG6CBTQ.js +2 -0
  7. package/dist/chunk-EIG6CBTQ.js.map +1 -0
  8. package/dist/chunk-FASEHVMD.js +2 -0
  9. package/dist/chunk-FASEHVMD.js.map +1 -0
  10. package/dist/chunk-KIFR5VIE.js +2 -0
  11. package/dist/chunk-KIFR5VIE.js.map +1 -0
  12. package/dist/chunk-KS6WGBHQ.js +2 -0
  13. package/dist/chunk-KS6WGBHQ.js.map +1 -0
  14. package/dist/chunk-NELCN6E2.js +2 -0
  15. package/dist/chunk-NELCN6E2.js.map +1 -0
  16. package/dist/chunk-NPTLORW5.js +2 -0
  17. package/dist/chunk-NPTLORW5.js.map +1 -0
  18. package/dist/chunk-RWMV7APX.js +2 -0
  19. package/dist/chunk-RWMV7APX.js.map +1 -0
  20. package/dist/chunk-SHHXKVVR.js +2 -0
  21. package/dist/chunk-SHHXKVVR.js.map +1 -0
  22. package/dist/chunk-TB6KI6CL.js +2 -0
  23. package/dist/chunk-TB6KI6CL.js.map +1 -0
  24. package/dist/components/avatar-group.js +2 -179
  25. package/dist/components/avatar-group.js.map +1 -0
  26. package/dist/components/avatar.js +2 -59
  27. package/dist/components/avatar.js.map +1 -0
  28. package/dist/components/badge.js +2 -111
  29. package/dist/components/badge.js.map +1 -0
  30. package/dist/components/button.js +2 -98
  31. package/dist/components/button.js.map +1 -0
  32. package/dist/components/calendar.js +2 -751
  33. package/dist/components/calendar.js.map +1 -0
  34. package/dist/components/checkbox.js +2 -153
  35. package/dist/components/checkbox.js.map +1 -0
  36. package/dist/components/chip.d.ts +3 -1
  37. package/dist/components/chip.js +2 -256
  38. package/dist/components/chip.js.map +1 -0
  39. package/dist/components/collapsible.js +2 -41
  40. package/dist/components/collapsible.js.map +1 -0
  41. package/dist/components/date-picker.d.ts +8 -3
  42. package/dist/components/date-picker.js +2 -232
  43. package/dist/components/date-picker.js.map +1 -0
  44. package/dist/components/divider.js +2 -29
  45. package/dist/components/divider.js.map +1 -0
  46. package/dist/components/dropdown-menu.js +2 -295
  47. package/dist/components/dropdown-menu.js.map +1 -0
  48. package/dist/components/icon.js +2 -177
  49. package/dist/components/icon.js.map +1 -0
  50. package/dist/components/input.d.ts +9 -4
  51. package/dist/components/input.js +2 -315
  52. package/dist/components/input.js.map +1 -0
  53. package/dist/components/list.js +2 -179
  54. package/dist/components/list.js.map +1 -0
  55. package/dist/components/logo.js +2 -324
  56. package/dist/components/logo.js.map +1 -0
  57. package/dist/components/otp-input.js +2 -47
  58. package/dist/components/otp-input.js.map +1 -0
  59. package/dist/components/radio.js +2 -156
  60. package/dist/components/radio.js.map +1 -0
  61. package/dist/components/rich-editor.d.ts +2 -1
  62. package/dist/components/rich-editor.js +2 -723
  63. package/dist/components/rich-editor.js.map +1 -0
  64. package/dist/components/search-input.js +2 -274
  65. package/dist/components/search-input.js.map +1 -0
  66. package/dist/components/select.d.ts +6 -3
  67. package/dist/components/select.js +2 -550
  68. package/dist/components/select.js.map +1 -0
  69. package/dist/components/sheet.js +2 -251
  70. package/dist/components/sheet.js.map +1 -0
  71. package/dist/components/skeleton.js +2 -16
  72. package/dist/components/skeleton.js.map +1 -0
  73. package/dist/components/status.js +2 -111
  74. package/dist/components/status.js.map +1 -0
  75. package/dist/components/switch.js +2 -36
  76. package/dist/components/switch.js.map +1 -0
  77. package/dist/components/table.js +2 -196
  78. package/dist/components/table.js.map +1 -0
  79. package/dist/components/tabs.d.ts +9 -6
  80. package/dist/components/tabs.js +2 -54
  81. package/dist/components/tabs.js.map +1 -0
  82. package/dist/components/tag.d.ts +3 -1
  83. package/dist/components/tag.js +2 -189
  84. package/dist/components/tag.js.map +1 -0
  85. package/dist/components/tooltip.js +2 -58
  86. package/dist/components/tooltip.js.map +1 -0
  87. package/dist/components/typography.js +2 -78
  88. package/dist/components/typography.js.map +1 -0
  89. package/dist/hooks/index.d.ts +7 -0
  90. package/dist/hooks/index.js +2 -0
  91. package/dist/hooks/index.js.map +1 -0
  92. package/dist/index.css +2 -2322
  93. package/dist/index.css.map +1 -0
  94. package/dist/logo-PQRZORCS.js +3 -0
  95. package/dist/logo-PQRZORCS.js.map +1 -0
  96. package/package.json +41 -8
  97. package/src/components/calendar.tsx +7 -6
  98. package/src/components/chip.tsx +11 -3
  99. package/src/components/date-picker.tsx +125 -22
  100. package/src/components/icon.tsx +1 -1
  101. package/src/components/input.tsx +124 -60
  102. package/src/components/logo.tsx +25 -20
  103. package/src/components/rich-editor.tsx +4 -3
  104. package/src/components/select.tsx +104 -26
  105. package/src/components/tabs.tsx +56 -37
  106. package/src/components/tag.tsx +11 -3
  107. package/src/index.css +2 -2
  108. package/src/resources/logo/index.tsx +33 -0
  109. package/tsup.config.ts +23 -5
  110. package/dist/components/test.d.ts +0 -5
  111. package/dist/components/test.js +0 -8
  112. package/dist/index.js +0 -0
  113. package/src/components/test.tsx +0 -3
  114. package/src/index.ts +0 -1
  115. package/src/resources/logo/index.ts +0 -3
@@ -1,65 +1,117 @@
1
1
 
2
- > @xjur-ui/react@1.0.5 build
2
+ > @xjur-ui/react@1.0.6 build
3
3
  > tsup
4
4
 
5
- CLI Building entry: src/index.ts, src/components/avatar-group.tsx, src/components/avatar.tsx, src/components/badge.tsx, src/components/button.tsx, src/components/calendar.tsx, src/components/checkbox.tsx, src/components/chip.tsx, src/components/collapsible.tsx, src/components/date-picker.tsx, src/components/divider.tsx, src/components/dropdown-menu.tsx, src/components/icon.tsx, src/components/input.tsx, src/components/list.tsx, src/components/logo.tsx, src/components/otp-input.tsx, src/components/radio.tsx, src/components/rich-editor.tsx, src/components/search-input.tsx, src/components/select.tsx, src/components/sheet.tsx, src/components/skeleton.tsx, src/components/status.tsx, src/components/switch.tsx, src/components/table.tsx, src/components/tabs.tsx, src/components/tag.tsx, src/components/test.tsx, src/components/tooltip.tsx, src/components/typography.tsx
5
+ CLI Building entry: src/index.css, src/components/avatar-group.tsx, src/components/avatar.tsx, src/components/badge.tsx, src/components/button.tsx, src/components/calendar.tsx, src/components/checkbox.tsx, src/components/chip.tsx, src/components/collapsible.tsx, src/components/date-picker.tsx, src/components/divider.tsx, src/components/dropdown-menu.tsx, src/components/icon.tsx, src/components/input.tsx, src/components/list.tsx, src/components/logo.tsx, src/components/otp-input.tsx, src/components/radio.tsx, src/components/rich-editor.tsx, src/components/search-input.tsx, src/components/select.tsx, src/components/sheet.tsx, src/components/skeleton.tsx, src/components/status.tsx, src/components/switch.tsx, src/components/table.tsx, src/components/tabs.tsx, src/components/tag.tsx, src/components/tooltip.tsx, src/components/typography.tsx, src/hooks/index.ts
6
6
  CLI Using tsconfig: tsconfig.json
7
7
  CLI tsup v8.5.0
8
8
  CLI Using tsup config: /home/vsts/work/1/s/packages/react/tsup.config.ts
9
- CLI Target: es2022
9
+ CLI Target: esnext
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  DTS Build start
13
- ESM dist/index.js 0 B
14
- ESM dist/components/divider.js 708.00 B
15
- ESM dist/index.css 63.26 KB
16
- ESM dist/components/dropdown-menu.js 7.23 KB
17
- ESM dist/components/icon.js 2.80 KB
18
- ESM dist/components/input.js 8.04 KB
19
- ESM dist/components/list.js 4.34 KB
20
- ESM dist/components/logo.js 20.93 KB
21
- ESM dist/components/otp-input.js 993.00 B
22
- ESM dist/components/rich-editor.js 20.54 KB
23
- ESM dist/components/search-input.js 7.67 KB
24
- ESM dist/components/radio.js 4.52 KB
25
- ESM dist/components/select.js 15.37 KB
26
- ESM dist/components/sheet.js 6.89 KB
27
- ESM dist/components/skeleton.js 349.00 B
28
- ESM dist/components/status.js 3.09 KB
29
- ESM dist/components/switch.js 1.13 KB
30
- ESM dist/components/table.js 4.35 KB
31
- ESM dist/components/tabs.js 1.43 KB
32
- ESM dist/components/tag.js 4.77 KB
33
- ESM dist/components/test.js 166.00 B
34
- ESM dist/components/typography.js 2.21 KB
35
- ESM dist/components/tooltip.js 1.96 KB
36
- ESM dist/components/badge.js 3.08 KB
37
- ESM dist/components/button.js 2.73 KB
38
- ESM dist/components/calendar.js 19.27 KB
39
- ESM dist/components/checkbox.js 4.64 KB
40
- ESM dist/components/chip.js 6.49 KB
41
- ESM dist/components/collapsible.js 998.00 B
42
- ESM dist/components/date-picker.js 6.87 KB
43
- ESM dist/components/avatar-group.js 4.98 KB
44
- ESM dist/components/avatar.js 1.38 KB
45
- ESM ⚡️ Build success in 1464ms
46
- DTS ⚡️ Build success in 8066ms
13
+ ESM dist/index.css 56.11 KB
14
+ ESM dist/index.css.map 109.62 KB
15
+ ESM dist/components/switch.js 888.00 B
16
+ ESM dist/hooks/index.js 112.00 B
17
+ ESM dist/components/table.js 2.52 KB
18
+ ESM dist/components/tabs.js 1.40 KB
19
+ ESM dist/components/tag.js 1.58 KB
20
+ ESM dist/components/tooltip.js 179.00 B
21
+ ESM dist/components/typography.js 127.00 B
22
+ ESM dist/logo-PQRZORCS.js 16.75 KB
23
+ ESM dist/components/otp-input.js 665.00 B
24
+ ESM dist/components/radio.js 1.50 KB
25
+ ESM dist/components/rich-editor.js 5.94 KB
26
+ ESM dist/chunk-NELCN6E2.js 1.45 KB
27
+ ESM dist/chunk-KS6WGBHQ.js 489.00 B
28
+ ESM dist/components/search-input.js 305.00 B
29
+ ESM dist/components/select.js 5.76 KB
30
+ ESM dist/chunk-NPTLORW5.js 1.86 KB
31
+ ESM dist/components/sheet.js 2.59 KB
32
+ ESM dist/components/skeleton.js 291.00 B
33
+ ESM dist/components/status.js 714.00 B
34
+ ESM dist/components/collapsible.js 642.00 B
35
+ ESM dist/components/date-picker.js 5.10 KB
36
+ ESM dist/components/divider.js 118.00 B
37
+ ESM dist/components/dropdown-menu.js 452.00 B
38
+ ESM dist/chunk-RWMV7APX.js 1.34 KB
39
+ ESM dist/chunk-CBFC4QME.js 565.00 B
40
+ ESM dist/components/icon.js 120.00 B
41
+ ESM dist/components/input.js 6.38 KB
42
+ ESM dist/components/list.js 210.00 B
43
+ ESM dist/chunk-KIFR5VIE.js 1.43 KB
44
+ ESM dist/components/logo.js 631.00 B
45
+ ESM dist/components/avatar-group.js 853.00 B
46
+ ESM dist/components/avatar.js 156.00 B
47
+ ESM dist/components/badge.js 705.00 B
48
+ ESM dist/components/button.js 135.00 B
49
+ ESM dist/components/calendar.js 9.35 KB
50
+ ESM dist/chunk-FASEHVMD.js 2.03 KB
51
+ ESM dist/components/checkbox.js 1.31 KB
52
+ ESM dist/components/chip.js 1.83 KB
53
+ ESM dist/chunk-TB6KI6CL.js 997.00 B
54
+ ESM dist/chunk-EIG6CBTQ.js 1.62 KB
55
+ ESM dist/chunk-SHHXKVVR.js 2.19 KB
56
+ ESM dist/components/switch.js.map 1.59 KB
57
+ ESM dist/hooks/index.js.map 69.00 B
58
+ ESM dist/components/table.js.map 6.37 KB
59
+ ESM dist/components/tabs.js.map 3.53 KB
60
+ ESM dist/components/tag.js.map 3.98 KB
61
+ ESM dist/components/tooltip.js.map 71.00 B
62
+ ESM dist/components/typography.js.map 74.00 B
63
+ ESM dist/logo-PQRZORCS.js.map 22.88 KB
64
+ ESM dist/components/otp-input.js.map 1.79 KB
65
+ ESM dist/components/radio.js.map 3.58 KB
66
+ ESM dist/components/rich-editor.js.map 18.85 KB
67
+ ESM dist/chunk-NELCN6E2.js.map 3.40 KB
68
+ ESM dist/chunk-KS6WGBHQ.js.map 1.56 KB
69
+ ESM dist/components/search-input.js.map 76.00 B
70
+ ESM dist/components/select.js.map 14.56 KB
71
+ ESM dist/chunk-NPTLORW5.js.map 5.12 KB
72
+ ESM dist/components/sheet.js.map 6.60 KB
73
+ ESM dist/components/skeleton.js.map 685.00 B
74
+ ESM dist/components/status.js.map 1.82 KB
75
+ ESM dist/components/collapsible.js.map 1.66 KB
76
+ ESM dist/components/date-picker.js.map 12.22 KB
77
+ ESM dist/components/divider.js.map 71.00 B
78
+ ESM dist/components/dropdown-menu.js.map 77.00 B
79
+ ESM dist/chunk-RWMV7APX.js.map 4.69 KB
80
+ ESM dist/chunk-CBFC4QME.js.map 1.17 KB
81
+ ESM dist/components/icon.js.map 68.00 B
82
+ ESM dist/components/input.js.map 17.25 KB
83
+ ESM dist/components/list.js.map 68.00 B
84
+ ESM dist/chunk-KIFR5VIE.js.map 4.14 KB
85
+ ESM dist/components/logo.js.map 2.05 KB
86
+ ESM dist/components/avatar-group.js.map 3.28 KB
87
+ ESM dist/components/avatar.js.map 70.00 B
88
+ ESM dist/components/badge.js.map 1.73 KB
89
+ ESM dist/components/button.js.map 70.00 B
90
+ ESM dist/components/calendar.js.map 32.68 KB
91
+ ESM dist/chunk-FASEHVMD.js.map 4.48 KB
92
+ ESM dist/components/checkbox.js.map 2.97 KB
93
+ ESM dist/components/chip.js.map 4.95 KB
94
+ ESM dist/chunk-TB6KI6CL.js.map 2.29 KB
95
+ ESM dist/chunk-EIG6CBTQ.js.map 4.63 KB
96
+ ESM dist/chunk-SHHXKVVR.js.map 4.94 KB
97
+ ESM ⚡️ Build success in 1977ms
98
+ DTS ⚡️ Build success in 7452ms
47
99
  DTS dist/index.d.ts 13.00 B
48
100
  DTS dist/components/avatar-group.d.ts 815.00 B
49
101
  DTS dist/components/badge.d.ts 607.00 B
50
102
  DTS dist/components/calendar.d.ts 448.00 B
51
103
  DTS dist/components/checkbox.d.ts 305.00 B
52
- DTS dist/components/chip.d.ts 1.36 KB
104
+ DTS dist/components/chip.d.ts 1.40 KB
53
105
  DTS dist/components/avatar.d.ts 669.00 B
54
106
  DTS dist/components/collapsible.d.ts 645.00 B
55
- DTS dist/components/date-picker.d.ts 1.35 KB
107
+ DTS dist/components/date-picker.d.ts 1.65 KB
56
108
  DTS dist/components/dropdown-menu.d.ts 1.97 KB
57
109
  DTS dist/components/divider.d.ts 336.00 B
58
110
  DTS dist/components/logo.d.ts 373.00 B
59
111
  DTS dist/components/otp-input.d.ts 662.00 B
60
112
  DTS dist/components/radio.d.ts 531.00 B
61
- DTS dist/components/rich-editor.d.ts 1.73 KB
62
- DTS dist/components/select.d.ts 2.48 KB
113
+ DTS dist/components/rich-editor.d.ts 1.76 KB
114
+ DTS dist/components/select.d.ts 2.61 KB
63
115
  DTS dist/components/list.d.ts 1.28 KB
64
116
  DTS dist/components/search-input.d.ts 1.10 KB
65
117
  DTS dist/components/button.d.ts 872.00 B
@@ -68,10 +120,10 @@ DTS dist/components/skeleton.d.ts 225.00 B
68
120
  DTS dist/components/status.d.ts 701.00 B
69
121
  DTS dist/components/switch.d.ts 300.00 B
70
122
  DTS dist/components/table.d.ts 1.28 KB
71
- DTS dist/components/tabs.d.ts 737.00 B
72
- DTS dist/components/tag.d.ts 1.07 KB
73
- DTS dist/components/test.d.ts 131.00 B
123
+ DTS dist/components/tabs.d.ts 895.00 B
124
+ DTS dist/components/tag.d.ts 1.11 KB
74
125
  DTS dist/components/tooltip.d.ts 808.00 B
75
126
  DTS dist/components/typography.d.ts 993.00 B
76
- DTS dist/components/input.d.ts 2.12 KB
127
+ DTS dist/hooks/index.d.ts 157.00 B
128
+ DTS dist/components/input.d.ts 2.34 KB
77
129
  DTS dist/components/icon.d.ts 2.32 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # @xjur-ui/react
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 68931a9: BREAKING: Bundle size optimization and performance improvements
8
+
9
+ ## Major Changes (@xjur-ui/react)
10
+
11
+ ### Performance Optimizations
12
+ - **Bundle size reduced by 88%** (from 436KB to 52.3KB)
13
+ - **All 29 components now within size limits** (previously 18/29)
14
+ - **Logo component optimized** with lazy loading (21KB → 631B)
15
+ - **Tree-shaking improvements** with individual component exports
16
+
17
+ ### Bundle Structure Changes
18
+ - Individual component imports now required for optimal performance
19
+ - Essential CSS bundle added for minimal footprint
20
+ - React.lazy implementation for heavy components
21
+ - External dependencies optimized (React, Radix UI externalized)
22
+
23
+ ### Breaking Changes
24
+ - Some import paths may have changed due to bundle optimization
25
+ - CSS import structure updated (essential.css added)
26
+ - Component lazy loading may affect SSR in some cases
27
+
28
+ ## Minor Changes (Other Packages)
29
+
30
+ ### Documentation
31
+ - Added comprehensive README.md for all packages (Portuguese)
32
+ - Updated CLAUDE.md with new bundle size management info
33
+ - Added Storybook documentation guidelines
34
+
35
+ ### Tooling
36
+ - Bundle size monitoring system with automated CI checks
37
+ - Azure Pipeline integration with size limit enforcement
38
+ - Performance regression detection and historical tracking
39
+
40
+ ### Patch Changes
41
+
42
+ - 2877d3c: Remove componente de teste
43
+ - Updated dependencies [68931a9]
44
+ - @xjur-ui/styles@1.0.3
45
+ - @xjur-ui/util@1.0.3
46
+
3
47
  ## 1.0.6
4
48
 
5
49
  ### Patch Changes
package/README.md ADDED
@@ -0,0 +1,146 @@
1
+ # @xjur-ui/react
2
+
3
+ Biblioteca de componentes React para o XJur Design System, construída com foco em acessibilidade usando primitivos do Radix UI e estilizada com TailwindCSS.
4
+
5
+ ## Instalação
6
+
7
+ ```bash
8
+ npm install @xjur-ui/react
9
+ ```
10
+
11
+ ### Dependências Obrigatórias (Peer Dependencies)
12
+
13
+ Certifique-se de ter as dependências necessárias instaladas:
14
+
15
+ ```bash
16
+ npm install react react-dom
17
+ ```
18
+
19
+ ### Plugins do Tailwind Opcionais (recomendado)
20
+
21
+ Para suporte aprimorado a scrollbar e animações:
22
+
23
+ ```bash
24
+ npm install tailwind-scrollbar tailwind-scrollbar-hide tw-animate-css
25
+ ```
26
+
27
+ ## Uso
28
+
29
+ ### Configuração Básica
30
+
31
+ Importe os estilos base na sua aplicação:
32
+
33
+ ```tsx
34
+ import '@xjur-ui/react/styles'
35
+ // ou use apenas os estilos essenciais (bundle menor)
36
+ import '@xjur-ui/react/essential'
37
+ ```
38
+
39
+ ### Uso dos Componentes
40
+
41
+ Os componentes podem ser importados individualmente para melhor tree-shaking:
42
+
43
+ ```tsx
44
+ import { Button } from '@xjur-ui/react/button'
45
+ import { Input } from '@xjur-ui/react/input'
46
+ import { Calendar } from '@xjur-ui/react/calendar'
47
+
48
+ function App() {
49
+ return (
50
+ <div>
51
+ <Button variant="primary">Clique aqui</Button>
52
+ <Input placeholder="Digite aqui..." />
53
+ <Calendar />
54
+ </div>
55
+ )
56
+ }
57
+ ```
58
+
59
+ ### Componentes Disponíveis
60
+
61
+ | Componente | Import | Tamanho | Descrição |
62
+ |------------|--------|---------|-----------|
63
+ | Avatar | `@xjur-ui/react/avatar` | ~2KB | Fotos de perfil de usuário |
64
+ | Avatar Group | `@xjur-ui/react/avatar-group` | ~1.5KB | Exibição de múltiplos avatars |
65
+ | Badge | `@xjur-ui/react/badge` | ~1.5KB | Indicadores de status |
66
+ | Button | `@xjur-ui/react/button` | ~3KB | Botões interativos |
67
+ | Calendar | `@xjur-ui/react/calendar` | ~18KB | Seleção de datas |
68
+ | Checkbox | `@xjur-ui/react/checkbox` | ~2.5KB | Caixas de seleção |
69
+ | Chip | `@xjur-ui/react/chip` | ~2KB | Tags removíveis |
70
+ | Collapsible | `@xjur-ui/react/collapsible` | ~3KB | Conteúdo expansível |
71
+ | Date Picker | `@xjur-ui/react/date-picker` | ~20KB | Campo de data com calendário |
72
+ | Divider | `@xjur-ui/react/divider` | ~1KB | Separadores de conteúdo |
73
+ | Dropdown Menu | `@xjur-ui/react/dropdown-menu` | ~8KB | Menus de contexto |
74
+ | Icon | `@xjur-ui/react/icon` | ~1.5KB | Ícones SVG |
75
+ | Input | `@xjur-ui/react/input` | ~8KB | Campos de formulário |
76
+ | List | `@xjur-ui/react/list` | ~3KB | Listas estruturadas |
77
+ | Logo | `@xjur-ui/react/logo` | ~1KB | Logos da XJur (carregamento lazy) |
78
+ | OTP Input | `@xjur-ui/react/otp-input` | ~4KB | Campo para código de verificação |
79
+ | Radio | `@xjur-ui/react/radio` | ~3KB | Grupos de botões radio |
80
+ | Rich Editor | `@xjur-ui/react/rich-editor` | ~45KB | Editor de texto WYSIWYG |
81
+ | Search Input | `@xjur-ui/react/search-input` | ~6KB | Busca com sugestões |
82
+ | Select | `@xjur-ui/react/select` | ~12KB | Seleções dropdown |
83
+ | Sheet | `@xjur-ui/react/sheet` | ~6KB | Painéis laterais/modais |
84
+ | Skeleton | `@xjur-ui/react/skeleton` | ~1.5KB | Placeholders de carregamento |
85
+ | Status | `@xjur-ui/react/status` | ~2KB | Indicadores de status |
86
+ | Switch | `@xjur-ui/react/switch` | ~2.5KB | Interruptores toggle |
87
+ | Table | `@xjur-ui/react/table` | ~8KB | Tabelas de dados |
88
+ | Tabs | `@xjur-ui/react/tabs` | ~4KB | Navegação por abas |
89
+ | Tag | `@xjur-ui/react/tag` | ~2.5KB | Etiquetas e tags |
90
+ | Tooltip | `@xjur-ui/react/tooltip` | ~4KB | Tooltips contextuais |
91
+ | Typography | `@xjur-ui/react/typography` | ~2KB | Componentes de texto |
92
+
93
+ ### Hooks
94
+
95
+ Hooks utilitários estão disponíveis separadamente:
96
+
97
+ ```tsx
98
+ import { useTheme } from '@xjur-ui/react/hooks'
99
+ ```
100
+
101
+ ## Otimização de Bundle
102
+
103
+ - **Imports individuais**: Cada componente é exportado separadamente para tree-shaking otimizado
104
+ - **Carregamento lazy**: Componentes pesados como Logo usam React.lazy automaticamente
105
+ - **Bundle mínimo**: Bundle CSS essencial disponível para menor footprint
106
+ - **Dependências externas**: React, React-DOM e Radix UI são externalizados
107
+
108
+ ## Suporte ao TypeScript
109
+
110
+ Suporte completo ao TypeScript com definições de tipos exportadas. Componentes incluem tipagem adequada para todas as props e variantes.
111
+
112
+ ```tsx
113
+ import type { ButtonProps } from '@xjur-ui/react/button'
114
+
115
+ const CustomButton: React.FC<ButtonProps> = (props) => {
116
+ return <Button {...props} />
117
+ }
118
+ ```
119
+
120
+ ## Desenvolvimento
121
+
122
+ ```bash
123
+ # Instalar dependências
124
+ npm install
125
+
126
+ # Iniciar servidor de desenvolvimento
127
+ npm run dev
128
+
129
+ # Build do pacote
130
+ npm run build
131
+
132
+ # Verificar tamanhos de bundle
133
+ npm run test:size
134
+ ```
135
+
136
+ ## Performance
137
+
138
+ Este pacote foi otimizado para performance com:
139
+ - Bundle size total reduzido em 88% (de 436KB para 52.3KB)
140
+ - Todos os 29 componentes dentro dos limites de tamanho
141
+ - Lazy loading para componentes pesados
142
+ - Tree-shaking eficiente para importações individuais
143
+
144
+ ## Licença
145
+
146
+ Licenciado sob a Licença MIT.
@@ -0,0 +1,2 @@
1
+ import'react';import*as t from'@radix-ui/react-separator';import {cx}from'@xjur-ui/util';import {jsx}from'react/jsx-runtime';function m({className:o,orientation:r="horizontal",decorative:a=true,...i}){return jsx(t.Root,{className:cx("bg-border-layer-2 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full","data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",o),"data-slot":"separator",decorative:a,orientation:r,...i})}export{m as a};//# sourceMappingURL=chunk-CBFC4QME.js.map
2
+ //# sourceMappingURL=chunk-CBFC4QME.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/divider.tsx"],"names":["Divider","className","orientation","decorative","props","jsx","cx"],"mappings":"6HAIO,SAASA,CAAAA,CAAQ,CACtB,SAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CAAc,YAAA,CACd,WAAAC,CAAAA,CAAa,IAAA,CACb,GAAGC,CACL,CAAA,CAAyD,CACvD,OACEC,GAAAA,CAAoB,OAAnB,CACC,SAAA,CAAWC,GACT,oGAAA,CACA,qEAAA,CACAL,CACF,CAAA,CACA,WAAA,CAAU,YACV,UAAA,CAAYE,CAAAA,CACZ,YAAaD,CAAAA,CACZ,GAAGE,EACN,CAEJ","file":"chunk-CBFC4QME.js","sourcesContent":["import * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cx } from '@xjur-ui/util'\n\nexport function Divider({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n className={cx(\n 'bg-border-layer-2 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full',\n 'data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className\n )}\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n {...props}\n />\n )\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {Slot}from'@radix-ui/react-slot';import {cva}from'@xjur-ui/util';import {memo}from'react';import {jsx}from'react/jsx-runtime';var m=cva("",{variants:{variant:{body:"",label:"",title:"",headline:""},size:{"sm-2x":"","sm-1x":"",sm:"",md:"",lg:""},weight:{thin:"font-thin",extraLight:"font-extralight",light:"font-light",normal:"font-normal",medium:"font-medium",semibold:"font-semibold",bold:"font-bold",extraBold:"font-extrabold",black:"font-black"}},compoundVariants:[{variant:"body",size:"sm-1x",class:"text-size-body-sm-1x"},{variant:"body",size:"sm",class:"text-size-body-sm"},{variant:"body",size:"md",class:"text-size-body-md"},{variant:"body",size:"lg",class:"text-size-body-lg"},{variant:"label",size:"sm-2x",class:"text-size-label-sm-2x"},{variant:"label",size:"sm-1x",class:"text-size-label-sm-1x"},{variant:"label",size:"sm",class:"text-size-label-sm"},{variant:"label",size:"md",class:"text-size-label-md"},{variant:"label",size:"lg",class:"text-size-label-lg"},{variant:"title",size:"sm",class:"text-size-title-sm"},{variant:"title",size:"md",class:"text-size-title-md"},{variant:"title",size:"lg",class:"text-size-title-lg"},{variant:"headline",size:"sm",class:"text-size-headline-sm"},{variant:"headline",size:"md",class:"text-size-headline-md"},{variant:"headline",size:"lg",class:"text-size-headline-lg"}],defaultVariants:{variant:"body",size:"md",weight:"normal"}}),d=memo(({variant:t,size:a,weight:e,asChild:s,className:i,...l})=>jsx(s?Slot:"span",{className:m({variant:t,size:a,weight:e,className:i}),...l}));d.displayName="Typography";export{d as a};//# sourceMappingURL=chunk-EIG6CBTQ.js.map
2
+ //# sourceMappingURL=chunk-EIG6CBTQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/typography.tsx"],"names":["typographyVariants","cva","Typography","memo","variant","size","weight","asChild","className","props","jsx","Slot"],"mappings":"qIAIA,IAAMA,CAAAA,CAAqBC,GAAAA,CAAI,EAAA,CAAI,CACjC,QAAA,CAAU,CACR,OAAA,CAAS,CACP,IAAA,CAAM,EAAA,CACN,KAAA,CAAO,EAAA,CACP,KAAA,CAAO,GACP,QAAA,CAAU,EACZ,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,EAAA,CACT,OAAA,CAAS,EAAA,CACT,EAAA,CAAI,EAAA,CACJ,EAAA,CAAI,EAAA,CACJ,EAAA,CAAI,EACN,CAAA,CACA,MAAA,CAAQ,CACN,IAAA,CAAM,WAAA,CACN,UAAA,CAAY,iBAAA,CACZ,KAAA,CAAO,YAAA,CACP,MAAA,CAAQ,aAAA,CACR,MAAA,CAAQ,aAAA,CACR,QAAA,CAAU,eAAA,CACV,KAAM,WAAA,CACN,SAAA,CAAW,gBAAA,CACX,KAAA,CAAO,YACT,CACF,CAAA,CACA,gBAAA,CAAkB,CAChB,CAAE,OAAA,CAAS,MAAA,CAAQ,IAAA,CAAM,OAAA,CAAS,MAAO,sBAAuB,CAAA,CAChE,CAAE,OAAA,CAAS,MAAA,CAAQ,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,mBAAoB,CAAA,CAC1D,CAAE,OAAA,CAAS,MAAA,CAAQ,IAAA,CAAM,KAAM,KAAA,CAAO,mBAAoB,CAAA,CAC1D,CAAE,OAAA,CAAS,MAAA,CAAQ,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,mBAAoB,CAAA,CAE1D,CAAE,OAAA,CAAS,OAAA,CAAS,IAAA,CAAM,OAAA,CAAS,KAAA,CAAO,uBAAwB,CAAA,CAClE,CAAE,OAAA,CAAS,OAAA,CAAS,IAAA,CAAM,OAAA,CAAS,KAAA,CAAO,uBAAwB,CAAA,CAClE,CAAE,OAAA,CAAS,OAAA,CAAS,KAAM,IAAA,CAAM,KAAA,CAAO,oBAAqB,CAAA,CAC5D,CAAE,OAAA,CAAS,OAAA,CAAS,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,oBAAqB,CAAA,CAC5D,CAAE,OAAA,CAAS,QAAS,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,oBAAqB,CAAA,CAE5D,CAAE,OAAA,CAAS,OAAA,CAAS,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,oBAAqB,CAAA,CAC5D,CAAE,QAAS,OAAA,CAAS,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,oBAAqB,CAAA,CAC5D,CAAE,OAAA,CAAS,OAAA,CAAS,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,oBAAqB,CAAA,CAE5D,CAAE,OAAA,CAAS,UAAA,CAAY,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,uBAAwB,CAAA,CAClE,CAAE,OAAA,CAAS,UAAA,CAAY,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,uBAAwB,CAAA,CAClE,CAAE,OAAA,CAAS,UAAA,CAAY,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,uBAAwB,CACpE,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,MAAA,CACT,IAAA,CAAM,IAAA,CACN,MAAA,CAAQ,QACV,CACF,CAAC,CAAA,CAQYC,CAAAA,CAAaC,IAAAA,CACxB,CAAC,CACC,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,GAIIC,GAAAA,CAHgBH,CAAAA,CAAUI,IAAAA,CAAO,MAAA,CAGhC,CACC,SAAA,CAAWX,CAAAA,CAAmB,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,MAAA,CAAAC,CAAAA,CAAQ,SAAA,CAAAE,CAAU,CAAC,CAAA,CACjE,GAAGC,CAAAA,CACN,CAGN,EAEAP,CAAAA,CAAW,WAAA,CAAc,YAAA","file":"chunk-EIG6CBTQ.js","sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport { cva, type ClassVariantProps } from '@xjur-ui/util'\nimport { memo, type ComponentProps } from 'react'\n\nconst typographyVariants = cva('', {\n variants: {\n variant: {\n body: '',\n label: '',\n title: '',\n headline: ''\n },\n size: {\n 'sm-2x': '',\n 'sm-1x': '',\n sm: '',\n md: '',\n lg: ''\n },\n weight: {\n thin: 'font-thin',\n extraLight: 'font-extralight',\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extraBold: 'font-extrabold',\n black: 'font-black'\n }\n },\n compoundVariants: [\n { variant: 'body', size: 'sm-1x', class: 'text-size-body-sm-1x' },\n { variant: 'body', size: 'sm', class: 'text-size-body-sm' },\n { variant: 'body', size: 'md', class: 'text-size-body-md' },\n { variant: 'body', size: 'lg', class: 'text-size-body-lg' },\n\n { variant: 'label', size: 'sm-2x', class: 'text-size-label-sm-2x' },\n { variant: 'label', size: 'sm-1x', class: 'text-size-label-sm-1x' },\n { variant: 'label', size: 'sm', class: 'text-size-label-sm' },\n { variant: 'label', size: 'md', class: 'text-size-label-md' },\n { variant: 'label', size: 'lg', class: 'text-size-label-lg' },\n\n { variant: 'title', size: 'sm', class: 'text-size-title-sm' },\n { variant: 'title', size: 'md', class: 'text-size-title-md' },\n { variant: 'title', size: 'lg', class: 'text-size-title-lg' },\n\n { variant: 'headline', size: 'sm', class: 'text-size-headline-sm' },\n { variant: 'headline', size: 'md', class: 'text-size-headline-md' },\n { variant: 'headline', size: 'lg', class: 'text-size-headline-lg' }\n ],\n defaultVariants: {\n variant: 'body',\n size: 'md',\n weight: 'normal'\n }\n})\n\nexport interface TypographyProps\n extends ComponentProps<'base'>,\n ClassVariantProps<typeof typographyVariants> {\n asChild?: boolean\n}\n\nexport const Typography = memo(\n ({\n variant,\n size,\n weight,\n asChild,\n className,\n ...props\n }: TypographyProps) => {\n const Component = asChild ? Slot : 'span'\n\n return (\n <Component\n className={typographyVariants({ variant, size, weight, className })}\n {...props}\n />\n )\n }\n)\n\nTypography.displayName = 'Typography'\n"]}
@@ -0,0 +1,2 @@
1
+ import {Slot}from'@radix-ui/react-slot';import {cva,cx}from'@xjur-ui/util';import {jsx}from'react/jsx-runtime';var p=cva(["outline-none inline-flex items-center justify-center rounded-circle gap-small cursor-pointer disabled:opacity-38 disabled:pointer-events-none transition-colors"],{variants:{size:{md:"py-small_1x-alt px-medium text-size-body-md",sm:"py-small-1x px-small text-size-label-sm",icon_md:"p-small text-size-body-md h-large-4x w-large-4x",icon_sm:"p-small-1x text-size-label-sm h-large-2x w-large-2x"},variant:{primary:"",secondary:"",tertiary:"",destructive:"",outlined:"bg-layer-2-idle border border-border-layer-2 hover:bg-layer-2-hover active:bg-layer-2-pressed"},appearance:{solid:"",ghost:"bg-transparent"}},compoundVariants:[{variant:"primary",appearance:"solid",class:"bg-primary-idle text-neutral-label hover:bg-primary-hover active:bg-primary-pressed"},{variant:"primary",appearance:"ghost",class:"text-primary-idle hover:bg-primary-alt-idle active:bg-primary-alt-pressed"},{variant:"secondary",appearance:"solid",class:"bg-layer-1-hover text-neutral-dark hover:bg-layer-1-pressed active:bg-layer-1-active"},{variant:"secondary",appearance:"ghost",class:"hover:bg-layer-1-hover active:bg-layer-1-pressed"},{variant:"tertiary",appearance:"solid",class:"bg-layer-2-hover text-neutral-dark hover:bg-layer-2-pressed active:bg-layer-2-active"},{variant:"tertiary",appearance:"ghost",class:"hover:bg-layer-2-hover active:bg-layer-2-pressed"},{variant:"destructive",appearance:"solid",class:"bg-danger-idle text-neutral-label hover:bg-danger-hover active:bg-danger-pressed"},{variant:"destructive",appearance:"ghost",class:"text-danger-label-idle hover:bg-danger-alt-idle active:bg-danger-alt-pressed"}],defaultVariants:{size:"md",variant:"primary",appearance:"solid"}});function m({asChild:e,className:a,variant:r="primary",size:t="md",appearance:s="solid",...o}){return jsx(e?Slot:"button",{className:cx(p({variant:r,appearance:s,size:t}),a),...o})}export{p as a,m as b};//# sourceMappingURL=chunk-FASEHVMD.js.map
2
+ //# sourceMappingURL=chunk-FASEHVMD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/button.tsx"],"names":["buttonVariants","cva","Button","asChild","className","variant","size","appearance","props","jsx","Slot","cx"],"mappings":"+GAIO,IAAMA,CAAAA,CAAiBC,IAC5B,CACE,iKACF,EACA,CACE,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,EAAA,CAAI,6CAAA,CACJ,GAAI,yCAAA,CACJ,OAAA,CAAS,kDACT,OAAA,CAAS,qDACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,EAAA,CACT,UAAW,EAAA,CACX,QAAA,CAAU,GACV,WAAA,CAAa,EAAA,CACb,QAAA,CACE,+FACJ,EACA,UAAA,CAAY,CACV,MAAO,EAAA,CACP,KAAA,CAAO,gBACT,CACF,CAAA,CACA,gBAAA,CAAkB,CAChB,CACE,OAAA,CAAS,SAAA,CACT,WAAY,OAAA,CACZ,KAAA,CACE,qFACJ,CAAA,CACA,CACE,OAAA,CAAS,SAAA,CACT,WAAY,OAAA,CACZ,KAAA,CACE,2EACJ,CAAA,CACA,CACE,QAAS,WAAA,CACT,UAAA,CAAY,OAAA,CACZ,KAAA,CACE,sFACJ,CAAA,CACA,CACE,QAAS,WAAA,CACT,UAAA,CAAY,QACZ,KAAA,CAAO,kDACT,CAAA,CACA,CACE,QAAS,UAAA,CACT,UAAA,CAAY,QACZ,KAAA,CACE,sFACJ,EACA,CACE,OAAA,CAAS,UAAA,CACT,UAAA,CAAY,QACZ,KAAA,CAAO,kDACT,EACA,CACE,OAAA,CAAS,cACT,UAAA,CAAY,OAAA,CACZ,KAAA,CACE,kFACJ,EACA,CACE,OAAA,CAAS,cACT,UAAA,CAAY,OAAA,CACZ,MACE,8EACJ,CACF,CAAA,CACA,eAAA,CAAiB,CACf,IAAA,CAAM,IAAA,CACN,QAAS,SAAA,CACT,UAAA,CAAY,OACd,CACF,CACF,EAQO,SAASC,EAAO,CACrB,OAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,QAAAC,CAAAA,CAAU,SAAA,CACV,IAAA,CAAAC,CAAAA,CAAO,KACP,UAAA,CAAAC,CAAAA,CAAa,QACb,GAAGC,CACL,EAAgB,CAEd,OACEC,GAAAA,CAFgBN,CAAAA,CAAUO,KAAO,QAAA,CAEhC,CACC,UAAWC,EAAAA,CAAGX,CAAAA,CAAe,CAAE,OAAA,CAAAK,CAAAA,CAAS,WAAAE,CAAAA,CAAY,IAAA,CAAAD,CAAK,CAAC,CAAA,CAAGF,CAAS,CAAA,CACrE,GAAGI,EACN,CAEJ","file":"chunk-FASEHVMD.js","sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport type { ComponentProps } from 'react'\nimport { cva, cx, type ClassVariantProps } from '@xjur-ui/util'\n\nexport const buttonVariants = cva(\n [\n 'outline-none inline-flex items-center justify-center rounded-circle gap-small cursor-pointer disabled:opacity-38 disabled:pointer-events-none transition-colors'\n ],\n {\n variants: {\n size: {\n md: 'py-small_1x-alt px-medium text-size-body-md',\n sm: 'py-small-1x px-small text-size-label-sm',\n icon_md: 'p-small text-size-body-md h-large-4x w-large-4x',\n icon_sm: 'p-small-1x text-size-label-sm h-large-2x w-large-2x'\n },\n variant: {\n primary: '',\n secondary: '',\n tertiary: '',\n destructive: '',\n outlined:\n 'bg-layer-2-idle border border-border-layer-2 hover:bg-layer-2-hover active:bg-layer-2-pressed'\n },\n appearance: {\n solid: '',\n ghost: 'bg-transparent'\n }\n },\n compoundVariants: [\n {\n variant: 'primary',\n appearance: 'solid',\n class:\n 'bg-primary-idle text-neutral-label hover:bg-primary-hover active:bg-primary-pressed'\n },\n {\n variant: 'primary',\n appearance: 'ghost',\n class:\n 'text-primary-idle hover:bg-primary-alt-idle active:bg-primary-alt-pressed'\n },\n {\n variant: 'secondary',\n appearance: 'solid',\n class:\n 'bg-layer-1-hover text-neutral-dark hover:bg-layer-1-pressed active:bg-layer-1-active'\n },\n {\n variant: 'secondary',\n appearance: 'ghost',\n class: 'hover:bg-layer-1-hover active:bg-layer-1-pressed'\n },\n {\n variant: 'tertiary',\n appearance: 'solid',\n class:\n 'bg-layer-2-hover text-neutral-dark hover:bg-layer-2-pressed active:bg-layer-2-active'\n },\n {\n variant: 'tertiary',\n appearance: 'ghost',\n class: 'hover:bg-layer-2-hover active:bg-layer-2-pressed'\n },\n {\n variant: 'destructive',\n appearance: 'solid',\n class:\n 'bg-danger-idle text-neutral-label hover:bg-danger-hover active:bg-danger-pressed'\n },\n {\n variant: 'destructive',\n appearance: 'ghost',\n class:\n 'text-danger-label-idle hover:bg-danger-alt-idle active:bg-danger-alt-pressed'\n }\n ],\n defaultVariants: {\n size: 'md',\n variant: 'primary',\n appearance: 'solid'\n }\n }\n)\n\nexport interface ButtonProps\n extends ComponentProps<'button'>,\n ClassVariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nexport function Button({\n asChild,\n className,\n variant = 'primary',\n size = 'md',\n appearance = 'solid',\n ...props\n}: ButtonProps) {\n const Component = asChild ? Slot : 'button'\n return (\n <Component\n className={cx(buttonVariants({ variant, appearance, size }), className)}\n {...props}\n />\n )\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-EIG6CBTQ.js';import {Slot}from'@radix-ui/react-slot';import {cva,cx}from'@xjur-ui/util';import {jsx}from'react/jsx-runtime';function y({className:e,asChild:o,...a}){return jsx(o?Slot:"div",{...a,className:cx(e,"rounded-small scrollbar-hide bg-layer-2-idle border-border-layer-2 shadow-elevation-3 z-10 max-h-[400px] list-none overflow-y-auto border")})}function x({className:e,asChild:o,...a}){return jsx(o?Slot:"div",{...a,className:cx(e,"px-small pt-small-1x")})}function C({variant:e="label",size:o="sm",weight:a$1="medium",className:r,...i}){return jsx(a,{className:cx(r,"text-neutral-placeholder"),size:o,variant:e,weight:a$1,...i})}function h({className:e,asChild:o,...a}){return jsx(o?Slot:"ul",{...a,className:cx("gap-small-1x p-small flex flex-col",e)})}var m=cva(["py-medium px-small flex items-center gap-small rounded-small-1x","bg-layer-2-idle text-neutral-dark","hover:bg-layer-2-hover transition-colors duration-100 ease-out","active:bg-layer-2-pressed"],{variants:{size:{md:"h-large-4x",lg:"h-large-7x"},isActive:{true:"bg-primary-alt-active text-primary-label-active hover:bg-primary-alt-hover active:bg-primary-alt-pressed"}},defaultVariants:{size:"md",isActive:false}});function b({className:e,size:o,isActive:a,asChild:r,...i}){return jsx(r?Slot:"li",{...i,className:cx(m({size:o,isActive:a}),e)})}export{y as a,x as b,C as c,h as d,b as e};//# sourceMappingURL=chunk-KIFR5VIE.js.map
2
+ //# sourceMappingURL=chunk-KIFR5VIE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/list.tsx"],"names":["ListRoot","className","asChild","props","jsx","Slot","cx","ListHeader","ListHeaderTitle","variant","size","weight","Typography","ListContent","variants","cva","ListItem","isActive"],"mappings":"mJAKO,SAASA,EAAS,CACvB,SAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAEG,CAGD,OACEC,GAAAA,CAHWF,CAAAA,CAAUG,KAAO,KAAA,CAG3B,CACE,GAAGF,CAAAA,CACJ,SAAA,CAAWG,GACTL,CAAAA,CACA,2IACF,EACF,CAEJ,CAEO,SAASM,CAAAA,CAAW,CACzB,UAAAN,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAEG,CAED,OAAOC,GAAAA,CADMF,EAAUG,IAAAA,CAAO,KAAA,CACtB,CAAM,GAAGF,CAAAA,CAAO,UAAWG,EAAAA,CAAGL,CAAAA,CAAW,sBAAsB,CAAA,CAAG,CAC5E,CAEO,SAASO,CAAAA,CAAgB,CAC9B,OAAA,CAAAC,CAAAA,CAAU,OAAA,CACV,IAAA,CAAAC,CAAAA,CAAO,IAAA,CACP,OAAAC,GAAAA,CAAS,QAAA,CACT,UAAAV,CAAAA,CACA,GAAGE,CACL,CAAA,CAAoB,CAClB,OACEC,GAAAA,CAACQ,CAAAA,CAAA,CACC,SAAA,CAAWN,EAAAA,CAAGL,EAAW,0BAA0B,CAAA,CACnD,KAAMS,CAAAA,CACN,OAAA,CAASD,CAAAA,CACT,MAAA,CAAQE,GAAAA,CACP,GAAGR,EACN,CAEJ,CAEO,SAASU,CAAAA,CAAY,CAC1B,UAAAZ,CAAAA,CACA,OAAA,CAAAC,EACA,GAAGC,CACL,EAEG,CAGD,OACEC,IAHWF,CAAAA,CAAUG,IAAAA,CAAO,KAG3B,CACE,GAAGF,CAAAA,CACJ,SAAA,CAAWG,EAAAA,CAAG,oCAAA,CAAsCL,CAAS,CAAA,CAC/D,CAEJ,CAEA,IAAMa,CAAAA,CAAWC,IACf,CACE,iEAAA,CACA,oCACA,gEAAA,CACA,2BACF,EACA,CACE,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,GAAI,YAAA,CACJ,EAAA,CAAI,YACN,CAAA,CACA,QAAA,CAAU,CACR,KAAM,0GACR,CACF,EACA,eAAA,CAAiB,CACf,KAAM,IAAA,CACN,QAAA,CAAU,KACZ,CACF,CACF,EAEO,SAASC,CAAAA,CAAS,CACvB,SAAA,CAAAf,CAAAA,CACA,KAAAS,CAAAA,CACA,QAAA,CAAAO,CAAAA,CACA,OAAA,CAAAf,CAAAA,CACA,GAAGC,CACL,CAAA,CAGK,CAGH,OACEC,GAAAA,CAHWF,CAAAA,CAAUG,KAAO,IAAA,CAG3B,CAAM,GAAGF,CAAAA,CAAO,SAAA,CAAWG,GAAGQ,CAAAA,CAAS,CAAE,KAAAJ,CAAAA,CAAM,QAAA,CAAAO,CAAS,CAAC,CAAA,CAAGhB,CAAS,CAAA,CAAG,CAE7E","file":"chunk-KIFR5VIE.js","sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport { cx, cva, type ClassVariantProps } from '@xjur-ui/util'\nimport type { ComponentProps } from 'react'\nimport { type TypographyProps, Typography } from './typography'\n\nexport function ListRoot({\n className,\n asChild,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n {...props}\n className={cx(\n className,\n 'rounded-small scrollbar-hide bg-layer-2-idle border-border-layer-2 shadow-elevation-3 z-10 max-h-[400px] list-none overflow-y-auto border'\n )}\n />\n )\n}\n\nexport function ListHeader({\n className,\n asChild,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'div'\n return <Comp {...props} className={cx(className, 'px-small pt-small-1x')} />\n}\n\nexport function ListHeaderTitle({\n variant = 'label',\n size = 'sm',\n weight = 'medium',\n className,\n ...props\n}: TypographyProps) {\n return (\n <Typography\n className={cx(className, 'text-neutral-placeholder')}\n size={size}\n variant={variant}\n weight={weight}\n {...props}\n />\n )\n}\n\nexport function ListContent({\n className,\n asChild,\n ...props\n}: ComponentProps<'ul'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'ul'\n\n return (\n <Comp\n {...props}\n className={cx('gap-small-1x p-small flex flex-col', className)}\n />\n )\n}\n\nconst variants = cva(\n [\n 'py-medium px-small flex items-center gap-small rounded-small-1x',\n 'bg-layer-2-idle text-neutral-dark',\n 'hover:bg-layer-2-hover transition-colors duration-100 ease-out',\n 'active:bg-layer-2-pressed'\n ],\n {\n variants: {\n size: {\n md: 'h-large-4x',\n lg: 'h-large-7x'\n },\n isActive: {\n true: 'bg-primary-alt-active text-primary-label-active hover:bg-primary-alt-hover active:bg-primary-alt-pressed'\n }\n },\n defaultVariants: {\n size: 'md',\n isActive: false\n }\n }\n)\n\nexport function ListItem({\n className,\n size,\n isActive,\n asChild,\n ...props\n}: ComponentProps<'li'> &\n ClassVariantProps<typeof variants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'li'\n\n return (\n <Comp {...props} className={cx(variants({ size, isActive }), className)} />\n )\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useEffect}from'react';function i(){let[o,e]=useState("unknown");return useEffect(()=>{if(typeof window>"u")return;let n=window.navigator.userAgent;/iPad|iPhone|iPod/.test(n)?e("ios"):/Mac/.test(n)?e("macos"):/Win/.test(n)?e("windows"):/Android/.test(n)?e("android"):/Linux/.test(n)?e("linux"):e("unknown");},[]),{os:o,shortcut:["macos","ios"].includes(o)?"\u2318":"Ctrl"}}export{i as a};//# sourceMappingURL=chunk-KS6WGBHQ.js.map
2
+ //# sourceMappingURL=chunk-KS6WGBHQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-os.ts"],"names":["useOS","os","setOs","useState","useEffect","userAgent"],"mappings":"uCAIO,SAASA,GAAQ,CACtB,GAAM,CAACC,CAAAA,CAAIC,CAAK,CAAA,CAAIC,QAAAA,CAAa,SAAS,CAAA,CAE1C,OAAAC,UAAU,IAAM,CACd,GAAI,OAAO,OAAW,GAAA,CAAa,OAEnC,IAAMC,CAAAA,CAAY,MAAA,CAAO,UAAU,SAAA,CAE/B,kBAAA,CAAmB,IAAA,CAAKA,CAAS,EACnCH,CAAAA,CAAM,KAAK,EACF,KAAA,CAAM,IAAA,CAAKG,CAAS,CAAA,CAC7BH,CAAAA,CAAM,OAAO,CAAA,CACJ,MAAM,IAAA,CAAKG,CAAS,EAC7BH,CAAAA,CAAM,SAAS,EACN,SAAA,CAAU,IAAA,CAAKG,CAAS,CAAA,CACjCH,EAAM,SAAS,CAAA,CACN,QAAQ,IAAA,CAAKG,CAAS,EAC/BH,CAAAA,CAAM,OAAO,CAAA,CAEbA,CAAAA,CAAM,SAAS,EAEnB,CAAA,CAAG,EAAE,CAAA,CAEE,CACL,EAAA,CAAAD,CAAAA,CACA,SAAU,CAAC,OAAA,CAAS,KAAK,CAAA,CAAE,QAAA,CAASA,CAAE,CAAA,CAAI,QAAA,CAAM,MAClD,CACF","file":"chunk-KS6WGBHQ.js","sourcesContent":["import { useState, useEffect } from 'react'\n\nexport type OS = 'ios' | 'macos' | 'windows' | 'android' | 'linux' | 'unknown'\n\nexport function useOS() {\n const [os, setOs] = useState<OS>('unknown')\n\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const userAgent = window.navigator.userAgent\n\n if (/iPad|iPhone|iPod/.test(userAgent)) {\n setOs('ios')\n } else if (/Mac/.test(userAgent)) {\n setOs('macos')\n } else if (/Win/.test(userAgent)) {\n setOs('windows')\n } else if (/Android/.test(userAgent)) {\n setOs('android')\n } else if (/Linux/.test(userAgent)) {\n setOs('linux')\n } else {\n setOs('unknown')\n }\n }, [])\n\n return {\n os,\n shortcut: ['macos', 'ios'].includes(os) ? '⌘' : 'Ctrl'\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import*as t from'@radix-ui/react-tooltip';import {cx}from'@xjur-ui/util';import {jsx}from'react/jsx-runtime';function d({delayDuration:i=0,...a}){return jsx(t.Provider,{"data-slot":"tooltip-provider",delayDuration:i,...a})}function m({...i}){return jsx(d,{children:jsx(t.Root,{"data-slot":"tooltip",...i})})}function s({...i}){return jsx(t.Trigger,{"data-slot":"tooltip-trigger",...i})}function v({className:i,sideOffset:a=1,variant:r="simple",children:e,...l}){return jsx(t.Portal,{children:jsx(t.Content,{className:cx("text-size-body-sm text-balance","data-[variant=simple]:bg-alt-2 data-[variant=simple]:text-neutral-label data-[variant=simple]:rounded-small-1x data-[variant=simple]:px-small data-[variant=simple]:py-small-1x","data-[variant=rich]:bg-layer-2-idle data-[variant=rich]:text-neutral-dark data-[variant=rich]:rounded-small data-[variant=rich]:border-border-layer-2 data-[variant=rich]:p-large data-[variant=rich]:border","animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin)",i),"data-slot":"tooltip-content","data-variant":r,sideOffset:a,...l,children:e})})}export{d as a,m as b,s as c,v as d};//# sourceMappingURL=chunk-NELCN6E2.js.map
2
+ //# sourceMappingURL=chunk-NELCN6E2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/tooltip.tsx"],"names":["TooltipProvider","delayDuration","props","jsx","Tooltip","TooltipTrigger","TooltipContent","className","sideOffset","variant","children","cx"],"mappings":"6GAGA,SAASA,CAAAA,CAAgB,CACvB,cAAAC,CAAAA,CAAgB,CAAA,CAChB,GAAGC,CACL,CAAA,CAA2D,CACzD,OACEC,GAAAA,CAAkB,CAAA,CAAA,QAAA,CAAjB,CACC,WAAA,CAAU,kBAAA,CACV,aAAA,CAAeF,CAAAA,CACd,GAAGC,CAAAA,CACN,CAEJ,CAEA,SAASE,CAAAA,CAAQ,CACf,GAAGF,CACL,CAAA,CAAuD,CACrD,OACEC,GAAAA,CAACH,CAAAA,CAAA,CACC,SAAAG,GAAAA,CAAkB,CAAA,CAAA,IAAA,CAAjB,CAAsB,WAAA,CAAU,SAAA,CAAW,GAAGD,CAAAA,CAAO,CAAA,CACxD,CAEJ,CAEA,SAASG,CAAAA,CAAe,CACtB,GAAGH,CACL,CAAA,CAA0D,CACxD,OAAOC,GAAAA,CAAkB,CAAA,CAAA,OAAA,CAAjB,CAAyB,YAAU,iBAAA,CAAmB,GAAGD,CAAAA,CAAO,CAC1E,CAEA,SAASI,EAAe,CACtB,SAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CAAa,CAAA,CACb,OAAA,CAAAC,CAAAA,CAAU,QAAA,CACV,QAAA,CAAAC,CAAAA,CACA,GAAGR,CACL,CAAA,CAEG,CACD,OACEC,GAAAA,CAAkB,CAAA,CAAA,MAAA,CAAjB,CACC,QAAA,CAAAA,GAAAA,CAAkB,CAAA,CAAA,OAAA,CAAjB,CACC,SAAA,CAAWQ,EAAAA,CACT,gCAAA,CACA,iLAAA,CACA,8MAAA,CACA,yVAAA,CACAJ,CACF,CAAA,CACA,WAAA,CAAU,iBAAA,CACV,cAAA,CAAcE,CAAAA,CACd,UAAA,CAAYD,CAAAA,CACX,GAAGN,CAAAA,CAEH,QAAA,CAAAQ,CAAAA,CACH,CAAA,CACF,CAEJ","file":"chunk-NELCN6E2.js","sourcesContent":["import * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cx } from '@xjur-ui/util'\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 1,\n variant = 'simple',\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n variant?: 'simple' | 'rich'\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n className={cx(\n 'text-size-body-sm text-balance',\n 'data-[variant=simple]:bg-alt-2 data-[variant=simple]:text-neutral-label data-[variant=simple]:rounded-small-1x data-[variant=simple]:px-small data-[variant=simple]:py-small-1x',\n 'data-[variant=rich]:bg-layer-2-idle data-[variant=rich]:text-neutral-dark data-[variant=rich]:rounded-small data-[variant=rich]:border-border-layer-2 data-[variant=rich]:p-large data-[variant=rich]:border',\n 'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin)',\n className\n )}\n data-slot=\"tooltip-content\"\n data-variant={variant}\n sideOffset={sideOffset}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"]}
@@ -0,0 +1,2 @@
1
+ import {b as b$1}from'./chunk-FASEHVMD.js';import {a}from'./chunk-EIG6CBTQ.js';import {cx,cva}from'@xjur-ui/util';import {createContext}from'react';import {jsx}from'react/jsx-runtime';var i=createContext({variant:"outlined"});function h({className:e,variant:r="outlined",...o}){return jsx(i.Provider,{value:{variant:r},children:jsx("div",{className:cx(e,"relative flex w-full"),...o})})}function b({className:e,...r}){let o=cva(["gap-small py-small_1x-alt px-small flex items-center w-full","h-large-4x rounded-circle","border-border-layer-2 placeholder:placeholder-neutral-placeholder text-size-body-md text-neutral-dark border font-normal","group-hover:border-border-layer-3 transition-colors duration-200","disabled:opacity-60","focus-within:border-primary-idle"],{variants:{variant:{outlined:"rounded-circle focus-within:border-primary-idle ",line:"rounded-none border-t-0 border-b-1 border-x-0",action:"rounded-tr-none rounded-br-none border-r-0"}}});return jsx(i.Consumer,{children:({variant:a})=>jsx("div",{className:cx(e,o({variant:a})),"data-variant":a,...r})})}function f({htmlFor:e,...r}){return jsx(a,{asChild:true,className:cx("absolute -top-[22px] left-0"),size:"sm",variant:"label",weight:"medium",children:jsx("label",{htmlFor:e,...r})})}function v({className:e,...r}){return jsx("input",{className:cx(e,"flex-1 outline-none"),...r})}function y(e){return jsx("div",{...e,"data-slot":"search-input-slot"})}function C({className:e,appearance:r="ghost",variant:o="outlined",...a}){return jsx(b$1,{...a,appearance:r,className:cx(e,"cursor-pointer","h-large-4x rounded-tr-circle rounded-br-circle px-small py-small_1x-alt flex items-center justify-center rounded-none","text-size-body-md text-neutral-dark gap-small-1x"),"data-slot":"search-input-action",variant:o})}export{h as a,b,f as c,v as d,y as e,C as f};//# sourceMappingURL=chunk-NPTLORW5.js.map
2
+ //# sourceMappingURL=chunk-NPTLORW5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/search-input.tsx"],"names":["SearchInputRootContext","createContext","SearchInputRoot","className","variant","props","jsx","cx","SearchInputContent","contentVarians","cva","SearchInputLabel","htmlFor","Typography","SearchInputText","SearchInputSlot","SearchInputAction","appearance","Button"],"mappings":"wLASA,IAAMA,CAAAA,CAAyBC,aAAAA,CAAgC,CAC7D,OAAA,CAAS,UACX,CAAC,EAEM,SAASC,CAAAA,CAAgB,CAC9B,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,EAAU,UAAA,CACV,GAAGC,CACL,CAAA,CAA6C,CAC3C,OACEC,IAACN,CAAAA,CAAuB,QAAA,CAAvB,CAAgC,KAAA,CAAO,CAAE,OAAA,CAAAI,CAAQ,CAAA,CAChD,QAAA,CAAAE,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWC,EAAAA,CAAGJ,EAAW,sBAAsB,CAAA,CAAI,GAAGE,CAAAA,CAAO,CAAA,CACpE,CAEJ,CAEO,SAASG,CAAAA,CAAmB,CACjC,SAAA,CAAAL,CAAAA,CACA,GAAGE,CACL,CAAA,CAA0B,CACxB,IAAMI,CAAAA,CAAiBC,GAAAA,CACrB,CACE,8DACA,2BAAA,CACA,0HAAA,CACA,kEAAA,CACA,qBAAA,CACA,kCACF,CAAA,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,QAAA,CAAU,kDAAA,CACV,KAAM,+CAAA,CACN,MAAA,CAAQ,4CACV,CACF,CACF,CACF,EAEA,OACEJ,GAAAA,CAACN,CAAAA,CAAuB,QAAA,CAAvB,CACE,QAAA,CAAA,CAAC,CAAE,OAAA,CAAAI,CAAQ,CAAA,GACVE,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWC,EAAAA,CAAGJ,CAAAA,CAAWM,CAAAA,CAAe,CAAE,OAAA,CAAAL,CAAQ,CAAC,CAAC,EACpD,cAAA,CAAcA,CAAAA,CACb,GAAGC,CAAAA,CACN,CAAA,CAEJ,CAEJ,CAEO,SAASM,CAAAA,CAAiB,CAC/B,OAAA,CAAAC,CAAAA,CACA,GAAGP,CACL,CAAA,CAA4B,CAC1B,OACEC,GAAAA,CAACO,CAAAA,CAAA,CACC,QAAS,IAAA,CACT,SAAA,CAAWN,EAAAA,CAAG,6BAA6B,CAAA,CAC3C,IAAA,CAAK,KACL,OAAA,CAAQ,OAAA,CACR,MAAA,CAAO,QAAA,CAEP,QAAA,CAAAD,GAAAA,CAAC,SAAM,OAAA,CAASM,CAAAA,CAAU,GAAGP,CAAAA,CAAO,CAAA,CACtC,CAEJ,CAEO,SAASS,CAAAA,CAAgB,CAC9B,SAAA,CAAAX,CAAAA,CACA,GAAGE,CACL,CAAA,CAA4B,CAC1B,OAAOC,GAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAWC,GAAGJ,CAAAA,CAAW,qBAAqB,CAAA,CAAI,GAAGE,CAAAA,CAAO,CAC5E,CAEO,SAASU,CAAAA,CAAgBV,CAAAA,CAA8B,CAC5D,OAAOC,GAAAA,CAAC,OAAK,GAAGD,CAAAA,CAAO,WAAA,CAAU,mBAAA,CAAoB,CACvD,CAEO,SAASW,CAAAA,CAAkB,CAChC,SAAA,CAAAb,CAAAA,CACA,UAAA,CAAAc,CAAAA,CAAa,QACb,OAAA,CAAAb,CAAAA,CAAU,UAAA,CACV,GAAGC,CACL,CAAA,CAAgB,CACd,OACEC,GAAAA,CAACY,GAAAA,CAAA,CACE,GAAGb,CAAAA,CACJ,WAAYY,CAAAA,CACZ,SAAA,CAAWV,EAAAA,CACTJ,CAAAA,CACA,gBAAA,CACA,uHAAA,CACA,kDACF,CAAA,CACA,WAAA,CAAU,qBAAA,CACV,OAAA,CAASC,CAAAA,CACX,CAEJ","file":"chunk-NPTLORW5.js","sourcesContent":["import { cva, cx } from '@xjur-ui/util'\nimport { createContext, type ComponentProps } from 'react'\nimport { Typography } from './typography'\nimport { Button, type ButtonProps } from './button'\n\nexport type SearchInputProps = {\n variant?: 'outlined' | 'line' | 'action'\n}\n\nconst SearchInputRootContext = createContext<SearchInputProps>({\n variant: 'outlined'\n})\n\nexport function SearchInputRoot({\n className,\n variant = 'outlined',\n ...props\n}: ComponentProps<'div'> & SearchInputProps) {\n return (\n <SearchInputRootContext.Provider value={{ variant }}>\n <div className={cx(className, 'relative flex w-full')} {...props} />\n </SearchInputRootContext.Provider>\n )\n}\n\nexport function SearchInputContent({\n className,\n ...props\n}: ComponentProps<'div'>) {\n const contentVarians = cva(\n [\n 'gap-small py-small_1x-alt px-small flex items-center w-full',\n 'h-large-4x rounded-circle',\n 'border-border-layer-2 placeholder:placeholder-neutral-placeholder text-size-body-md text-neutral-dark border font-normal',\n 'group-hover:border-border-layer-3 transition-colors duration-200',\n 'disabled:opacity-60',\n 'focus-within:border-primary-idle'\n ],\n {\n variants: {\n variant: {\n outlined: 'rounded-circle focus-within:border-primary-idle ',\n line: 'rounded-none border-t-0 border-b-1 border-x-0',\n action: 'rounded-tr-none rounded-br-none border-r-0'\n }\n }\n }\n )\n\n return (\n <SearchInputRootContext.Consumer>\n {({ variant }) => (\n <div\n className={cx(className, contentVarians({ variant }))}\n data-variant={variant}\n {...props}\n />\n )}\n </SearchInputRootContext.Consumer>\n )\n}\n\nexport function SearchInputLabel({\n htmlFor,\n ...props\n}: ComponentProps<'label'>) {\n return (\n <Typography\n asChild={true}\n className={cx('absolute -top-[22px] left-0')}\n size=\"sm\"\n variant=\"label\"\n weight=\"medium\"\n >\n <label htmlFor={htmlFor} {...props} />\n </Typography>\n )\n}\n\nexport function SearchInputText({\n className,\n ...props\n}: ComponentProps<'input'>) {\n return <input className={cx(className, 'flex-1 outline-none')} {...props} />\n}\n\nexport function SearchInputSlot(props: ComponentProps<'div'>) {\n return <div {...props} data-slot=\"search-input-slot\" />\n}\n\nexport function SearchInputAction({\n className,\n appearance = 'ghost',\n variant = 'outlined',\n ...props\n}: ButtonProps) {\n return (\n <Button\n {...props}\n appearance={appearance}\n className={cx(\n className,\n 'cursor-pointer',\n 'h-large-4x rounded-tr-circle rounded-br-circle px-small py-small_1x-alt flex items-center justify-center rounded-none',\n 'text-size-body-md text-neutral-dark gap-small-1x'\n )}\n data-slot=\"search-input-action\"\n variant={variant}\n />\n )\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$2}from'./chunk-CBFC4QME.js';import {a,d,b as b$1,c,e as e$1}from'./chunk-KIFR5VIE.js';import {a as a$1}from'./chunk-EIG6CBTQ.js';import'react';import*as e from'@radix-ui/react-dropdown-menu';import {cx}from'@xjur-ui/util';import {jsx}from'react/jsx-runtime';function x({...o}){return jsx(e.Root,{"data-slot":"dropdown-menu",...o})}function C({...o}){return jsx(e.Portal,{"data-slot":"dropdown-menu-portal",...o})}function R({...o}){return jsx(e.Trigger,{"data-slot":"dropdown-menu-trigger",...o})}function y({className:o,sideOffset:r=4,align:w="start",side:f="bottom",children:P,...c}){return jsx(e.Portal,{children:jsx(e.Content,{align:w,className:cx("group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-trigger-width)] min-w-[var(--radix-popover-trigger-width)]",o),"data-slot":"dropdown-menu-content",side:f,sideOffset:r,...c,children:jsx(a,{children:P})})})}function L({...o}){return jsx(d,{...o})}function T({...o}){return jsx(b$1,{...o})}function h({...o}){return jsx(c,{...o})}function H({className:o,...r}){return jsx(e$1,{className:cx(o,"cursor-pointer"),...r})}function I({...o}){return jsx(a$1,{...o})}function b({...o}){return jsx(a$2,{...o})}export{x as a,C as b,R as c,y as d,L as e,T as f,h as g,H as h,I as i,b as j};//# sourceMappingURL=chunk-RWMV7APX.js.map
2
+ //# sourceMappingURL=chunk-RWMV7APX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/dropdown-menu.tsx"],"names":["DropdownMenuRoot","props","jsx","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","align","side","children","cx","ListRoot","DropdownMenuList","ListContent","DropdownMenuHeader","ListHeader","DropdownMenuHeaderTitle","ListHeaderTitle","DropdownMenuItem","ListItem","DropdownMenuItemText","Typography","DropdownMenuItemDivider","Divider"],"mappings":"iRAaO,SAASA,CAAAA,CAAiB,CAC/B,GAAGC,CACL,CAAA,CAA4D,CAC1D,OAAOC,GAAAA,CAAuB,CAAA,CAAA,IAAA,CAAtB,CAA2B,WAAA,CAAU,eAAA,CAAiB,GAAGD,CAAAA,CAAO,CAC1E,CAEO,SAASE,CAAAA,CAAmB,CACjC,GAAGF,CACL,CAAA,CAA8D,CAC5D,OACEC,GAAAA,CAAuB,SAAtB,CAA6B,WAAA,CAAU,sBAAA,CAAwB,GAAGD,CAAAA,CAAO,CAE9E,CAEO,SAASG,CAAAA,CAAoB,CAClC,GAAGH,CACL,CAAA,CAA+D,CAC7D,OACEC,GAAAA,CAAuB,UAAtB,CACC,WAAA,CAAU,wBACT,GAAGD,CAAAA,CACN,CAEJ,CAEO,SAASI,CAAAA,CAAoB,CAClC,SAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CAAa,CAAA,CACb,KAAA,CAAAC,EAAQ,OAAA,CACR,IAAA,CAAAC,CAAAA,CAAO,QAAA,CACP,QAAA,CAAAC,CAAAA,CACA,GAAGT,CACL,CAAA,CAA+D,CAC7D,OACEC,GAAAA,CAAuB,SAAtB,CACC,QAAA,CAAAA,GAAAA,CAAuB,CAAA,CAAA,OAAA,CAAtB,CACC,KAAA,CAAOM,EACP,SAAA,CAAWG,EAAAA,CACT,wJAAA,CACAL,CACF,CAAA,CACA,WAAA,CAAU,wBACV,IAAA,CAAMG,CAAAA,CACN,UAAA,CAAYF,CAAAA,CACX,GAAGN,CAAAA,CAEJ,SAAAC,GAAAA,CAACU,CAAAA,CAAA,CAAU,QAAA,CAAAF,CAAAA,CAAS,EACtB,CAAA,CACF,CAEJ,CAEO,SAASG,CAAAA,CAAiB,CAC/B,GAAGZ,CACL,CAAA,CAA6C,CAC3C,OAAOC,GAAAA,CAACY,EAAA,CAAa,GAAGb,CAAAA,CAAO,CACjC,CAEO,SAASc,EAAmB,CACjC,GAAGd,CACL,CAAA,CAA4C,CAC1C,OAAOC,GAAAA,CAACc,GAAAA,CAAA,CAAY,GAAGf,CAAAA,CAAO,CAChC,CAEO,SAASgB,CAAAA,CAAwB,CACtC,GAAGhB,CACL,CAAA,CAAiD,CAC/C,OAAOC,GAAAA,CAACgB,CAAAA,CAAA,CAAiB,GAAGjB,CAAAA,CAAO,CACrC,CAEO,SAASkB,EAAiB,CAC/B,SAAA,CAAAb,EACA,GAAGL,CACL,CAAA,CAA0C,CACxC,OAAOC,GAAAA,CAACkB,IAAA,CAAS,SAAA,CAAWT,EAAAA,CAAGL,CAAAA,CAAW,gBAAgB,CAAA,CAAI,GAAGL,CAAAA,CAAO,CAC1E,CAEO,SAASoB,CAAAA,CAAqB,CACnC,GAAGpB,CACL,CAAA,CAA4C,CAC1C,OAAOC,GAAAA,CAACoB,IAAA,CAAY,GAAGrB,CAAAA,CAAO,CAChC,CAEO,SAASsB,EAAwB,CACtC,GAAGtB,CACL,CAAA,CAAyC,CACvC,OAAOC,IAACsB,GAAAA,CAAA,CAAS,GAAGvB,CAAAA,CAAO,CAC7B","file":"chunk-RWMV7APX.js","sourcesContent":["import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { cx } from '@xjur-ui/util'\nimport {\n ListContent,\n ListHeader,\n ListHeaderTitle,\n ListItem,\n ListRoot\n} from './list'\nimport { Typography } from './typography'\nimport { Divider } from './divider'\n\nexport function DropdownMenuRoot({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nexport function DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nexport function DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nexport function DropdownMenuContent({\n className,\n sideOffset = 4,\n align = 'start',\n side = 'bottom',\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n align={align}\n className={cx(\n 'group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-trigger-width)] min-w-[var(--radix-popover-trigger-width)]',\n className\n )}\n data-slot=\"dropdown-menu-content\"\n side={side}\n sideOffset={sideOffset}\n {...props}\n >\n <ListRoot>{children}</ListRoot>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nexport function DropdownMenuList({\n ...props\n}: React.ComponentProps<typeof ListContent>) {\n return <ListContent {...props} />\n}\n\nexport function DropdownMenuHeader({\n ...props\n}: React.ComponentProps<typeof ListHeader>) {\n return <ListHeader {...props} />\n}\n\nexport function DropdownMenuHeaderTitle({\n ...props\n}: React.ComponentProps<typeof ListHeaderTitle>) {\n return <ListHeaderTitle {...props} />\n}\n\nexport function DropdownMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof ListItem>) {\n return <ListItem className={cx(className, 'cursor-pointer')} {...props} />\n}\n\nexport function DropdownMenuItemText({\n ...props\n}: React.ComponentProps<typeof Typography>) {\n return <Typography {...props} />\n}\n\nexport function DropdownMenuItemDivider({\n ...props\n}: React.ComponentProps<typeof Divider>) {\n return <Divider {...props} />\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {cx}from'@xjur-ui/util';import {jsx}from'react/jsx-runtime';var a=["account_balance","ad_units","add_a_photo","add","adjust","archive","arrow_downward_alt","arrow_downward","arrow_drop_down","arrow_drop_up","arrow_split","arrow_upward_alt","arrow_upward","attach_file","attach_money","autorenew","brightness_1","calendar_today","call","chat_bubble","check_circle","check","chevron_left","chevron_right","close","collapse_all","contacts","content_copy","dangerous","dashboard","delete","download","draft","drafts","drag_handle","drag_indicator","edit_document","edit_square","edit","error","expand_all","file_export","filter_alt","filter_list","first_page","flag_2","folder_open","folder","format_bold","format_italic","format_italic","format_size","format_strikethrough","gavel","group","headphones","help","hourglass_bottom","imagesmode","import_contacts","inbox","info","inventory_2","keep","keep","keyboard_arrow_down","keyboard_arrow_up","keyboard_return","label_off","label","last_page","left_panel_close","left_panel_open","link_off","link","linked_services","list","location_on","lock","logout","mail","menu","mic","more_vert","notifications","numbers","person_add","person_off","person","play_circle","progress_activity","question_mark","radio_button_unchecked","refresh","remove","reply","right_panel_close","right_panel_open","schedule","search","sell","send","settings","share","smart_display","star","star","swap_vert","thumb_down","thumb_up","tune","unarchive","undo","upload","verified_user","videocam","view_list","view_module","view_object_track","visibility_off","visibility","warning","wifi_2_bar","wifi_off","wifi","work","workspaces","article","id_card","badge","home","save","code","favorite","analytics","reports","event","account_circle","history","security","bar_chart","category","format_underlined","format_list_bulleted","format_list_numbered","redo"];function s({className:o,filled:r=false,name:t,...e}){return jsx("span",{...e,className:cx("material-symbols-outlined","text-size-body-lg select-none",o),style:{fontVariationSettings:`'FILL' ${r?1:0}, 'wght' 600, 'GRAD' 0, 'opsz' 20`,...e.style},children:t})}export{a,s as b};//# sourceMappingURL=chunk-SHHXKVVR.js.map
2
+ //# sourceMappingURL=chunk-SHHXKVVR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/icons.ts","../src/components/icon.tsx"],"names":["icons","Icon","className","filled","name","props","jsx","cx"],"mappings":"mEAAO,IAAMA,EAAQ,CACnB,iBAAA,CACA,WACA,aAAA,CACA,KAAA,CACA,SACA,SAAA,CACA,oBAAA,CACA,iBACA,iBAAA,CACA,eAAA,CACA,cACA,kBAAA,CACA,cAAA,CACA,cACA,cAAA,CACA,WAAA,CACA,eACA,gBAAA,CACA,MAAA,CACA,cACA,cAAA,CACA,OAAA,CACA,eACA,eAAA,CACA,OAAA,CACA,eACA,UAAA,CACA,cAAA,CACA,YACA,WAAA,CACA,QAAA,CACA,WACA,OAAA,CACA,QAAA,CACA,cACA,gBAAA,CACA,eAAA,CACA,aAAA,CACA,MAAA,CACA,OAAA,CACA,YAAA,CACA,cACA,YAAA,CACA,aAAA,CACA,aACA,QAAA,CACA,aAAA,CACA,SACA,aAAA,CACA,eAAA,CACA,gBACA,aAAA,CACA,sBAAA,CACA,QACA,OAAA,CACA,YAAA,CACA,OACA,kBAAA,CACA,YAAA,CACA,kBACA,OAAA,CACA,MAAA,CACA,aAAA,CACA,MAAA,CACA,MAAA,CACA,qBAAA,CACA,oBACA,iBAAA,CACA,WAAA,CACA,QACA,WAAA,CACA,kBAAA,CACA,kBACA,UAAA,CACA,MAAA,CACA,kBACA,MAAA,CACA,aAAA,CACA,OACA,QAAA,CACA,MAAA,CACA,OACA,KAAA,CACA,WAAA,CACA,gBACA,SAAA,CACA,YAAA,CACA,YAAA,CACA,QAAA,CACA,aAAA,CACA,mBAAA,CACA,gBACA,wBAAA,CACA,SAAA,CACA,SACA,OAAA,CACA,mBAAA,CACA,mBACA,UAAA,CACA,QAAA,CACA,OACA,MAAA,CACA,UAAA,CACA,QACA,eAAA,CACA,MAAA,CACA,OACA,WAAA,CACA,YAAA,CACA,WACA,MAAA,CACA,WAAA,CACA,MAAA,CACA,QAAA,CACA,eAAA,CACA,UAAA,CACA,YACA,aAAA,CACA,mBAAA,CACA,iBACA,YAAA,CACA,SAAA,CACA,aACA,UAAA,CACA,MAAA,CACA,OACA,YAAA,CACA,SAAA,CACA,UACA,OAAA,CACA,MAAA,CACA,OACA,MAAA,CACA,UAAA,CACA,YACA,SAAA,CACA,OAAA,CACA,gBAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,WACA,mBAAA,CACA,sBAAA,CACA,uBACA,MACF,EC1IO,SAASC,CAAAA,CAAK,CAAE,UAAAC,CAAAA,CAAW,MAAA,CAAAC,EAAS,KAAA,CAAO,IAAA,CAAAC,EAAM,GAAGC,CAAM,CAAA,CAAc,CAC7E,OACEC,GAAAA,CAAC,QACE,GAAGD,CAAAA,CACJ,UAAWE,EAAAA,CACT,2BAAA,CACA,gCACAL,CACF,CAAA,CACA,MAAO,CACL,qBAAA,CAAuB,UAAUC,CAAAA,CAAS,CAAA,CAAI,CAAC,CAAA,iCAAA,CAAA,CAC/C,GAAGE,EAAM,KACX,CAAA,CAEC,QAAA,CAAAD,CAAAA,CACH,CAEJ","file":"chunk-SHHXKVVR.js","sourcesContent":["export const icons = [\n 'account_balance',\n 'ad_units',\n 'add_a_photo',\n 'add',\n 'adjust',\n 'archive',\n 'arrow_downward_alt',\n 'arrow_downward',\n 'arrow_drop_down',\n 'arrow_drop_up',\n 'arrow_split',\n 'arrow_upward_alt',\n 'arrow_upward',\n 'attach_file',\n 'attach_money',\n 'autorenew',\n 'brightness_1',\n 'calendar_today',\n 'call',\n 'chat_bubble',\n 'check_circle',\n 'check',\n 'chevron_left',\n 'chevron_right',\n 'close',\n 'collapse_all',\n 'contacts',\n 'content_copy',\n 'dangerous',\n 'dashboard',\n 'delete',\n 'download',\n 'draft',\n 'drafts',\n 'drag_handle',\n 'drag_indicator',\n 'edit_document',\n 'edit_square',\n 'edit',\n 'error',\n 'expand_all',\n 'file_export',\n 'filter_alt',\n 'filter_list',\n 'first_page',\n 'flag_2',\n 'folder_open',\n 'folder',\n 'format_bold',\n 'format_italic',\n 'format_italic',\n 'format_size',\n 'format_strikethrough',\n 'gavel',\n 'group',\n 'headphones',\n 'help',\n 'hourglass_bottom',\n 'imagesmode',\n 'import_contacts',\n 'inbox',\n 'info',\n 'inventory_2',\n 'keep',\n 'keep',\n 'keyboard_arrow_down',\n 'keyboard_arrow_up',\n 'keyboard_return',\n 'label_off',\n 'label',\n 'last_page',\n 'left_panel_close',\n 'left_panel_open',\n 'link_off',\n 'link',\n 'linked_services',\n 'list',\n 'location_on',\n 'lock',\n 'logout',\n 'mail',\n 'menu',\n 'mic',\n 'more_vert',\n 'notifications',\n 'numbers',\n 'person_add',\n 'person_off',\n 'person',\n 'play_circle',\n 'progress_activity',\n 'question_mark',\n 'radio_button_unchecked',\n 'refresh',\n 'remove',\n 'reply',\n 'right_panel_close',\n 'right_panel_open',\n 'schedule',\n 'search',\n 'sell',\n 'send',\n 'settings',\n 'share',\n 'smart_display',\n 'star',\n 'star',\n 'swap_vert',\n 'thumb_down',\n 'thumb_up',\n 'tune',\n 'unarchive',\n 'undo',\n 'upload',\n 'verified_user',\n 'videocam',\n 'view_list',\n 'view_module',\n 'view_object_track',\n 'visibility_off',\n 'visibility',\n 'warning',\n 'wifi_2_bar',\n 'wifi_off',\n 'wifi',\n 'work',\n 'workspaces',\n 'article',\n 'id_card',\n 'badge',\n 'home',\n 'save',\n 'code',\n 'favorite',\n 'analytics',\n 'reports',\n 'event',\n 'account_circle',\n 'history',\n 'security',\n 'bar_chart',\n 'category',\n 'format_underlined',\n 'format_list_bulleted',\n 'format_list_numbered',\n 'redo'\n] as const\n\nexport type IconType = (typeof icons)[number]\n","import type { ComponentProps } from 'react'\nimport { cx } from '@xjur-ui/util'\nimport type { IconType } from '../resources/icons'\n\nexport type IconProps = {\n name: IconType\n filled?: boolean\n} & ComponentProps<'span'>\n\nexport function Icon({ className, filled = false, name, ...props }: IconProps) {\n return (\n <span\n {...props}\n className={cx(\n 'material-symbols-outlined',\n 'text-size-body-lg select-none',\n className\n )}\n style={{\n fontVariationSettings: `'FILL' ${filled ? 1 : 0}, 'wght' 600, 'GRAD' 0, 'opsz' 20`,\n ...props.style\n }}\n >\n {name}\n </span>\n )\n}\n\nexport { icons, type IconType } from '../resources/icons'\n"]}
@@ -0,0 +1,2 @@
1
+ import'react';import*as a from'@radix-ui/react-avatar';import {cx}from'@xjur-ui/util';import {jsx}from'react/jsx-runtime';function m({className:e,size:t="md",...s}){return jsx(a.Root,{className:cx("rounded-circle relative flex shrink-0 overflow-hidden","data-[size=lg]:size-large-8x data-[size=md]:size-large-4x data-[size=sm]:size-large-2x data-[size=xs]:size-large-1x","data-[size=lg]:text-size-headline-md data-[size=md]:text-size-label-lg data-[size=sm]:text-size-label-sm data-[size=xs]:text-size-label-sm",e),"data-size":t,"data-slot":"avatar",...s})}function d({className:e,...t}){return jsx(a.Image,{className:cx("aspect-square size-full",e),"data-slot":"avatar-image",...t})}function n({className:e,...t}){return jsx(a.Fallback,{className:cx("bg-alt-1 rounded-circle flex size-full items-center justify-center font-medium text-white",e),"data-slot":"avatar-fallback",...t})}export{m as a,d as b,n as c};//# sourceMappingURL=chunk-TB6KI6CL.js.map
2
+ //# sourceMappingURL=chunk-TB6KI6CL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/avatar.tsx"],"names":["AvatarRoot","className","size","props","jsx","cx","AvatarImage","AvatarFallback"],"mappings":"0HAIO,SAASA,EAAW,CACzB,SAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CAAO,KACP,GAAGC,CACL,CAAA,CAEG,CACD,OACEC,GAAAA,CAAiB,CAAA,CAAA,IAAA,CAAhB,CACC,SAAA,CAAWC,EAAAA,CACT,wDACA,qHAAA,CACA,4IAAA,CACAJ,CACF,CAAA,CACA,WAAA,CAAWC,EACX,WAAA,CAAU,QAAA,CACT,GAAGC,CAAAA,CACN,CAEJ,CAEO,SAASG,CAAAA,CAAY,CAC1B,SAAA,CAAAL,EACA,GAAGE,CACL,EAAuD,CACrD,OACEC,IAAiB,CAAA,CAAA,KAAA,CAAhB,CACC,UAAWC,EAAAA,CAAG,yBAAA,CAA2BJ,CAAS,CAAA,CAClD,WAAA,CAAU,eACT,GAAGE,CAAAA,CACN,CAEJ,CAEO,SAASI,CAAAA,CAAe,CAC7B,UAAAN,CAAAA,CACA,GAAGE,CACL,CAAA,CAA0D,CACxD,OACEC,GAAAA,CAAiB,CAAA,CAAA,QAAA,CAAhB,CACC,SAAA,CAAWC,EAAAA,CACT,4FACAJ,CACF,CAAA,CACA,YAAU,iBAAA,CACT,GAAGE,EACN,CAEJ","file":"chunk-TB6KI6CL.js","sourcesContent":["import * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport { cx } from '@xjur-ui/util'\n\nexport function AvatarRoot({\n className,\n size = 'md',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'xs' | 'sm' | 'md' | 'lg'\n}) {\n return (\n <AvatarPrimitive.Root\n className={cx(\n 'rounded-circle relative flex shrink-0 overflow-hidden',\n 'data-[size=lg]:size-large-8x data-[size=md]:size-large-4x data-[size=sm]:size-large-2x data-[size=xs]:size-large-1x',\n 'data-[size=lg]:text-size-headline-md data-[size=md]:text-size-label-lg data-[size=sm]:text-size-label-sm data-[size=xs]:text-size-label-sm',\n className\n )}\n data-size={size}\n data-slot=\"avatar\"\n {...props}\n />\n )\n}\n\nexport function AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n className={cx('aspect-square size-full', className)}\n data-slot=\"avatar-image\"\n {...props}\n />\n )\n}\n\nexport function AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n className={cx(\n 'bg-alt-1 rounded-circle flex size-full items-center justify-center font-medium text-white',\n className\n )}\n data-slot=\"avatar-fallback\"\n {...props}\n />\n )\n}\n"]}