@jini-ai/ui 0.4.6 → 0.4.8
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.
- package/README.md +33 -0
- package/dist/features/admin-widgets/components/InfoTip.d.ts +23 -2
- package/dist/features/admin-widgets/components/InfoTip.hooks.d.ts +22 -2
- package/dist/features/admin-widgets/components/InfoTip.hooks.js +75 -28
- package/dist/features/admin-widgets/components/InfoTip.js +12 -4
- package/dist/features/admin-widgets/components/InfoTip.rules.d.ts +72 -0
- package/dist/features/admin-widgets/components/InfoTip.rules.js +68 -0
- package/dist/features/admin-widgets/components/SuggestInput/SuggestInput.d.ts +36 -0
- package/dist/features/admin-widgets/components/SuggestInput/SuggestInput.hooks.d.ts +58 -0
- package/dist/features/admin-widgets/components/SuggestInput/SuggestInput.hooks.js +66 -0
- package/dist/features/admin-widgets/components/SuggestInput/SuggestInput.js +24 -0
- package/dist/features/admin-widgets/components/useDebouncedHtmlPreview.hooks.d.ts +23 -0
- package/dist/features/admin-widgets/components/useDebouncedHtmlPreview.hooks.js +28 -0
- package/dist/features/admin-widgets/index.d.ts +9 -0
- package/dist/features/admin-widgets/index.js +5 -0
- package/dist/features/execution/constants.js +11 -10
- package/dist/features/execution/http-adapter.d.ts +3 -1
- package/dist/features/execution/http-adapter.js +9 -4
- package/dist/features/execution/index.d.ts +1 -1
- package/dist/features/execution/index.js +1 -1
- package/dist/features/execution/react/components/ByokProviderForm.d.ts +18 -1
- package/dist/features/execution/react/components/ByokProviderForm.js +14 -16
- package/dist/features/execution/react/components/LocalCliAgentCard.d.ts +5 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.js +12 -87
- package/dist/features/execution/react/components/LocalCliAgentList.d.ts +4 -1
- package/dist/features/execution/react/components/LocalCliAgentList.js +13 -4
- package/dist/features/execution/react/components/LocalCliAgentSettings.d.ts +20 -0
- package/dist/features/execution/react/components/LocalCliAgentSettings.js +20 -0
- package/dist/features/execution/react/hooks/use-byok-field-validation.hooks.d.ts +24 -0
- package/dist/features/execution/react/hooks/use-byok-field-validation.hooks.js +27 -0
- package/dist/features/execution/react/hooks/useExecutionTab.js +10 -1
- package/dist/features/execution/react/hooks/useLocalCliAgentCard.d.ts +48 -0
- package/dist/features/execution/react/hooks/useLocalCliAgentCard.js +110 -0
- package/dist/features/execution/react/hooks/useLocalCliAgentList.d.ts +19 -0
- package/dist/features/execution/react/hooks/useLocalCliAgentList.js +13 -0
- package/dist/features/execution/rules.d.ts +13 -0
- package/dist/features/execution/rules.js +14 -0
- package/dist/features/execution/types.d.ts +2 -0
- package/dist/features/html-editor/canvas-embed-placeholders.d.ts +13 -1
- package/dist/features/html-editor/canvas-embed-placeholders.js +61 -12
- package/dist/features/html-editor/dom.d.ts +5 -0
- package/dist/features/html-editor/dom.js +10 -0
- package/dist/features/html-editor/editor-blocks.d.ts +71 -0
- package/dist/features/html-editor/editor-blocks.js +185 -0
- package/dist/features/html-editor/editor-serialization.d.ts +24 -0
- package/dist/features/html-editor/editor-serialization.js +110 -0
- package/dist/features/html-editor/index.d.ts +5 -0
- package/dist/features/html-editor/index.js +3 -0
- package/dist/features/html-editor/protected-elements.d.ts +64 -0
- package/dist/features/html-editor/protected-elements.js +189 -0
- package/dist/features/html-editor/react/components/InteractiveHtmlEditor.d.ts +6 -4
- package/dist/features/html-editor/react/components/InteractiveHtmlEditor.js +3 -3
- package/dist/features/html-editor/react/hooks/useInteractiveHtmlEditor.d.ts +9 -1
- package/dist/features/html-editor/react/hooks/useInteractiveHtmlEditor.js +107 -196
- package/dist/features/html-editor/source-splice.d.ts +23 -0
- package/dist/features/html-editor/source-splice.js +45 -0
- package/dist/features/i18n/dictionaries/settings-dialog.ar.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.bn.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.de.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.en.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.es.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.fa.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.fr.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.hi.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.hu.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.id.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.it.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.ja.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.ko.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.pl.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.pt-BR.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.ru.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.th.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.tr.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.uk.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.ur.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.zh-CN.js +4 -0
- package/dist/features/i18n/dictionaries/settings-dialog.zh-TW.js +4 -0
- package/dist/features/interactive-ui/interactive-ui.css +1 -1
- package/dist/features/interactive-ui/providers/native/data-table.js +8 -1
- package/dist/features/interactive-ui/providers/native/data-table.manifest.d.ts +3 -5
- package/dist/features/interactive-ui/providers/native/data-table.manifest.js +5 -7
- package/dist/features/interactive-ui/providers/recharts/bar-chart.js +8 -3
- package/dist/features/interactive-ui/providers/recharts/chart-config.d.ts +40 -0
- package/dist/features/interactive-ui/providers/recharts/chart-config.js +32 -0
- package/dist/features/interactive-ui/providers/recharts/chart-tokens.d.ts +18 -12
- package/dist/features/interactive-ui/providers/recharts/chart-tokens.js +6 -11
- package/dist/features/interactive-ui/providers/recharts/chart.d.ts +31 -0
- package/dist/features/interactive-ui/providers/recharts/chart.js +34 -0
- package/dist/features/interactive-ui/providers/recharts/line-chart.js +10 -3
- package/dist/features/interactive-ui/providers/recharts/pie-chart.js +8 -3
- package/dist/features/interactive-ui/providers/shadcn/button.d.ts +1 -1
- package/dist/features/interactive-ui/providers/shadcn/data-table.d.ts +5 -1
- package/dist/features/interactive-ui/providers/shadcn/data-table.js +26 -2
- package/dist/features/interactive-ui/providers/shadcn/data-table.manifest.d.ts +8 -1
- package/dist/features/interactive-ui/providers/shadcn/data-table.manifest.js +6 -3
- package/dist/features/interactive-ui/table-data.d.ts +25 -0
- package/dist/features/interactive-ui/table-data.js +36 -0
- package/dist/features/mcp-ui/escape.js +2 -6
- package/dist/features/mcp-ui/sandbox-proxy-link-forwarder.d.ts +26 -0
- package/dist/features/mcp-ui/sandbox-proxy-link-forwarder.js +40 -0
- package/dist/features/mcp-ui/sandbox-proxy.d.ts +5 -1
- package/dist/features/mcp-ui/sandbox-proxy.js +11 -0
- package/dist/features/mcp-ui/surfaces/bridge.js +9 -3
- package/dist/features/mcp-ui/surfaces/document.d.ts +11 -4
- package/dist/features/mcp-ui/surfaces/document.js +25 -3
- package/dist/features/mcp-ui/surfaces/outcome.js +1 -1
- package/dist/features/media-providers/constants.d.ts +0 -7
- package/dist/features/media-providers/constants.js +7 -15
- package/dist/features/media-providers/react/components/MediaProvidersTab.js +3 -2
- package/dist/features/media-providers/react/hooks/useMediaProvidersTab.js +6 -3
- package/dist/features/memory/dependencies.d.ts +2 -0
- package/dist/features/memory/dependencies.js +9 -25
- package/dist/features/memory/index.d.ts +1 -0
- package/dist/features/memory/index.js +1 -0
- package/dist/features/memory/react/MemoryPorts.d.ts +17 -0
- package/dist/features/memory/react/MemoryPorts.js +15 -0
- package/dist/features/memory/react/hooks/useMemoryConfig.hooks.d.ts +2 -2
- package/dist/features/memory/react/hooks/useMemoryConfig.hooks.js +7 -7
- package/dist/features/memory/react/hooks/useMemoryConnectors.hooks.d.ts +2 -3
- package/dist/features/memory/react/hooks/useMemoryConnectors.hooks.js +4 -5
- package/dist/features/memory/react/hooks/useMemoryEntries.hooks.d.ts +2 -3
- package/dist/features/memory/react/hooks/useMemoryEntries.hooks.js +4 -5
- package/dist/features/memory/react/hooks/useMemoryExtractions.hooks.js +2 -2
- package/dist/features/panel-kit/fetch-query/adapter.react.d.ts +2 -2
- package/dist/features/panel-kit/fetch-query/adapter.react.js +5 -3
- package/dist/features/panel-kit/fetch-query/adapter.tanstack.d.ts +11 -0
- package/dist/features/panel-kit/fetch-query/adapter.tanstack.js +212 -0
- package/dist/features/panel-kit/fetch-query/binding.react.d.ts +17 -0
- package/dist/features/panel-kit/fetch-query/binding.react.js +24 -0
- package/dist/features/panel-kit/fetch-query/environment.browser.d.ts +1 -1
- package/dist/features/panel-kit/fetch-query/index.d.ts +6 -3
- package/dist/features/panel-kit/fetch-query/index.js +2 -1
- package/dist/features/panel-kit/fetch-query/tanstack.d.ts +8 -0
- package/dist/features/panel-kit/fetch-query/tanstack.js +4 -0
- package/dist/features/panel-kit/helpers/standing-draft-recovery-message.d.ts +3 -1
- package/dist/features/panel-kit/helpers/standing-draft-recovery-message.js +9 -2
- package/dist/features/settings/dialog/styles/settings-dialog.css +169 -21
- package/dist/features/tabbed-dialog/styles/tabbed-dialog.css +91 -0
- package/dist/react/components/RemixIcon.d.ts +1 -41
- package/dist/react/components/RemixIcon.js +3 -176
- package/dist/react/components/RemixIcon.stylesheet.d.ts +84 -0
- package/dist/react/components/RemixIcon.stylesheet.js +208 -0
- package/dist/react/components/remixicon-font-recovery.d.ts +55 -0
- package/dist/react/components/remixicon-font-recovery.js +110 -0
- package/dist/styles/admin.css +8 -2
- package/package.json +25 -8
- package/dist/features/panel-kit/fetch-query/cache.d.ts +0 -123
- package/dist/features/panel-kit/fetch-query/cache.js +0 -231
- package/dist/features/panel-kit/fetch-query/types.d.ts +0 -91
- package/dist/features/panel-kit/fetch-query/types.js +0 -2
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_FR = {
|
|
|
7
7
|
'About': 'À propos',
|
|
8
8
|
'Accent color': 'Couleur d\'accent',
|
|
9
9
|
'Account': 'Compte',
|
|
10
|
+
'Advanced': 'Avancé',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Avancé : proxy et chemins personnalisés',
|
|
11
12
|
'Agent check failed': 'Échec de la vérification de l\'agent',
|
|
12
13
|
'Agent is ready.': 'L\'agent est prêt.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_FR = {
|
|
|
131
132
|
'Not available for this daemon.': 'Non disponible pour ce daemon.',
|
|
132
133
|
'Not configured': 'Non configuré',
|
|
133
134
|
'Not installed': 'Non installé',
|
|
135
|
+
'Show {count} not installed': 'Afficher {count} non installés',
|
|
136
|
+
'Hide not installed': 'Masquer les non installés',
|
|
137
|
+
'Show not-installed CLIs': 'Afficher les CLIs non installés',
|
|
134
138
|
'Not sharing': 'Pas de partage',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Rien n\'est partagé tant que vous ne l\'activez pas.',
|
|
136
140
|
'Off': 'Désactivé',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_HI = {
|
|
|
7
7
|
'About': 'परिचय',
|
|
8
8
|
'Accent color': 'हाइलाइट रंग',
|
|
9
9
|
'Account': 'खाता',
|
|
10
|
+
'Advanced': 'उन्नत',
|
|
10
11
|
'Advanced: proxy & custom paths': 'उन्नत: प्रॉक्सी और कस्टम पाथ',
|
|
11
12
|
'Agent check failed': 'एजेंट जांच विफल रही',
|
|
12
13
|
'Agent is ready.': 'एजेंट तैयार है।',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_HI = {
|
|
|
131
132
|
'Not available for this daemon.': 'इस डेमन के लिए उपलब्ध नहीं है।',
|
|
132
133
|
'Not configured': 'कॉन्फ़िगर नहीं किया गया',
|
|
133
134
|
'Not installed': 'इंस्टॉल नहीं है',
|
|
135
|
+
'Show {count} not installed': '{count} इंस्टॉल नहीं किए गए दिखाएँ',
|
|
136
|
+
'Hide not installed': 'इंस्टॉल नहीं किए गए छिपाएँ',
|
|
137
|
+
'Show not-installed CLIs': 'इंस्टॉल नहीं किए गए CLI दिखाएँ',
|
|
134
138
|
'Not sharing': 'साझा नहीं किया जा रहा',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'जब तक आप इसे सक्रिय नहीं करते, तब तक कुछ भी साझा नहीं किया जाता।',
|
|
136
140
|
'Off': 'बंद',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_HU = {
|
|
|
7
7
|
'About': 'Névjegy',
|
|
8
8
|
'Accent color': 'Kiemelőszín',
|
|
9
9
|
'Account': 'Fiók',
|
|
10
|
+
'Advanced': 'Speciális',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Speciális: proxy és egyéni útvonalak',
|
|
11
12
|
'Agent check failed': 'Az ügynök ellenőrzése sikertelen',
|
|
12
13
|
'Agent is ready.': 'Az ügynök készen áll.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_HU = {
|
|
|
131
132
|
'Not available for this daemon.': 'Ehhez a démonhoz nem érhető el.',
|
|
132
133
|
'Not configured': 'Nincs beállítva',
|
|
133
134
|
'Not installed': 'Nincs telepítve',
|
|
135
|
+
'Show {count} not installed': '{count} nem telepített megjelenítése',
|
|
136
|
+
'Hide not installed': 'Nem telepítettek elrejtése',
|
|
137
|
+
'Show not-installed CLIs': 'Nem telepített CLI-k megjelenítése',
|
|
134
138
|
'Not sharing': 'Nincs megosztás',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Semmi sem kerül megosztásra, amíg nem járulsz hozzá.',
|
|
136
140
|
'Off': 'Ki',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_ID = {
|
|
|
7
7
|
'About': 'Tentang',
|
|
8
8
|
'Accent color': 'Warna aksen',
|
|
9
9
|
'Account': 'Akun',
|
|
10
|
+
'Advanced': 'Lanjutan',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Lanjutan: proxy & jalur kustom',
|
|
11
12
|
'Agent check failed': 'Pemeriksaan agen gagal',
|
|
12
13
|
'Agent is ready.': 'Agen sudah siap.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_ID = {
|
|
|
131
132
|
'Not available for this daemon.': 'Tidak tersedia untuk daemon ini.',
|
|
132
133
|
'Not configured': 'Belum dikonfigurasi',
|
|
133
134
|
'Not installed': 'Belum terinstal',
|
|
135
|
+
'Show {count} not installed': 'Tampilkan {count} yang belum terinstal',
|
|
136
|
+
'Hide not installed': 'Sembunyikan yang belum terinstal',
|
|
137
|
+
'Show not-installed CLIs': 'Tampilkan CLI yang belum terinstal',
|
|
134
138
|
'Not sharing': 'Tidak dibagikan',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Tidak ada yang dibagikan kecuali Anda memilih untuk mengikutinya.',
|
|
136
140
|
'Off': 'Nonaktif',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_IT = {
|
|
|
7
7
|
'About': 'Informazioni',
|
|
8
8
|
'Accent color': 'Colore di accento',
|
|
9
9
|
'Account': 'Account',
|
|
10
|
+
'Advanced': 'Avanzate',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Avanzate: proxy e percorsi personalizzati',
|
|
11
12
|
'Agent check failed': 'Verifica dell\'agente non riuscita',
|
|
12
13
|
'Agent is ready.': 'L\'agente è pronto.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_IT = {
|
|
|
131
132
|
'Not available for this daemon.': 'Non disponibile per questo daemon.',
|
|
132
133
|
'Not configured': 'Non configurato',
|
|
133
134
|
'Not installed': 'Non installato',
|
|
135
|
+
'Show {count} not installed': 'Mostra {count} non installati',
|
|
136
|
+
'Hide not installed': 'Nascondi non installati',
|
|
137
|
+
'Show not-installed CLIs': 'Mostra CLI non installati',
|
|
134
138
|
'Not sharing': 'Nessuna condivisione',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Non viene condiviso nulla a meno che tu non lo attivi.',
|
|
136
140
|
'Off': 'Disattivato',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_JA = {
|
|
|
7
7
|
'About': '概要',
|
|
8
8
|
'Accent color': 'アクセントカラー',
|
|
9
9
|
'Account': 'アカウント',
|
|
10
|
+
'Advanced': '詳細設定',
|
|
10
11
|
'Advanced: proxy & custom paths': '詳細設定:プロキシとカスタムパス',
|
|
11
12
|
'Agent check failed': 'エージェントの確認に失敗しました',
|
|
12
13
|
'Agent is ready.': 'エージェントの準備ができました。',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_JA = {
|
|
|
131
132
|
'Not available for this daemon.': 'このデーモンでは利用できません。',
|
|
132
133
|
'Not configured': '未設定',
|
|
133
134
|
'Not installed': '未インストール',
|
|
135
|
+
'Show {count} not installed': '未インストールの {count} 件を表示',
|
|
136
|
+
'Hide not installed': '未インストールを隠す',
|
|
137
|
+
'Show not-installed CLIs': '未インストールの CLI を表示',
|
|
134
138
|
'Not sharing': '共有していません',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'オプトインしない限り、何も共有されません。',
|
|
136
140
|
'Off': 'オフ',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_KO = {
|
|
|
7
7
|
'About': '정보',
|
|
8
8
|
'Accent color': '강조 색상',
|
|
9
9
|
'Account': '계정',
|
|
10
|
+
'Advanced': '고급',
|
|
10
11
|
'Advanced: proxy & custom paths': '고급: 프록시 및 사용자 지정 경로',
|
|
11
12
|
'Agent check failed': '에이전트 확인 실패',
|
|
12
13
|
'Agent is ready.': '에이전트가 준비되었습니다.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_KO = {
|
|
|
131
132
|
'Not available for this daemon.': '이 데몬에서는 사용할 수 없습니다.',
|
|
132
133
|
'Not configured': '구성되지 않음',
|
|
133
134
|
'Not installed': '설치되지 않음',
|
|
135
|
+
'Show {count} not installed': '설치되지 않은 {count}개 표시',
|
|
136
|
+
'Hide not installed': '설치되지 않은 항목 숨기기',
|
|
137
|
+
'Show not-installed CLIs': '설치되지 않은 CLI 표시',
|
|
134
138
|
'Not sharing': '공유하지 않음',
|
|
135
139
|
'Nothing is shared unless you opt in.': '직접 동의하지 않는 한 아무것도 공유되지 않습니다.',
|
|
136
140
|
'Off': '끄기',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_PL = {
|
|
|
7
7
|
'About': 'Informacje',
|
|
8
8
|
'Accent color': 'Kolor akcentu',
|
|
9
9
|
'Account': 'Konto',
|
|
10
|
+
'Advanced': 'Zaawansowane',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Zaawansowane: proxy i niestandardowe ścieżki',
|
|
11
12
|
'Agent check failed': 'Sprawdzenie agenta nie powiodło się',
|
|
12
13
|
'Agent is ready.': 'Agent jest gotowy.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_PL = {
|
|
|
131
132
|
'Not available for this daemon.': 'Niedostępne dla tego demona.',
|
|
132
133
|
'Not configured': 'Nieskonfigurowane',
|
|
133
134
|
'Not installed': 'Niezainstalowane',
|
|
135
|
+
'Show {count} not installed': 'Pokaż niezainstalowane ({count})',
|
|
136
|
+
'Hide not installed': 'Ukryj niezainstalowane',
|
|
137
|
+
'Show not-installed CLIs': 'Pokaż niezainstalowane CLI',
|
|
134
138
|
'Not sharing': 'Nieudostępniane',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Nic nie jest udostępniane, dopóki się na to nie zgodzisz.',
|
|
136
140
|
'Off': 'Wyłączone',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_PT_BR = {
|
|
|
7
7
|
'About': 'Sobre',
|
|
8
8
|
'Accent color': 'Cor de destaque',
|
|
9
9
|
'Account': 'Conta',
|
|
10
|
+
'Advanced': 'Avançado',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Avançado: proxy e caminhos personalizados',
|
|
11
12
|
'Agent check failed': 'Falha na verificação do agente',
|
|
12
13
|
'Agent is ready.': 'O agente está pronto.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_PT_BR = {
|
|
|
131
132
|
'Not available for this daemon.': 'Não disponível para este daemon.',
|
|
132
133
|
'Not configured': 'Não configurado',
|
|
133
134
|
'Not installed': 'Não instalado',
|
|
135
|
+
'Show {count} not installed': 'Mostrar {count} não instalados',
|
|
136
|
+
'Hide not installed': 'Ocultar não instalados',
|
|
137
|
+
'Show not-installed CLIs': 'Mostrar CLIs não instalados',
|
|
134
138
|
'Not sharing': 'Não compartilhando',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Nada é compartilhado a menos que você opte por isso.',
|
|
136
140
|
'Off': 'Desativado',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_RU = {
|
|
|
7
7
|
'About': 'О программе',
|
|
8
8
|
'Accent color': 'Акцентный цвет',
|
|
9
9
|
'Account': 'Аккаунт',
|
|
10
|
+
'Advanced': 'Дополнительно',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Дополнительно: прокси и пользовательские пути',
|
|
11
12
|
'Agent check failed': 'Проверка агента не удалась',
|
|
12
13
|
'Agent is ready.': 'Агент готов.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_RU = {
|
|
|
131
132
|
'Not available for this daemon.': 'Недоступно для этого демона.',
|
|
132
133
|
'Not configured': 'Не настроено',
|
|
133
134
|
'Not installed': 'Не установлено',
|
|
135
|
+
'Show {count} not installed': 'Показать неустановленные ({count})',
|
|
136
|
+
'Hide not installed': 'Скрыть неустановленные',
|
|
137
|
+
'Show not-installed CLIs': 'Показать неустановленные CLI',
|
|
134
138
|
'Not sharing': 'Не передаётся',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Ничего не передаётся, пока вы не включите это.',
|
|
136
140
|
'Off': 'Выкл.',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_TH = {
|
|
|
7
7
|
'About': 'เกี่ยวกับ',
|
|
8
8
|
'Accent color': 'สีเน้น',
|
|
9
9
|
'Account': 'บัญชี',
|
|
10
|
+
'Advanced': 'ขั้นสูง',
|
|
10
11
|
'Advanced: proxy & custom paths': 'ขั้นสูง: พร็อกซีและพาธที่กำหนดเอง',
|
|
11
12
|
'Agent check failed': 'ตรวจสอบเอเจนต์ไม่สำเร็จ',
|
|
12
13
|
'Agent is ready.': 'เอเจนต์พร้อมใช้งานแล้ว',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_TH = {
|
|
|
131
132
|
'Not available for this daemon.': 'ใช้ไม่ได้กับดีมอนนี้',
|
|
132
133
|
'Not configured': 'ยังไม่ได้กำหนดค่า',
|
|
133
134
|
'Not installed': 'ยังไม่ได้ติดตั้ง',
|
|
135
|
+
'Show {count} not installed': 'แสดงที่ยังไม่ได้ติดตั้ง {count} รายการ',
|
|
136
|
+
'Hide not installed': 'ซ่อนที่ยังไม่ได้ติดตั้ง',
|
|
137
|
+
'Show not-installed CLIs': 'แสดง CLI ที่ยังไม่ได้ติดตั้ง',
|
|
134
138
|
'Not sharing': 'ไม่ได้แชร์',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'จะไม่มีการแชร์สิ่งใดจนกว่าคุณจะเปิดใช้งานเอง',
|
|
136
140
|
'Off': 'ปิด',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_TR = {
|
|
|
7
7
|
'About': 'Hakkında',
|
|
8
8
|
'Accent color': 'Vurgu rengi',
|
|
9
9
|
'Account': 'Hesap',
|
|
10
|
+
'Advanced': 'Gelişmiş',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Gelişmiş: proxy ve özel yollar',
|
|
11
12
|
'Agent check failed': 'Aracı kontrolü başarısız oldu',
|
|
12
13
|
'Agent is ready.': 'Aracı hazır.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_TR = {
|
|
|
131
132
|
'Not available for this daemon.': 'Bu arka plan süreci için kullanılamaz.',
|
|
132
133
|
'Not configured': 'Yapılandırılmadı',
|
|
133
134
|
'Not installed': 'Yüklenmedi',
|
|
135
|
+
'Show {count} not installed': 'Yüklü olmayan {count} öğeyi göster',
|
|
136
|
+
'Hide not installed': 'Yüklü olmayanları gizle',
|
|
137
|
+
'Show not-installed CLIs': 'Yüklü olmayan CLI\'ları göster',
|
|
134
138
|
'Not sharing': 'Paylaşılmıyor',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Siz etkinleştirmedikçe hiçbir şey paylaşılmaz.',
|
|
136
140
|
'Off': 'Kapalı',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_UK = {
|
|
|
7
7
|
'About': 'Про програму',
|
|
8
8
|
'Accent color': 'Акцентний колір',
|
|
9
9
|
'Account': 'Обліковий запис',
|
|
10
|
+
'Advanced': 'Додатково',
|
|
10
11
|
'Advanced: proxy & custom paths': 'Додатково: проксі та власні шляхи',
|
|
11
12
|
'Agent check failed': 'Перевірку агента не пройдено',
|
|
12
13
|
'Agent is ready.': 'Агент готовий.',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_UK = {
|
|
|
131
132
|
'Not available for this daemon.': 'Недоступно для цього демона.',
|
|
132
133
|
'Not configured': 'Не налаштовано',
|
|
133
134
|
'Not installed': 'Не встановлено',
|
|
135
|
+
'Show {count} not installed': 'Показати невстановлені ({count})',
|
|
136
|
+
'Hide not installed': 'Сховати невстановлені',
|
|
137
|
+
'Show not-installed CLIs': 'Показати невстановлені CLI',
|
|
134
138
|
'Not sharing': 'Не поширюється',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'Нічого не поширюється, доки ви не увімкнете це самостійно.',
|
|
136
140
|
'Off': 'Вимкнено',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_UR = {
|
|
|
7
7
|
'About': 'تعارف',
|
|
8
8
|
'Accent color': 'نمایاں رنگ',
|
|
9
9
|
'Account': 'اکاؤنٹ',
|
|
10
|
+
'Advanced': 'اعلیٰ درجے کی ترتیبات',
|
|
10
11
|
'Advanced: proxy & custom paths': 'ایڈوانسڈ: پراکسی اور کسٹم پاتھز',
|
|
11
12
|
'Agent check failed': 'ایجنٹ چیک ناکام ہو گیا',
|
|
12
13
|
'Agent is ready.': 'ایجنٹ تیار ہے۔',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_UR = {
|
|
|
131
132
|
'Not available for this daemon.': 'اس ڈیمن کے لیے دستیاب نہیں۔',
|
|
132
133
|
'Not configured': 'کنفیگر نہیں ہے',
|
|
133
134
|
'Not installed': 'انسٹال نہیں ہے',
|
|
135
|
+
'Show {count} not installed': '{count} غیر انسٹال شدہ دکھائیں',
|
|
136
|
+
'Hide not installed': 'غیر انسٹال شدہ چھپائیں',
|
|
137
|
+
'Show not-installed CLIs': 'غیر انسٹال شدہ CLI دکھائیں',
|
|
134
138
|
'Not sharing': 'شیئر نہیں کیا جا رہا',
|
|
135
139
|
'Nothing is shared unless you opt in.': 'جب تک آپ خود شامل نہ ہوں، کچھ بھی شیئر نہیں کیا جاتا۔',
|
|
136
140
|
'Off': 'بند',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_ZH_CN = {
|
|
|
7
7
|
'About': '关于',
|
|
8
8
|
'Accent color': '强调色',
|
|
9
9
|
'Account': '账户',
|
|
10
|
+
'Advanced': '高级',
|
|
10
11
|
'Advanced: proxy & custom paths': '高级:代理与自定义路径',
|
|
11
12
|
'Agent check failed': '智能体检查失败',
|
|
12
13
|
'Agent is ready.': '智能体已就绪。',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_ZH_CN = {
|
|
|
131
132
|
'Not available for this daemon.': '此守护进程不支持该功能。',
|
|
132
133
|
'Not configured': '未配置',
|
|
133
134
|
'Not installed': '未安装',
|
|
135
|
+
'Show {count} not installed': '显示 {count} 个未安装',
|
|
136
|
+
'Hide not installed': '隐藏未安装',
|
|
137
|
+
'Show not-installed CLIs': '显示未安装的 CLI',
|
|
134
138
|
'Not sharing': '未共享',
|
|
135
139
|
'Nothing is shared unless you opt in.': '除非你主动选择,否则不会共享任何内容。',
|
|
136
140
|
'Off': '关闭',
|
|
@@ -7,6 +7,7 @@ export const SETTINGS_DIALOG_ZH_TW = {
|
|
|
7
7
|
'About': '關於',
|
|
8
8
|
'Accent color': '強調色',
|
|
9
9
|
'Account': '帳戶',
|
|
10
|
+
'Advanced': '進階',
|
|
10
11
|
'Advanced: proxy & custom paths': '進階:代理伺服器與自訂路徑',
|
|
11
12
|
'Agent check failed': '代理程式檢查失敗',
|
|
12
13
|
'Agent is ready.': '代理程式已就緒。',
|
|
@@ -131,6 +132,9 @@ export const SETTINGS_DIALOG_ZH_TW = {
|
|
|
131
132
|
'Not available for this daemon.': '此背景程序不支援此功能。',
|
|
132
133
|
'Not configured': '尚未設定',
|
|
133
134
|
'Not installed': '尚未安裝',
|
|
135
|
+
'Show {count} not installed': '顯示 {count} 個尚未安裝',
|
|
136
|
+
'Hide not installed': '隱藏尚未安裝',
|
|
137
|
+
'Show not-installed CLIs': '顯示尚未安裝的 CLI',
|
|
134
138
|
'Not sharing': '未共享',
|
|
135
139
|
'Nothing is shared unless you opt in.': '除非你主動選擇加入,否則不會共享任何內容。',
|
|
136
140
|
'Off': '關閉',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}:root,[data-admin-theme],[data-color-scheme=light]{color-scheme:light;--jini-bg:var(--jini-theme-light-bg,#fff);--jini-surface:var(--jini-theme-light-surface,#f5f5f5);--jini-text:var(--jini-theme-light-text,#202020);--jini-muted:var(--jini-theme-light-muted,#666);--jini-border:var(--jini-theme-light-border,#d9d9d9);--jini-primary:var(--jini-theme-light-primary,#363636);--jini-primary-ink:var(--jini-theme-light-primary-ink,#fff);--jini-danger:var(--jini-theme-light-danger,#b42318);--jini-success:var(--jini-theme-light-success,#18763b);--jini-warning:var(--jini-theme-light-warning,#845800)}[data-color-scheme=dark]{color-scheme:dark;--jini-bg:var(--jini-theme-dark-bg,#171717);--jini-surface:var(--jini-theme-dark-surface,#242424);--jini-text:var(--jini-theme-dark-text,#f0f0f0);--jini-muted:var(--jini-theme-dark-muted,#b3b3b3);--jini-border:var(--jini-theme-dark-border,#454545);--jini-primary:var(--jini-theme-dark-primary,#e0e0e0);--jini-primary-ink:var(--jini-theme-dark-primary-ink,#202020);--jini-danger:var(--jini-theme-dark-danger,#ff8b80);--jini-success:var(--jini-theme-dark-success,#79d69b);--jini-warning:var(--jini-theme-dark-warning,#ebc36b)}:root,[data-color-scheme=light],[data-theme=light]{--jini-chart-default-1:oklch(55.29% .1129 43.4);--jini-chart-default-2:oklch(50% .11 240);--jini-chart-default-3:oklch(64% .13 88);--jini-chart-default-4:oklch(58% .15 350);--jini-chart-default-5:oklch(50% .11 155);--jini-chart-default-6:oklch(48% .12 295)}[data-color-scheme=dark],[data-theme=dark]{--jini-chart-default-1:oklch(62% .11 44);--jini-chart-default-2:oklch(64% .11 240);--jini-chart-default-3:oklch(66% .13 88);--jini-chart-default-4:oklch(65% .14 350);--jini-chart-default-5:oklch(56% .12 155);--jini-chart-default-6:oklch(64% .12 295)}:root{--jini-font-body:system-ui, sans-serif;--jini-font-heading:system-ui, sans-serif;--jini-font-mono:ui-monospace, monospace;--jini-radius:8px;--jini-density:1}:root,[data-admin-theme],[data-color-scheme]{--jini-bg-panel:var(--jini-surface);--jini-bg-subtle:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-bg-subtle:color-mix(in srgb, var(--jini-surface) 75%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-bg-elevated:var(--jini-surface);--jini-border-soft:var(--jini-border);--jini-border-strong:var(--jini-border)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-border-strong:color-mix(in srgb, var(--jini-border) 75%, var(--jini-text))}}:root,[data-admin-theme],[data-color-scheme]{--jini-backdrop:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-backdrop:color-mix(in srgb, var(--jini-text) 42%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-text-strong:var(--jini-text);--jini-text-secondary:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-text-secondary:color-mix(in srgb, var(--jini-text) 80%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-text-muted:var(--jini-muted);--jini-text-faint:var(--jini-muted)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-text-faint:color-mix(in srgb, var(--jini-muted) 75%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-text-disabled:var(--jini-muted)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-text-disabled:color-mix(in srgb, var(--jini-muted) 60%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent:var(--jini-primary);--jini-accent-hover:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-hover:color-mix(in srgb, var(--jini-primary) 88%, var(--jini-text))}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent-strong:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-strong:color-mix(in srgb, var(--jini-primary) 85%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent-ink:var(--jini-primary-ink);--jini-accent-soft:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-soft:color-mix(in srgb, var(--jini-primary) 10%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent-ring:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-ring:color-mix(in srgb, var(--jini-primary) 22%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent:var(--jini-text);--jini-neutral-accent-hover:var(--jini-muted);--jini-neutral-accent-ink:var(--jini-bg);--jini-neutral-accent-text:var(--jini-text);--jini-neutral-accent-soft:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent-soft:color-mix(in srgb, var(--jini-text) 7%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent-ring:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent-ring:color-mix(in srgb, var(--jini-text) 16%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-link:var(--jini-primary);--jini-link-ink:var(--jini-primary-ink);--jini-success-bg:var(--jini-success)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-success-bg:color-mix(in srgb, var(--jini-success) 12%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-success-solid:var(--jini-success);--jini-success-solid-ink:var(--jini-bg);--jini-danger-bg:var(--jini-danger)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-danger-bg:color-mix(in srgb, var(--jini-danger) 12%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-warning-bg:var(--jini-warning)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-warning-bg:color-mix(in srgb, var(--jini-warning) 12%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-font-ui:var(--jini-font-body);--jini-font-display:var(--jini-font-heading);--jini-shadow-xs:0 1px 0 var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-xs:0 1px 0 color-mix(in srgb, var(--jini-text) 4%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-sm:0 1px 3px var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-sm:0 1px 3px color-mix(in srgb, var(--jini-text) 10%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-md:0 6px 24px var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-md:0 6px 24px color-mix(in srgb, var(--jini-text) 15%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-lg:0 24px 60px var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-lg:0 24px 60px color-mix(in srgb, var(--jini-text) 22%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-radius-xs:calc(var(--jini-radius) * .5);--jini-radius-sm:calc(var(--jini-radius) * .75);--jini-radius-md:calc(var(--jini-radius) * 1.25);--jini-radius-lg:calc(var(--jini-radius) * 1.5);--jini-radius-pill:999px;--jini-space-1:calc(.25rem * var(--jini-density));--jini-space-2:calc(.5rem * var(--jini-density));--jini-space-3:calc(.75rem * var(--jini-density));--jini-space-4:calc(1rem * var(--jini-density));--jini-space-5:calc(1.25rem * var(--jini-density));--jini-space-6:calc(1.5rem * var(--jini-density));--jini-space-7:calc(2rem * var(--jini-density));--jini-space-8:calc(2.5rem * var(--jini-density));--jini-font-size-2xs:.6875rem;--jini-font-size-xs:.75rem;--jini-font-size-sm:.8125rem;--jini-font-size-base:.875rem;--jini-font-size-md:.95rem;--jini-font-size-lg:1.05rem;--jini-font-size-xl:1.65rem;--jini-font-weight-normal:400;--jini-font-weight-medium:500;--jini-font-weight-semibold:600;--jini-font-weight-bold:700;--jini-line-tight:1.25;--jini-line-normal:1.5;--jini-line-relaxed:1.7;--jini-duration-fast:.12s;--jini-duration-base:.2s;--jini-duration-slow:.32s;--jini-ease-out:cubic-bezier(.23, 1, .32, 1);--jini-ease-in-out:cubic-bezier(.4, 0, .2, 1);--jini-transition-base:var(--jini-duration-base) var(--jini-ease-out);--jini-z-dropdown:100;--jini-z-sticky:200;--jini-z-overlay:300;--jini-z-modal:400;--jini-z-toast:500;--jini-modal-padding:24px;--jini-sidebar-width:240px}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--radius-sm:.25rem;--radius-md:.375rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.right-2{right:calc(var(--spacing) * 2)}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-1{margin-block:var(--spacing)}.mt-4{margin-top:calc(var(--spacing) * 4)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-px{height:1px}.max-h-\[--radix-select-content-available-height\]{max-height:--radix-select-content-available-height}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-9{width:calc(var(--spacing) * 9)}.w-full{width:100%}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\[--radix-select-content-transform-origin\]{transform-origin:--radix-select-content-transform-origin}.cursor-default{cursor:default}.flex-col{flex-direction:column}.place-content-center{place-content:center}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-input{border-color:var(--jini-border)}.border-primary{border-color:var(--jini-primary)}.bg-background{background-color:var(--jini-bg)}.bg-destructive{background-color:var(--jini-danger)}.bg-muted,.bg-muted\/50{background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--jini-surface) 50%, transparent)}}.bg-primary{background-color:var(--jini-primary)}.bg-secondary{background-color:var(--jini-surface)}.bg-transparent{background-color:#0000}.fill-primary{fill:var(--jini-primary)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-0{padding-top:0}.pr-8{padding-right:calc(var(--spacing) * 8)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-current{color:currentColor}.text-destructive-foreground{color:var(--jini-bg)}.text-foreground{color:var(--jini-text)}.text-input{color:var(--jini-border)}.text-muted-foreground{color:var(--jini-muted)}.text-primary{color:var(--jini-primary)}.text-primary-foreground{color:var(--jini-primary-ink)}.text-secondary-foreground{color:var(--jini-text)}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--jini-bg)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--jini-text)}.placeholder\:text-muted-foreground::placeholder{color:var(--jini-muted)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--jini-surface)}.hover\:bg-destructive\/90:hover{background-color:var(--jini-danger)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--jini-danger) 90%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--jini-surface) 50%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--jini-primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--jini-surface) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--jini-text)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--jini-surface)}.focus\:text-accent-foreground:focus{color:var(--jini-text)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--jini-primary)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--jini-primary)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--jini-surface) 50%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--jini-muted)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--jini-primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--jini-primary-ink)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--jini-surface)}@media (min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}:root,[data-admin-theme],[data-color-scheme=light]{color-scheme:light;--jini-bg:var(--jini-theme-light-bg,#fff);--jini-surface:var(--jini-theme-light-surface,#f5f5f5);--jini-text:var(--jini-theme-light-text,#202020);--jini-muted:var(--jini-theme-light-muted,#666);--jini-border:var(--jini-theme-light-border,#d9d9d9);--jini-primary:var(--jini-theme-light-primary,#363636);--jini-primary-ink:var(--jini-theme-light-primary-ink,#fff);--jini-danger:var(--jini-theme-light-danger,#b42318);--jini-success:var(--jini-theme-light-success,#18763b);--jini-warning:var(--jini-theme-light-warning,#845800)}[data-color-scheme=dark]{color-scheme:dark;--jini-bg:var(--jini-theme-dark-bg,#171717);--jini-surface:var(--jini-theme-dark-surface,#242424);--jini-text:var(--jini-theme-dark-text,#f0f0f0);--jini-muted:var(--jini-theme-dark-muted,#b3b3b3);--jini-border:var(--jini-theme-dark-border,#454545);--jini-primary:var(--jini-theme-dark-primary,#e0e0e0);--jini-primary-ink:var(--jini-theme-dark-primary-ink,#202020);--jini-danger:var(--jini-theme-dark-danger,#ff8b80);--jini-success:var(--jini-theme-dark-success,#79d69b);--jini-warning:var(--jini-theme-dark-warning,#ebc36b)}:root,[data-color-scheme=light],[data-theme=light]{--jini-chart-default-1:oklch(55.29% .1129 43.4);--jini-chart-default-2:oklch(50% .11 240);--jini-chart-default-3:oklch(64% .13 88);--jini-chart-default-4:oklch(58% .15 350);--jini-chart-default-5:oklch(50% .11 155);--jini-chart-default-6:oklch(48% .12 295)}[data-color-scheme=dark],[data-theme=dark]{--jini-chart-default-1:oklch(62% .11 44);--jini-chart-default-2:oklch(64% .11 240);--jini-chart-default-3:oklch(66% .13 88);--jini-chart-default-4:oklch(65% .14 350);--jini-chart-default-5:oklch(56% .12 155);--jini-chart-default-6:oklch(64% .12 295)}:root{--jini-font-body:system-ui, sans-serif;--jini-font-heading:system-ui, sans-serif;--jini-font-mono:ui-monospace, monospace;--jini-radius:8px;--jini-density:1}:root,[data-admin-theme],[data-color-scheme]{--jini-bg-panel:var(--jini-surface);--jini-bg-subtle:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-bg-subtle:color-mix(in srgb, var(--jini-surface) 75%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-bg-elevated:var(--jini-surface);--jini-border-soft:var(--jini-border);--jini-border-strong:var(--jini-border)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-border-strong:color-mix(in srgb, var(--jini-border) 75%, var(--jini-text))}}:root,[data-admin-theme],[data-color-scheme]{--jini-backdrop:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-backdrop:color-mix(in srgb, var(--jini-text) 42%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-text-strong:var(--jini-text);--jini-text-secondary:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-text-secondary:color-mix(in srgb, var(--jini-text) 80%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-text-muted:var(--jini-muted);--jini-text-faint:var(--jini-muted)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-text-faint:color-mix(in srgb, var(--jini-muted) 75%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-text-disabled:var(--jini-muted)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-text-disabled:color-mix(in srgb, var(--jini-muted) 60%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent:var(--jini-primary);--jini-accent-hover:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-hover:color-mix(in srgb, var(--jini-primary) 88%, var(--jini-text))}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent-strong:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-strong:color-mix(in srgb, var(--jini-primary) 85%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent-ink:var(--jini-primary-ink);--jini-accent-soft:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-soft:color-mix(in srgb, var(--jini-primary) 10%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-accent-ring:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-accent-ring:color-mix(in srgb, var(--jini-primary) 22%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent:var(--jini-text);--jini-neutral-accent-hover:var(--jini-muted);--jini-neutral-accent-ink:var(--jini-bg);--jini-neutral-accent-text:var(--jini-text);--jini-neutral-accent-soft:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent-soft:color-mix(in srgb, var(--jini-text) 7%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent-ring:var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-neutral-accent-ring:color-mix(in srgb, var(--jini-text) 16%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-link:var(--jini-primary);--jini-link-ink:var(--jini-primary-ink);--jini-success-bg:var(--jini-success)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-success-bg:color-mix(in srgb, var(--jini-success) 12%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-success-solid:var(--jini-success);--jini-success-solid-ink:var(--jini-bg);--jini-danger-bg:var(--jini-danger)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-danger-bg:color-mix(in srgb, var(--jini-danger) 12%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-warning-bg:var(--jini-warning)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-warning-bg:color-mix(in srgb, var(--jini-warning) 12%, var(--jini-bg))}}:root,[data-admin-theme],[data-color-scheme]{--jini-font-ui:var(--jini-font-body);--jini-font-display:var(--jini-font-heading);--jini-shadow-xs:0 1px 0 var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-xs:0 1px 0 color-mix(in srgb, var(--jini-text) 4%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-sm:0 1px 3px var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-sm:0 1px 3px color-mix(in srgb, var(--jini-text) 10%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-md:0 6px 24px var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-md:0 6px 24px color-mix(in srgb, var(--jini-text) 15%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-lg:0 24px 60px var(--jini-text)}@supports (color:color-mix(in lab, red, red)){:root,[data-admin-theme],[data-color-scheme]{--jini-shadow-lg:0 24px 60px color-mix(in srgb, var(--jini-text) 22%, transparent)}}:root,[data-admin-theme],[data-color-scheme]{--jini-radius-xs:calc(var(--jini-radius) * .5);--jini-radius-sm:calc(var(--jini-radius) * .75);--jini-radius-md:calc(var(--jini-radius) * 1.25);--jini-radius-lg:calc(var(--jini-radius) * 1.5);--jini-radius-pill:999px;--jini-space-1:calc(.25rem * var(--jini-density));--jini-space-2:calc(.5rem * var(--jini-density));--jini-space-3:calc(.75rem * var(--jini-density));--jini-space-4:calc(1rem * var(--jini-density));--jini-space-5:calc(1.25rem * var(--jini-density));--jini-space-6:calc(1.5rem * var(--jini-density));--jini-space-7:calc(2rem * var(--jini-density));--jini-space-8:calc(2.5rem * var(--jini-density));--jini-font-size-2xs:.6875rem;--jini-font-size-xs:.75rem;--jini-font-size-sm:.8125rem;--jini-font-size-base:.875rem;--jini-font-size-md:.95rem;--jini-font-size-lg:1.05rem;--jini-font-size-xl:1.65rem;--jini-font-weight-normal:400;--jini-font-weight-medium:500;--jini-font-weight-semibold:600;--jini-font-weight-bold:700;--jini-line-tight:1.25;--jini-line-normal:1.5;--jini-line-relaxed:1.7;--jini-duration-fast:.12s;--jini-duration-base:.2s;--jini-duration-slow:.32s;--jini-ease-out:cubic-bezier(.23, 1, .32, 1);--jini-ease-in-out:cubic-bezier(.4, 0, .2, 1);--jini-transition-base:var(--jini-duration-base) var(--jini-ease-out);--jini-z-dropdown:100;--jini-z-sticky:200;--jini-z-overlay:300;--jini-z-modal:400;--jini-z-toast:500;--jini-modal-padding:24px;--jini-sidebar-width:240px}@layer theme{:root,:host{--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--radius-sm:.25rem;--radius-md:.375rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.right-2{right:calc(var(--spacing) * 2)}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-1{margin-block:var(--spacing)}.mt-4{margin-top:calc(var(--spacing) * 4)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-px{height:1px}.max-h-\[--radix-select-content-available-height\]{max-height:--radix-select-content-available-height}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-9{width:calc(var(--spacing) * 9)}.w-full{width:100%}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\[--radix-select-content-transform-origin\]{transform-origin:--radix-select-content-transform-origin}.cursor-default{cursor:default}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:var(--jini-radius)}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-input{border-color:var(--jini-border)}.border-primary{border-color:var(--jini-primary)}.bg-background{background-color:var(--jini-bg)}.bg-destructive{background-color:var(--jini-danger)}.bg-muted,.bg-muted\/50{background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--jini-surface) 50%, transparent)}}.bg-primary{background-color:var(--jini-primary)}.bg-secondary{background-color:var(--jini-surface)}.bg-transparent{background-color:#0000}.fill-primary{fill:var(--jini-primary)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-0{padding-top:0}.pr-8{padding-right:calc(var(--spacing) * 8)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-current{color:currentColor}.text-destructive-foreground{color:var(--jini-bg)}.text-foreground{color:var(--jini-text)}.text-input{color:var(--jini-border)}.text-muted-foreground{color:var(--jini-muted)}.text-primary{color:var(--jini-primary)}.text-primary-foreground{color:var(--jini-primary-ink)}.text-secondary-foreground{color:var(--jini-text)}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--jini-bg)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--jini-text)}.placeholder\:text-muted-foreground::placeholder{color:var(--jini-muted)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--jini-surface)}.hover\:bg-destructive\/90:hover{background-color:var(--jini-danger)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--jini-danger) 90%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--jini-surface) 50%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--jini-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--jini-primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--jini-surface) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--jini-text)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--jini-surface)}.focus\:text-accent-foreground:focus{color:var(--jini-text)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--jini-primary)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--jini-primary)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--jini-surface)}@supports (color:color-mix(in lab, red, red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--jini-surface) 50%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--jini-muted)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--jini-primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--jini-primary-ink)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--jini-surface)}@media (min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}.jini-data-table-frame{border:1px solid var(--jini-border);border-radius:var(--jini-radius);background:var(--jini-bg);min-width:0;max-width:100%;color:var(--jini-text);overflow:hidden}.jini-data-table-scroll,.jini-data-table-frame>[data-slot=table-container]{overscroll-behavior-x:contain;width:100%;max-height:28rem;overflow:auto}.jini-data-table{border-collapse:separate;border-spacing:0;width:100%;font-family:var(--jini-font-body);font-size:var(--jini-font-size-sm);line-height:var(--jini-line-normal);font-variant-numeric:tabular-nums}.jini-data-table th,.jini-data-table td{text-align:left;vertical-align:middle;white-space:nowrap;border-bottom:1px solid var(--jini-border);height:2.5rem;padding:.625rem .875rem}.jini-data-table th{z-index:1;background:var(--jini-surface);color:var(--jini-muted);font-size:var(--jini-font-size-xs);font-weight:var(--jini-font-weight-semibold);position:sticky;top:0}.jini-data-table tbody tr:last-child td{border-bottom:0}.jini-data-table tbody tr:nth-child(2n){background:var(--jini-bg-subtle)}.jini-data-table tbody tr:hover,.jini-data-table tbody tr:focus-visible{background:var(--jini-surface)}.jini-data-table tbody tr[role=button]{cursor:pointer}.jini-data-table [data-numeric=true]{text-align:right}.jini-data-table-sort{width:100%;min-height:1.5rem;color:inherit;font:inherit;text-align:inherit;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:.625rem;padding:0;display:inline-flex}.jini-data-table [data-numeric=true] .jini-data-table-sort{justify-content:flex-end}.jini-data-table th[aria-sort=ascending],.jini-data-table th[aria-sort=descending],.jini-data-table-sort:hover{color:var(--jini-text)}.jini-data-table td.jini-data-table-empty{height:8rem;color:var(--jini-muted);text-align:center}.jini-data-table-pagination{border-top:1px solid var(--jini-border);color:var(--jini-muted);font-size:var(--jini-font-size-xs);font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.625rem .875rem;display:flex}.jini-data-table-pagination-controls{gap:.5rem;display:flex}.jini-data-table-pagination button{border:1px solid var(--jini-border);border-radius:var(--jini-radius-sm);background:var(--jini-bg);min-height:2rem;color:var(--jini-text);font:inherit;cursor:pointer;padding:.375rem .75rem}.jini-data-table-pagination button:hover:not(:disabled){background:var(--jini-surface)}.jini-data-table-pagination button:disabled{opacity:.5;cursor:default}.jini-data-table-sort:focus-visible,.jini-data-table-pagination button:focus-visible,.jini-data-table tr[role=button]:focus-visible{outline:2px solid var(--jini-primary);outline-offset:-2px}.jini-chart{width:100%;min-width:0;color:var(--jini-chart-text,var(--jini-text));font-family:var(--jini-font-body);margin:0;font-size:.75rem}.jini-chart-caption{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.jini-chart .recharts-surface:focus-visible{outline:2px solid var(--jini-chart-1,var(--jini-chart-default-1));outline-offset:3px;border-radius:var(--jini-radius-sm)}.jini-chart-tooltip{border:1px solid var(--jini-chart-grid,var(--jini-border));border-radius:var(--jini-radius-sm);background:var(--jini-chart-surface,var(--jini-bg));min-width:9rem;max-width:min(22rem,80vw);color:var(--jini-chart-text,var(--jini-text));box-shadow:var(--jini-shadow-md);padding:.625rem .75rem;font-size:.75rem;line-height:1.5}.jini-chart-tooltip-label{overflow-wrap:anywhere;margin-bottom:.375rem;font-weight:600}.jini-chart-tooltip-items{gap:.375rem;display:grid}.jini-chart-tooltip-item{align-items:center;gap:.5rem;display:flex}.jini-chart-swatch{border-radius:2px;flex:none;width:.5rem;height:.5rem;display:inline-block}.jini-chart-tooltip-name{color:var(--jini-chart-axis,var(--jini-muted));overflow-wrap:anywhere;flex:1}.jini-chart-tooltip-value,.jini-chart-legend-value{font-variant-numeric:tabular-nums;font-weight:600}.jini-chart-legend{color:var(--jini-chart-axis,var(--jini-muted));flex-wrap:wrap;justify-content:center;gap:.5rem 1rem;margin:.5rem 0 0;padding:0;line-height:1.5;list-style:none;display:flex}.jini-chart-legend-item{overflow-wrap:anywhere;align-items:center;gap:.375rem;min-width:0;max-width:100%;display:inline-flex}.jini-chart-legend-item>span:not(.jini-chart-swatch){min-width:0}.jini-chart-legend-value{color:var(--jini-chart-text,var(--jini-text))}.jini-chart-total{fill:var(--jini-chart-text,var(--jini-text));font-variant-numeric:tabular-nums;letter-spacing:-.04em;pointer-events:none;font-size:1.75rem;font-weight:600}.jini-chart-total-label{fill:var(--jini-chart-axis,var(--jini-muted));letter-spacing:normal;font-size:.75rem;font-weight:400}@media (prefers-reduced-motion:reduce){.jini-chart *,.jini-chart :before,.jini-chart :after{transition:none!important;animation:none!important}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { getNumericColumnKeys } from '../../table-data.js';
|
|
2
3
|
export function DataTable({ columns, rows, onRowClick }) {
|
|
3
|
-
|
|
4
|
+
const numericKeys = getNumericColumnKeys({ columns, rows });
|
|
5
|
+
return (_jsx("div", { className: "jini-data-table-frame", "data-table-provider": "native", children: _jsx("div", { className: "jini-data-table-scroll", children: _jsxs("table", { className: "jini-data-table", children: [_jsx("thead", { children: _jsx("tr", { children: columns.map((column) => (_jsx("th", { scope: "col", "data-numeric": numericKeys.has(column.key), children: column.label }, column.key))) }) }), _jsxs("tbody", { children: [rows.length === 0 && _jsx("tr", { children: _jsx("td", { className: "jini-data-table-empty", colSpan: columns.length, children: "No results." }) }), rows.map((row, index) => (_jsx("tr", { onClick: onRowClick ? () => onRowClick(row, index) : undefined, role: onRowClick ? 'button' : undefined, tabIndex: onRowClick ? 0 : undefined, onKeyDown: onRowClick ? (event) => {
|
|
6
|
+
if (event.target === event.currentTarget && (event.key === 'Enter' || event.key === ' ')) {
|
|
7
|
+
event.preventDefault();
|
|
8
|
+
onRowClick(row, index);
|
|
9
|
+
}
|
|
10
|
+
} : undefined, children: columns.map((column) => (_jsx("td", { "data-numeric": numericKeys.has(column.key), children: String(row[column.key] ?? '') }, column.key))) }, index)))] })] }) }) }));
|
|
4
11
|
}
|
|
5
12
|
//# sourceMappingURL=data-table.js.map
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type { InteractiveComponentManifest } from '../../types.js';
|
|
3
3
|
/**
|
|
4
|
-
* Zero-React
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* than a stub. A `shadcn`/`21st`/`magic` sibling folder under `providers/` replaces this as the
|
|
8
|
-
* default resolution once those adapters exist; `native` stays as the dependency-free fallback.
|
|
4
|
+
* Zero-React manifest for the dependency-free HTML fallback. shadcn now owns preferred table
|
|
5
|
+
* resolution; native stays available without external component primitives. Both providers
|
|
6
|
+
* share the table presentation stylesheet, so fallback does not mean raw browser markup.
|
|
9
7
|
*/
|
|
10
8
|
/**
|
|
11
9
|
* `.passthrough()`, not `.strict()` — an A2UI-embedded instance of this component may carry an
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Zero-React
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* than a stub. A `shadcn`/`21st`/`magic` sibling folder under `providers/` replaces this as the
|
|
7
|
-
* default resolution once those adapters exist; `native` stays as the dependency-free fallback.
|
|
3
|
+
* Zero-React manifest for the dependency-free HTML fallback. shadcn now owns preferred table
|
|
4
|
+
* resolution; native stays available without external component primitives. Both providers
|
|
5
|
+
* share the table presentation stylesheet, so fallback does not mean raw browser markup.
|
|
8
6
|
*/
|
|
9
7
|
/**
|
|
10
8
|
* `.passthrough()`, not `.strict()` — an A2UI-embedded instance of this component may carry an
|
|
@@ -24,8 +22,8 @@ export const nativeDataTablePropsSchema = z
|
|
|
24
22
|
export const nativeDataTableManifest = {
|
|
25
23
|
id: 'native.data-table',
|
|
26
24
|
provider: 'native',
|
|
27
|
-
capabilities: ['data-table', 'table', 'tabular-data'],
|
|
25
|
+
capabilities: ['data-table', 'table', 'tabular-data', 'spreadsheet', 'list-of-records'],
|
|
28
26
|
propsSchema: nativeDataTablePropsSchema,
|
|
29
|
-
description: '
|
|
27
|
+
description: 'Styled HTML table fallback for tabular data, spreadsheets and lists of records: columns + rows, optional row click. Borders, row separators, padded cells, muted left-aligned headers, hover and horizontal scroll. No sorting or paging; prefer shadcn.data-table for the full table experience. Load @jini-ai/ui/interactive-ui.css in the renderer host.',
|
|
30
28
|
};
|
|
31
29
|
//# sourceMappingURL=data-table.manifest.js.map
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Bar, BarChart as RechartsBarChart, CartesianGrid,
|
|
3
|
-
import {
|
|
2
|
+
import { Bar, BarChart as RechartsBarChart, CartesianGrid, Tooltip, XAxis, YAxis } from 'recharts';
|
|
3
|
+
import { CHART_AXIS_PROPS, CHART_CURSOR, CHART_GRID_STROKE, CHART_PRIMARY_COLOR } from './chart-tokens.js';
|
|
4
|
+
import { chartTickFormatter, createChartConfig } from './chart-config.js';
|
|
5
|
+
import { ChartContainer, ChartTooltipContent } from './chart.js';
|
|
4
6
|
export function BarChart({ data, categoryKey, valueKey, color = CHART_PRIMARY_COLOR }) {
|
|
5
|
-
|
|
7
|
+
const config = createChartConfig({ series: [{ key: valueKey, label: valueKey }] }, { color });
|
|
8
|
+
const title = `${valueKey} by ${categoryKey}`;
|
|
9
|
+
const description = `Bar chart with ${data.length} categories. Use arrow keys to explore values.`;
|
|
10
|
+
return (_jsx(ChartContainer, { config: config, title: title, description: description, children: _jsxs(RechartsBarChart, { data: data, accessibilityLayer: true, title: title, desc: description, margin: { top: 16, right: 12, bottom: 8, left: 0 }, barCategoryGap: "24%", children: [_jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: CHART_GRID_STROKE, strokeOpacity: 0.6, vertical: false }), _jsx(XAxis, { dataKey: categoryKey, interval: 0, ...CHART_AXIS_PROPS }), _jsx(YAxis, { ...CHART_AXIS_PROPS, tickFormatter: chartTickFormatter, width: 48 }), _jsx(Tooltip, { cursor: CHART_CURSOR, content: _jsx(ChartTooltipContent, {}), isAnimationActive: false }), _jsx(Bar, { dataKey: valueKey, fill: config[valueKey].color, radius: [6, 6, 0, 0], maxBarSize: 40, isAnimationActive: false })] }) }));
|
|
6
11
|
}
|
|
7
12
|
//# sourceMappingURL=bar-chart.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface ChartSeries {
|
|
2
|
+
readonly label: string;
|
|
3
|
+
readonly color: string;
|
|
4
|
+
readonly value?: number;
|
|
5
|
+
}
|
|
6
|
+
/** Provider-local configuration shared by marks, tooltip swatches and the legend. */
|
|
7
|
+
export type ChartConfig = Readonly<Record<string, ChartSeries>>;
|
|
8
|
+
interface SeriesInput {
|
|
9
|
+
readonly key: string;
|
|
10
|
+
readonly label: string;
|
|
11
|
+
readonly value?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Assign the existing CSS palette to named series without mutating agent data.
|
|
15
|
+
* @param input Series in display order, with stable keys independent of display labels.
|
|
16
|
+
* @param options Optional legacy color override, applied to every series.
|
|
17
|
+
* @returns A config keyed by series identity, including duplicate display labels.
|
|
18
|
+
* @complexity O(n) time and space for n series; no I/O.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createChartConfig({ series }: {
|
|
21
|
+
readonly series: readonly SeriesInput[];
|
|
22
|
+
}, { color }?: {
|
|
23
|
+
readonly color?: string | undefined;
|
|
24
|
+
}): ChartConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Format chart numbers with Intl; preserve categorical strings without numeric coercion.
|
|
27
|
+
* @param input The value supplied by an axis, tooltip, legend or donut total.
|
|
28
|
+
* @param options Compact notation for ticks/totals, standard notation for exact values.
|
|
29
|
+
* @returns Display text, or an empty string for a missing value.
|
|
30
|
+
* @complexity O(k) time and space for k characters in the formatted value; no I/O.
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatChartValue({ value }: {
|
|
33
|
+
readonly value: unknown;
|
|
34
|
+
}, { notation }?: {
|
|
35
|
+
readonly notation?: 'standard' | 'compact';
|
|
36
|
+
}): string;
|
|
37
|
+
/** Recharts callback convention is positional; all formatting delegates to the shared owner. */
|
|
38
|
+
export declare const chartTickFormatter: (value: unknown) => string;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=chart-config.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CHART_SERIES_COLORS } from './chart-tokens.js';
|
|
2
|
+
/**
|
|
3
|
+
* Assign the existing CSS palette to named series without mutating agent data.
|
|
4
|
+
* @param input Series in display order, with stable keys independent of display labels.
|
|
5
|
+
* @param options Optional legacy color override, applied to every series.
|
|
6
|
+
* @returns A config keyed by series identity, including duplicate display labels.
|
|
7
|
+
* @complexity O(n) time and space for n series; no I/O.
|
|
8
|
+
*/
|
|
9
|
+
export function createChartConfig({ series }, { color } = {}) {
|
|
10
|
+
return Object.fromEntries(series.map((entry, index) => [entry.key, {
|
|
11
|
+
label: entry.label,
|
|
12
|
+
color: color ?? CHART_SERIES_COLORS[index % CHART_SERIES_COLORS.length],
|
|
13
|
+
...(entry.value === undefined ? {} : { value: entry.value }),
|
|
14
|
+
}]));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Format chart numbers with Intl; preserve categorical strings without numeric coercion.
|
|
18
|
+
* @param input The value supplied by an axis, tooltip, legend or donut total.
|
|
19
|
+
* @param options Compact notation for ticks/totals, standard notation for exact values.
|
|
20
|
+
* @returns Display text, or an empty string for a missing value.
|
|
21
|
+
* @complexity O(k) time and space for k characters in the formatted value; no I/O.
|
|
22
|
+
*/
|
|
23
|
+
export function formatChartValue({ value }, { notation = 'standard' } = {}) {
|
|
24
|
+
if (value == null)
|
|
25
|
+
return '';
|
|
26
|
+
if (typeof value !== 'number')
|
|
27
|
+
return String(value);
|
|
28
|
+
return new Intl.NumberFormat('en-US', { notation, maximumFractionDigits: notation === 'compact' ? 1 : 20 }).format(value);
|
|
29
|
+
}
|
|
30
|
+
/** Recharts callback convention is positional; all formatting delegates to the shared owner. */
|
|
31
|
+
export const chartTickFormatter = (value) => formatChartValue({ value }, { notation: 'compact' });
|
|
32
|
+
//# sourceMappingURL=chart-config.js.map
|