@databricks/appkit-ui 0.0.2
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/CLAUDE.md +3 -0
- package/DCO +25 -0
- package/LICENSE +203 -0
- package/NOTICE.md +73 -0
- package/README.md +35 -0
- package/bin/setup-claude.js +190 -0
- package/dist/js/arrow/arrow-client.d.ts +64 -0
- package/dist/js/arrow/arrow-client.d.ts.map +1 -0
- package/dist/js/arrow/arrow-client.js +181 -0
- package/dist/js/arrow/arrow-client.js.map +1 -0
- package/dist/js/arrow/index.js +3 -0
- package/dist/js/arrow/lazy-arrow.d.ts +23 -0
- package/dist/js/arrow/lazy-arrow.d.ts.map +1 -0
- package/dist/js/arrow/lazy-arrow.js +86 -0
- package/dist/js/arrow/lazy-arrow.js.map +1 -0
- package/dist/js/constants.d.ts +10 -0
- package/dist/js/constants.d.ts.map +1 -0
- package/dist/js/constants.js +30 -0
- package/dist/js/constants.js.map +1 -0
- package/dist/js/index.d.ts +8 -0
- package/dist/js/index.js +8 -0
- package/dist/js/sse/connect-sse.d.ts +14 -0
- package/dist/js/sse/connect-sse.d.ts.map +1 -0
- package/dist/js/sse/connect-sse.js +128 -0
- package/dist/js/sse/connect-sse.js.map +1 -0
- package/dist/js/sse/types.d.ts +34 -0
- package/dist/js/sse/types.d.ts.map +1 -0
- package/dist/react/charts/area/index.d.ts +33 -0
- package/dist/react/charts/area/index.d.ts.map +1 -0
- package/dist/react/charts/area/index.js +29 -0
- package/dist/react/charts/area/index.js.map +1 -0
- package/dist/react/charts/bar/index.d.ts +43 -0
- package/dist/react/charts/bar/index.d.ts.map +1 -0
- package/dist/react/charts/bar/index.js +39 -0
- package/dist/react/charts/bar/index.js.map +1 -0
- package/dist/react/charts/base.d.ts +89 -0
- package/dist/react/charts/base.d.ts.map +1 -0
- package/dist/react/charts/base.js +123 -0
- package/dist/react/charts/base.js.map +1 -0
- package/dist/react/charts/chart-error-boundary.js +37 -0
- package/dist/react/charts/chart-error-boundary.js.map +1 -0
- package/dist/react/charts/constants.d.ts +22 -0
- package/dist/react/charts/constants.d.ts.map +1 -0
- package/dist/react/charts/constants.js +86 -0
- package/dist/react/charts/constants.js.map +1 -0
- package/dist/react/charts/create-chart.d.ts +26 -0
- package/dist/react/charts/create-chart.d.ts.map +1 -0
- package/dist/react/charts/create-chart.js +55 -0
- package/dist/react/charts/create-chart.js.map +1 -0
- package/dist/react/charts/empty.js +16 -0
- package/dist/react/charts/empty.js.map +1 -0
- package/dist/react/charts/error.js +16 -0
- package/dist/react/charts/error.js.map +1 -0
- package/dist/react/charts/heatmap/index.d.ts +42 -0
- package/dist/react/charts/heatmap/index.d.ts.map +1 -0
- package/dist/react/charts/heatmap/index.js +38 -0
- package/dist/react/charts/heatmap/index.js.map +1 -0
- package/dist/react/charts/index.js +18 -0
- package/dist/react/charts/line/index.d.ts +34 -0
- package/dist/react/charts/line/index.d.ts.map +1 -0
- package/dist/react/charts/line/index.js +30 -0
- package/dist/react/charts/line/index.js.map +1 -0
- package/dist/react/charts/loading.js +13 -0
- package/dist/react/charts/loading.js.map +1 -0
- package/dist/react/charts/normalize.d.ts +37 -0
- package/dist/react/charts/normalize.d.ts.map +1 -0
- package/dist/react/charts/normalize.js +256 -0
- package/dist/react/charts/normalize.js.map +1 -0
- package/dist/react/charts/options.d.ts +39 -0
- package/dist/react/charts/options.d.ts.map +1 -0
- package/dist/react/charts/options.js +212 -0
- package/dist/react/charts/options.js.map +1 -0
- package/dist/react/charts/pie/index.d.ts +57 -0
- package/dist/react/charts/pie/index.d.ts.map +1 -0
- package/dist/react/charts/pie/index.js +50 -0
- package/dist/react/charts/pie/index.js.map +1 -0
- package/dist/react/charts/radar/index.d.ts +32 -0
- package/dist/react/charts/radar/index.d.ts.map +1 -0
- package/dist/react/charts/radar/index.js +28 -0
- package/dist/react/charts/radar/index.js.map +1 -0
- package/dist/react/charts/scatter/index.d.ts +32 -0
- package/dist/react/charts/scatter/index.d.ts.map +1 -0
- package/dist/react/charts/scatter/index.js +28 -0
- package/dist/react/charts/scatter/index.js.map +1 -0
- package/dist/react/charts/theme.d.ts +23 -0
- package/dist/react/charts/theme.d.ts.map +1 -0
- package/dist/react/charts/theme.js +96 -0
- package/dist/react/charts/theme.js.map +1 -0
- package/dist/react/charts/types.d.ts +160 -0
- package/dist/react/charts/types.d.ts.map +1 -0
- package/dist/react/charts/types.js +17 -0
- package/dist/react/charts/types.js.map +1 -0
- package/dist/react/charts/utils.d.ts +36 -0
- package/dist/react/charts/utils.d.ts.map +1 -0
- package/dist/react/charts/utils.js +77 -0
- package/dist/react/charts/utils.js.map +1 -0
- package/dist/react/charts/wrapper.d.ts +65 -0
- package/dist/react/charts/wrapper.d.ts.map +1 -0
- package/dist/react/charts/wrapper.js +94 -0
- package/dist/react/charts/wrapper.js.map +1 -0
- package/dist/react/hooks/index.js +2 -0
- package/dist/react/hooks/types.d.ts +101 -0
- package/dist/react/hooks/types.d.ts.map +1 -0
- package/dist/react/hooks/use-analytics-query.d.ts +33 -0
- package/dist/react/hooks/use-analytics-query.d.ts.map +1 -0
- package/dist/react/hooks/use-analytics-query.js +146 -0
- package/dist/react/hooks/use-analytics-query.js.map +1 -0
- package/dist/react/hooks/use-chart-data.d.ts +54 -0
- package/dist/react/hooks/use-chart-data.d.ts.map +1 -0
- package/dist/react/hooks/use-chart-data.js +80 -0
- package/dist/react/hooks/use-chart-data.js.map +1 -0
- package/dist/react/hooks/use-mobile.js +21 -0
- package/dist/react/hooks/use-mobile.js.map +1 -0
- package/dist/react/hooks/use-query-hmr.js +19 -0
- package/dist/react/hooks/use-query-hmr.js.map +1 -0
- package/dist/react/index.d.ts +75 -0
- package/dist/react/index.js +79 -0
- package/dist/react/lib/format.js +42 -0
- package/dist/react/lib/format.js.map +1 -0
- package/dist/react/lib/utils.js +11 -0
- package/dist/react/lib/utils.js.map +1 -0
- package/dist/react/table/data-table.d.ts +47 -0
- package/dist/react/table/data-table.d.ts.map +1 -0
- package/dist/react/table/data-table.js +205 -0
- package/dist/react/table/data-table.js.map +1 -0
- package/dist/react/table/empty.js +16 -0
- package/dist/react/table/empty.js.map +1 -0
- package/dist/react/table/error.js +16 -0
- package/dist/react/table/error.js.map +1 -0
- package/dist/react/table/index.js +1 -0
- package/dist/react/table/loading.js +50 -0
- package/dist/react/table/loading.js.map +1 -0
- package/dist/react/table/table-wrapper.js +143 -0
- package/dist/react/table/table-wrapper.js.map +1 -0
- package/dist/react/table/types.d.ts +55 -0
- package/dist/react/table/types.d.ts.map +1 -0
- package/dist/react/ui/accordion.d.ts +25 -0
- package/dist/react/ui/accordion.d.ts.map +1 -0
- package/dist/react/ui/accordion.js +45 -0
- package/dist/react/ui/accordion.js.map +1 -0
- package/dist/react/ui/alert-dialog.d.ts +49 -0
- package/dist/react/ui/alert-dialog.d.ts.map +1 -0
- package/dist/react/ui/alert-dialog.js +82 -0
- package/dist/react/ui/alert-dialog.js.map +1 -0
- package/dist/react/ui/alert.d.ts +25 -0
- package/dist/react/ui/alert.d.ts.map +1 -0
- package/dist/react/ui/alert.js +38 -0
- package/dist/react/ui/alert.js.map +1 -0
- package/dist/react/ui/aspect-ratio.d.ts +10 -0
- package/dist/react/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/react/ui/aspect-ratio.js +16 -0
- package/dist/react/ui/aspect-ratio.js.map +1 -0
- package/dist/react/ui/avatar.d.ts +20 -0
- package/dist/react/ui/avatar.d.ts.map +1 -0
- package/dist/react/ui/avatar.js +30 -0
- package/dist/react/ui/avatar.js.map +1 -0
- package/dist/react/ui/badge.d.ts +20 -0
- package/dist/react/ui/badge.d.ts.map +1 -0
- package/dist/react/ui/badge.js +26 -0
- package/dist/react/ui/badge.js.map +1 -0
- package/dist/react/ui/breadcrumb.d.ts +38 -0
- package/dist/react/ui/breadcrumb.d.ts.map +1 -0
- package/dist/react/ui/breadcrumb.js +71 -0
- package/dist/react/ui/breadcrumb.js.map +1 -0
- package/dist/react/ui/button-group.d.ts +29 -0
- package/dist/react/ui/button-group.d.ts.map +1 -0
- package/dist/react/ui/button-group.js +41 -0
- package/dist/react/ui/button-group.js.map +1 -0
- package/dist/react/ui/button.d.ts +22 -0
- package/dist/react/ui/button.d.ts.map +1 -0
- package/dist/react/ui/button.js +45 -0
- package/dist/react/ui/button.js.map +1 -0
- package/dist/react/ui/calendar.d.ts +27 -0
- package/dist/react/ui/calendar.d.ts.map +1 -0
- package/dist/react/ui/calendar.js +109 -0
- package/dist/react/ui/calendar.js.map +1 -0
- package/dist/react/ui/card.d.ts +35 -0
- package/dist/react/ui/card.d.ts.map +1 -0
- package/dist/react/ui/card.js +57 -0
- package/dist/react/ui/card.js.map +1 -0
- package/dist/react/ui/carousel.d.ts +48 -0
- package/dist/react/ui/carousel.d.ts.map +1 -0
- package/dist/react/ui/carousel.js +134 -0
- package/dist/react/ui/carousel.js.map +1 -0
- package/dist/react/ui/chart.d.ts +80 -0
- package/dist/react/ui/chart.d.ts.map +1 -0
- package/dist/react/ui/chart.js +143 -0
- package/dist/react/ui/chart.js.map +1 -0
- package/dist/react/ui/checkbox.d.ts +12 -0
- package/dist/react/ui/checkbox.d.ts.map +1 -0
- package/dist/react/ui/checkbox.js +24 -0
- package/dist/react/ui/checkbox.js.map +1 -0
- package/dist/react/ui/collapsible.d.ts +16 -0
- package/dist/react/ui/collapsible.d.ts.map +1 -0
- package/dist/react/ui/collapsible.js +26 -0
- package/dist/react/ui/collapsible.js.map +1 -0
- package/dist/react/ui/command.d.ts +53 -0
- package/dist/react/ui/command.d.ts.map +1 -0
- package/dist/react/ui/command.js +87 -0
- package/dist/react/ui/command.js.map +1 -0
- package/dist/react/ui/context-menu.d.ts +77 -0
- package/dist/react/ui/context-menu.d.ts.map +1 -0
- package/dist/react/ui/context-menu.js +125 -0
- package/dist/react/ui/context-menu.js.map +1 -0
- package/dist/react/ui/dialog.d.ts +48 -0
- package/dist/react/ui/dialog.d.ts.map +1 -0
- package/dist/react/ui/dialog.js +87 -0
- package/dist/react/ui/dialog.js.map +1 -0
- package/dist/react/ui/drawer.d.ts +45 -0
- package/dist/react/ui/drawer.d.ts.map +1 -0
- package/dist/react/ui/drawer.js +81 -0
- package/dist/react/ui/drawer.js.map +1 -0
- package/dist/react/ui/dropdown-menu.d.ts +78 -0
- package/dist/react/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/react/ui/dropdown-menu.js +124 -0
- package/dist/react/ui/dropdown-menu.js.map +1 -0
- package/dist/react/ui/empty.d.ts +36 -0
- package/dist/react/ui/empty.d.ts.map +1 -0
- package/dist/react/ui/empty.js +62 -0
- package/dist/react/ui/empty.js.map +1 -0
- package/dist/react/ui/field.d.ts +65 -0
- package/dist/react/ui/field.d.ts.map +1 -0
- package/dist/react/ui/field.js +120 -0
- package/dist/react/ui/field.js.map +1 -0
- package/dist/react/ui/form.d.ts +46 -0
- package/dist/react/ui/form.d.ts.map +1 -0
- package/dist/react/ui/form.js +92 -0
- package/dist/react/ui/form.js.map +1 -0
- package/dist/react/ui/hover-card.d.ts +20 -0
- package/dist/react/ui/hover-card.d.ts.map +1 -0
- package/dist/react/ui/hover-card.js +35 -0
- package/dist/react/ui/hover-card.js.map +1 -0
- package/dist/react/ui/index.js +53 -0
- package/dist/react/ui/input-group.d.ts +44 -0
- package/dist/react/ui/input-group.d.ts.map +1 -0
- package/dist/react/ui/input-group.js +82 -0
- package/dist/react/ui/input-group.js.map +1 -0
- package/dist/react/ui/input-otp.d.ts +29 -0
- package/dist/react/ui/input-otp.d.ts.map +1 -0
- package/dist/react/ui/input-otp.js +47 -0
- package/dist/react/ui/input-otp.js.map +1 -0
- package/dist/react/ui/input.d.ts +12 -0
- package/dist/react/ui/input.d.ts.map +1 -0
- package/dist/react/ui/input.js +16 -0
- package/dist/react/ui/input.js.map +1 -0
- package/dist/react/ui/item.d.ts +63 -0
- package/dist/react/ui/item.d.ts.map +1 -0
- package/dist/react/ui/item.js +118 -0
- package/dist/react/ui/item.js.map +1 -0
- package/dist/react/ui/kbd.d.ts +14 -0
- package/dist/react/ui/kbd.d.ts.map +1 -0
- package/dist/react/ui/kbd.js +22 -0
- package/dist/react/ui/kbd.js.map +1 -0
- package/dist/react/ui/label.d.ts +12 -0
- package/dist/react/ui/label.d.ts.map +1 -0
- package/dist/react/ui/label.js +18 -0
- package/dist/react/ui/label.js.map +1 -0
- package/dist/react/ui/menubar.d.ts +85 -0
- package/dist/react/ui/menubar.d.ts.map +1 -0
- package/dist/react/ui/menubar.js +134 -0
- package/dist/react/ui/menubar.js.map +1 -0
- package/dist/react/ui/navigation-menu.d.ts +47 -0
- package/dist/react/ui/navigation-menu.d.ts.map +1 -0
- package/dist/react/ui/navigation-menu.js +82 -0
- package/dist/react/ui/navigation-menu.js.map +1 -0
- package/dist/react/ui/pagination.d.ts +40 -0
- package/dist/react/ui/pagination.d.ts.map +1 -0
- package/dist/react/ui/pagination.js +80 -0
- package/dist/react/ui/pagination.js.map +1 -0
- package/dist/react/ui/popover.d.ts +23 -0
- package/dist/react/ui/popover.d.ts.map +1 -0
- package/dist/react/ui/popover.js +38 -0
- package/dist/react/ui/popover.js.map +1 -0
- package/dist/react/ui/progress.d.ts +13 -0
- package/dist/react/ui/progress.d.ts.map +1 -0
- package/dist/react/ui/progress.js +21 -0
- package/dist/react/ui/progress.js.map +1 -0
- package/dist/react/ui/radio-group.d.ts +16 -0
- package/dist/react/ui/radio-group.d.ts.map +1 -0
- package/dist/react/ui/radio-group.js +31 -0
- package/dist/react/ui/radio-group.js.map +1 -0
- package/dist/react/ui/resizable.d.ts +22 -0
- package/dist/react/ui/resizable.d.ts.map +1 -0
- package/dist/react/ui/resizable.js +34 -0
- package/dist/react/ui/resizable.js.map +1 -0
- package/dist/react/ui/scroll-area.d.ts +18 -0
- package/dist/react/ui/scroll-area.d.ts.map +1 -0
- package/dist/react/ui/scroll-area.js +39 -0
- package/dist/react/ui/scroll-area.js.map +1 -0
- package/dist/react/ui/select.d.ts +53 -0
- package/dist/react/ui/select.d.ts.map +1 -0
- package/dist/react/ui/select.js +98 -0
- package/dist/react/ui/select.js.map +1 -0
- package/dist/react/ui/separator.d.ts +14 -0
- package/dist/react/ui/separator.d.ts.map +1 -0
- package/dist/react/ui/separator.js +20 -0
- package/dist/react/ui/separator.js.map +1 -0
- package/dist/react/ui/sheet.d.ts +41 -0
- package/dist/react/ui/sheet.d.ts.map +1 -0
- package/dist/react/ui/sheet.js +83 -0
- package/dist/react/ui/sheet.js.map +1 -0
- package/dist/react/ui/sidebar.d.ts +167 -0
- package/dist/react/ui/sidebar.d.ts.map +1 -0
- package/dist/react/ui/sidebar.js +379 -0
- package/dist/react/ui/sidebar.js.map +1 -0
- package/dist/react/ui/skeleton.d.ts +10 -0
- package/dist/react/ui/skeleton.d.ts.map +1 -0
- package/dist/react/ui/skeleton.js +15 -0
- package/dist/react/ui/skeleton.js.map +1 -0
- package/dist/react/ui/slider.d.ts +16 -0
- package/dist/react/ui/slider.d.ts.map +1 -0
- package/dist/react/ui/slider.js +40 -0
- package/dist/react/ui/slider.js.map +1 -0
- package/dist/react/ui/sonner.d.ts +10 -0
- package/dist/react/ui/sonner.d.ts.map +1 -0
- package/dist/react/ui/sonner.js +31 -0
- package/dist/react/ui/sonner.js.map +1 -0
- package/dist/react/ui/spinner.d.ts +10 -0
- package/dist/react/ui/spinner.d.ts.map +1 -0
- package/dist/react/ui/spinner.js +17 -0
- package/dist/react/ui/spinner.js.map +1 -0
- package/dist/react/ui/switch.d.ts +12 -0
- package/dist/react/ui/switch.d.ts.map +1 -0
- package/dist/react/ui/switch.js +22 -0
- package/dist/react/ui/switch.js.map +1 -0
- package/dist/react/ui/table.d.ts +39 -0
- package/dist/react/ui/table.d.ts.map +1 -0
- package/dist/react/ui/table.js +68 -0
- package/dist/react/ui/table.js.map +1 -0
- package/dist/react/ui/tabs.d.ts +24 -0
- package/dist/react/ui/tabs.d.ts.map +1 -0
- package/dist/react/ui/tabs.js +39 -0
- package/dist/react/ui/tabs.js.map +1 -0
- package/dist/react/ui/textarea.d.ts +11 -0
- package/dist/react/ui/textarea.d.ts.map +1 -0
- package/dist/react/ui/textarea.js +15 -0
- package/dist/react/ui/textarea.js.map +1 -0
- package/dist/react/ui/toggle-group.d.ts +27 -0
- package/dist/react/ui/toggle-group.d.ts.map +1 -0
- package/dist/react/ui/toggle-group.js +50 -0
- package/dist/react/ui/toggle-group.js.map +1 -0
- package/dist/react/ui/toggle.d.ts +20 -0
- package/dist/react/ui/toggle.d.ts.map +1 -0
- package/dist/react/ui/toggle.js +38 -0
- package/dist/react/ui/toggle.js.map +1 -0
- package/dist/react/ui/tooltip.d.ts +24 -0
- package/dist/react/ui/tooltip.d.ts.map +1 -0
- package/dist/react/ui/tooltip.js +39 -0
- package/dist/react/ui/tooltip.js.map +1 -0
- package/dist/shared/src/sql/helpers.d.ts +160 -0
- package/dist/shared/src/sql/helpers.d.ts.map +1 -0
- package/dist/shared/src/sql/helpers.js +103 -0
- package/dist/shared/src/sql/helpers.js.map +1 -0
- package/dist/shared/src/sql/types.d.ts +34 -0
- package/dist/shared/src/sql/types.d.ts.map +1 -0
- package/dist/styles.css +425 -0
- package/llms.txt +193 -0
- package/package.json +98 -0
- package/scripts/postinstall.js +6 -0
package/dist/styles.css
ADDED
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@import "tw-animate-css";
|
|
3
|
+
@source "./react";
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
--radius: 0.625rem;
|
|
7
|
+
--background: oklch(1 0 0);
|
|
8
|
+
--foreground: oklch(0.141 0.005 285.823);
|
|
9
|
+
--card: oklch(1 0 0);
|
|
10
|
+
--card-foreground: oklch(0.141 0.005 285.823);
|
|
11
|
+
--popover: oklch(1 0 0);
|
|
12
|
+
--popover-foreground: oklch(0.141 0.005 285.823);
|
|
13
|
+
--primary: oklch(0.21 0.006 285.885);
|
|
14
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
15
|
+
--secondary: oklch(0.967 0.001 286.375);
|
|
16
|
+
--secondary-foreground: oklch(0.21 0.006 285.885);
|
|
17
|
+
--muted: oklch(0.967 0.001 286.375);
|
|
18
|
+
--muted-foreground: oklch(0.552 0.016 285.938);
|
|
19
|
+
--accent: oklch(0.967 0.001 286.375);
|
|
20
|
+
--accent-foreground: oklch(0.21 0.006 285.885);
|
|
21
|
+
--destructive: oklch(0.577 0.245 27.325);
|
|
22
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
23
|
+
--success: oklch(0.603 0.135 166.892);
|
|
24
|
+
--success-foreground: oklch(1 0 0);
|
|
25
|
+
--warning: oklch(0.795 0.157 78.748);
|
|
26
|
+
--warning-foreground: oklch(0.199 0.027 238.732);
|
|
27
|
+
--border: oklch(0.92 0.004 286.32);
|
|
28
|
+
--input: oklch(0.92 0.004 286.32);
|
|
29
|
+
--ring: oklch(0.705 0.015 286.067);
|
|
30
|
+
/* ========================================
|
|
31
|
+
CATEGORICAL - Distinct unordered categories
|
|
32
|
+
Use for: bar charts, pie charts, legends
|
|
33
|
+
======================================== */
|
|
34
|
+
--chart-cat-1: hsla(221, 83%, 53%, 1); /* Blue */
|
|
35
|
+
--chart-cat-2: hsla(160, 60%, 45%, 1); /* Teal */
|
|
36
|
+
--chart-cat-3: hsla(291, 47%, 51%, 1); /* Purple */
|
|
37
|
+
--chart-cat-4: hsla(35, 92%, 55%, 1); /* Amber */
|
|
38
|
+
--chart-cat-5: hsla(349, 72%, 52%, 1); /* Rose */
|
|
39
|
+
--chart-cat-6: hsla(189, 75%, 42%, 1); /* Cyan */
|
|
40
|
+
--chart-cat-7: hsla(271, 55%, 60%, 1); /* Lavender */
|
|
41
|
+
--chart-cat-8: hsla(142, 55%, 45%, 1); /* Emerald */
|
|
42
|
+
|
|
43
|
+
/* ========================================
|
|
44
|
+
SEQUENTIAL - Ordered magnitude (low → high)
|
|
45
|
+
Use for: heatmaps, density, choropleth
|
|
46
|
+
======================================== */
|
|
47
|
+
--chart-seq-1: hsla(221, 70%, 94%, 1); /* Lightest */
|
|
48
|
+
--chart-seq-2: hsla(221, 72%, 85%, 1);
|
|
49
|
+
--chart-seq-3: hsla(221, 74%, 74%, 1);
|
|
50
|
+
--chart-seq-4: hsla(221, 76%, 63%, 1);
|
|
51
|
+
--chart-seq-5: hsla(221, 78%, 52%, 1);
|
|
52
|
+
--chart-seq-6: hsla(221, 80%, 42%, 1);
|
|
53
|
+
--chart-seq-7: hsla(221, 82%, 32%, 1);
|
|
54
|
+
--chart-seq-8: hsla(221, 84%, 24%, 1); /* Darkest */
|
|
55
|
+
|
|
56
|
+
/* ========================================
|
|
57
|
+
DIVERGING - Meaningful center point
|
|
58
|
+
Use for: profit/loss, correlation, deviation
|
|
59
|
+
1-4: negative (blue), 5-8: positive (red)
|
|
60
|
+
======================================== */
|
|
61
|
+
--chart-div-1: hsla(221, 80%, 35%, 1); /* Strong negative */
|
|
62
|
+
--chart-div-2: hsla(221, 70%, 50%, 1);
|
|
63
|
+
--chart-div-3: hsla(221, 55%, 65%, 1);
|
|
64
|
+
--chart-div-4: hsla(221, 35%, 82%, 1); /* Weak negative */
|
|
65
|
+
--chart-div-5: hsla(10, 35%, 82%, 1); /* Weak positive */
|
|
66
|
+
--chart-div-6: hsla(10, 60%, 65%, 1);
|
|
67
|
+
--chart-div-7: hsla(10, 72%, 50%, 1);
|
|
68
|
+
--chart-div-8: hsla(10, 80%, 40%, 1); /* Strong positive */
|
|
69
|
+
|
|
70
|
+
/* Legacy aliases (for backwards compatibility) */
|
|
71
|
+
--chart-1: var(--chart-cat-1);
|
|
72
|
+
--chart-2: var(--chart-cat-2);
|
|
73
|
+
--chart-3: var(--chart-cat-3);
|
|
74
|
+
--chart-4: var(--chart-cat-4);
|
|
75
|
+
--chart-5: var(--chart-cat-5);
|
|
76
|
+
--chart-6: var(--chart-cat-6);
|
|
77
|
+
--chart-7: var(--chart-cat-7);
|
|
78
|
+
--chart-8: var(--chart-cat-8);
|
|
79
|
+
--sidebar: oklch(0.985 0 0);
|
|
80
|
+
--sidebar-foreground: oklch(0.141 0.005 285.823);
|
|
81
|
+
--sidebar-primary: oklch(0.21 0.006 285.885);
|
|
82
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
83
|
+
--sidebar-accent: oklch(0.967 0.001 286.375);
|
|
84
|
+
--sidebar-accent-foreground: oklch(0.21 0.006 285.885);
|
|
85
|
+
--sidebar-border: oklch(0.92 0.004 286.32);
|
|
86
|
+
--sidebar-ring: oklch(0.705 0.015 286.067);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Dark theme via class (takes precedence over media query) */
|
|
90
|
+
.dark {
|
|
91
|
+
--background: oklch(0.141 0.005 285.823);
|
|
92
|
+
--foreground: oklch(0.985 0 0);
|
|
93
|
+
--card: oklch(0.21 0.006 285.885);
|
|
94
|
+
--card-foreground: oklch(0.985 0 0);
|
|
95
|
+
--popover: oklch(0.21 0.006 285.885);
|
|
96
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
97
|
+
--primary: oklch(0.92 0.004 286.32);
|
|
98
|
+
--primary-foreground: oklch(0.21 0.006 285.885);
|
|
99
|
+
--secondary: oklch(0.274 0.006 286.033);
|
|
100
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
101
|
+
--muted: oklch(0.274 0.006 286.033);
|
|
102
|
+
--muted-foreground: oklch(0.705 0.015 286.067);
|
|
103
|
+
--accent: oklch(0.274 0.006 286.033);
|
|
104
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
105
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
106
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
107
|
+
--success: oklch(0.67 0.12 167);
|
|
108
|
+
--success-foreground: oklch(1 0 0);
|
|
109
|
+
--warning: oklch(0.83 0.165 85);
|
|
110
|
+
--warning-foreground: oklch(0.199 0.027 238.732);
|
|
111
|
+
--border: oklch(1 0 0 / 10%);
|
|
112
|
+
--input: oklch(1 0 0 / 15%);
|
|
113
|
+
--ring: oklch(0.552 0.016 285.938);
|
|
114
|
+
--chart-1: oklch(0.488 0.243 264.376);
|
|
115
|
+
--chart-2: oklch(0.696 0.17 162.48);
|
|
116
|
+
--chart-3: oklch(0.769 0.188 70.08);
|
|
117
|
+
--chart-4: oklch(0.627 0.265 303.9);
|
|
118
|
+
--chart-5: oklch(0.645 0.246 16.439);
|
|
119
|
+
--sidebar: oklch(0.21 0.006 285.885);
|
|
120
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
|
121
|
+
--sidebar-primary: oklch(0.488 0.243 264.376);
|
|
122
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
123
|
+
--sidebar-accent: oklch(0.274 0.006 286.033);
|
|
124
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
125
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
126
|
+
--sidebar-ring: oklch(0.552 0.016 285.938);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Dark theme via media query (fallback when no class is set) */
|
|
130
|
+
@media (prefers-color-scheme: dark) {
|
|
131
|
+
:root:not(.light) {
|
|
132
|
+
--background: oklch(0.141 0.005 285.823);
|
|
133
|
+
--foreground: oklch(0.985 0 0);
|
|
134
|
+
--card: oklch(0.21 0.006 285.885);
|
|
135
|
+
--card-foreground: oklch(0.985 0 0);
|
|
136
|
+
--popover: oklch(0.21 0.006 285.885);
|
|
137
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
138
|
+
--primary: oklch(0.92 0.004 286.32);
|
|
139
|
+
--primary-foreground: oklch(0.21 0.006 285.885);
|
|
140
|
+
--secondary: oklch(0.274 0.006 286.033);
|
|
141
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
142
|
+
--muted: oklch(0.274 0.006 286.033);
|
|
143
|
+
--muted-foreground: oklch(0.705 0.015 286.067);
|
|
144
|
+
--accent: oklch(0.274 0.006 286.033);
|
|
145
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
146
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
147
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
148
|
+
--success: oklch(0.67 0.12 167);
|
|
149
|
+
--success-foreground: oklch(1 0 0);
|
|
150
|
+
--warning: oklch(0.83 0.165 85);
|
|
151
|
+
--warning-foreground: oklch(0.199 0.027 238.732);
|
|
152
|
+
--border: oklch(1 0 0 / 10%);
|
|
153
|
+
--input: oklch(1 0 0 / 15%);
|
|
154
|
+
--ring: oklch(0.552 0.016 285.938);
|
|
155
|
+
/* ========================================
|
|
156
|
+
CATEGORICAL - Distinct unordered categories
|
|
157
|
+
======================================== */
|
|
158
|
+
--chart-cat-1: hsla(217, 91%, 65%, 1); /* Blue */
|
|
159
|
+
--chart-cat-2: hsla(160, 65%, 55%, 1); /* Teal */
|
|
160
|
+
--chart-cat-3: hsla(291, 60%, 65%, 1); /* Purple */
|
|
161
|
+
--chart-cat-4: hsla(38, 95%, 60%, 1); /* Amber */
|
|
162
|
+
--chart-cat-5: hsla(349, 80%, 62%, 1); /* Rose */
|
|
163
|
+
--chart-cat-6: hsla(189, 85%, 52%, 1); /* Cyan */
|
|
164
|
+
--chart-cat-7: hsla(271, 65%, 70%, 1); /* Lavender */
|
|
165
|
+
--chart-cat-8: hsla(142, 60%, 55%, 1); /* Emerald */
|
|
166
|
+
|
|
167
|
+
/* ========================================
|
|
168
|
+
SEQUENTIAL - Ordered magnitude (low → high)
|
|
169
|
+
======================================== */
|
|
170
|
+
--chart-seq-1: hsla(
|
|
171
|
+
217,
|
|
172
|
+
50%,
|
|
173
|
+
25%,
|
|
174
|
+
1
|
|
175
|
+
); /* Darkest (inverted for dark mode) */
|
|
176
|
+
--chart-seq-2: hsla(217, 55%, 35%, 1);
|
|
177
|
+
--chart-seq-3: hsla(217, 60%, 45%, 1);
|
|
178
|
+
--chart-seq-4: hsla(217, 65%, 55%, 1);
|
|
179
|
+
--chart-seq-5: hsla(217, 70%, 62%, 1);
|
|
180
|
+
--chart-seq-6: hsla(217, 75%, 70%, 1);
|
|
181
|
+
--chart-seq-7: hsla(217, 80%, 78%, 1);
|
|
182
|
+
--chart-seq-8: hsla(217, 85%, 88%, 1); /* Lightest */
|
|
183
|
+
|
|
184
|
+
/* ========================================
|
|
185
|
+
DIVERGING - Meaningful center point
|
|
186
|
+
======================================== */
|
|
187
|
+
--chart-div-1: hsla(217, 85%, 70%, 1); /* Strong negative (blue) */
|
|
188
|
+
--chart-div-2: hsla(217, 70%, 60%, 1);
|
|
189
|
+
--chart-div-3: hsla(217, 50%, 50%, 1);
|
|
190
|
+
--chart-div-4: hsla(217, 25%, 40%, 1); /* Weak negative */
|
|
191
|
+
--chart-div-5: hsla(10, 25%, 40%, 1); /* Weak positive */
|
|
192
|
+
--chart-div-6: hsla(10, 55%, 50%, 1);
|
|
193
|
+
--chart-div-7: hsla(10, 70%, 58%, 1);
|
|
194
|
+
--chart-div-8: hsla(10, 80%, 65%, 1); /* Strong positive (red) */
|
|
195
|
+
|
|
196
|
+
/* Legacy aliases */
|
|
197
|
+
--chart-1: var(--chart-cat-1);
|
|
198
|
+
--chart-2: var(--chart-cat-2);
|
|
199
|
+
--chart-3: var(--chart-cat-3);
|
|
200
|
+
--chart-4: var(--chart-cat-4);
|
|
201
|
+
--chart-5: var(--chart-cat-5);
|
|
202
|
+
--chart-6: var(--chart-cat-6);
|
|
203
|
+
--chart-7: var(--chart-cat-7);
|
|
204
|
+
--chart-8: var(--chart-cat-8);
|
|
205
|
+
--sidebar: oklch(0.21 0.006 285.885);
|
|
206
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
|
207
|
+
--sidebar-primary: oklch(0.488 0.243 264.376);
|
|
208
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
209
|
+
--sidebar-accent: oklch(0.274 0.006 286.033);
|
|
210
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
211
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
212
|
+
--sidebar-ring: oklch(0.552 0.016 285.938);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@theme inline {
|
|
217
|
+
--color-background: var(--background);
|
|
218
|
+
--color-foreground: var(--foreground);
|
|
219
|
+
--color-card: var(--card);
|
|
220
|
+
--color-card-foreground: var(--card-foreground);
|
|
221
|
+
--color-popover: var(--popover);
|
|
222
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
223
|
+
--color-primary: var(--primary);
|
|
224
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
225
|
+
--color-secondary: var(--secondary);
|
|
226
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
227
|
+
--color-muted: var(--muted);
|
|
228
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
229
|
+
--color-accent: var(--accent);
|
|
230
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
231
|
+
--color-destructive: var(--destructive);
|
|
232
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
233
|
+
--color-success: var(--success);
|
|
234
|
+
--color-success-foreground: var(--success-foreground);
|
|
235
|
+
--color-warning: var(--warning);
|
|
236
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
237
|
+
--color-border: var(--border);
|
|
238
|
+
--color-input: var(--input);
|
|
239
|
+
--color-ring: var(--ring);
|
|
240
|
+
/* Legacy chart colors (aliased to categorical) */
|
|
241
|
+
--color-chart-1: var(--chart-1);
|
|
242
|
+
--color-chart-2: var(--chart-2);
|
|
243
|
+
--color-chart-3: var(--chart-3);
|
|
244
|
+
--color-chart-4: var(--chart-4);
|
|
245
|
+
--color-chart-5: var(--chart-5);
|
|
246
|
+
--color-chart-6: var(--chart-6);
|
|
247
|
+
--color-chart-7: var(--chart-7);
|
|
248
|
+
--color-chart-8: var(--chart-8);
|
|
249
|
+
|
|
250
|
+
/* Categorical colors */
|
|
251
|
+
--color-chart-cat-1: var(--chart-cat-1);
|
|
252
|
+
--color-chart-cat-2: var(--chart-cat-2);
|
|
253
|
+
--color-chart-cat-3: var(--chart-cat-3);
|
|
254
|
+
--color-chart-cat-4: var(--chart-cat-4);
|
|
255
|
+
--color-chart-cat-5: var(--chart-cat-5);
|
|
256
|
+
--color-chart-cat-6: var(--chart-cat-6);
|
|
257
|
+
--color-chart-cat-7: var(--chart-cat-7);
|
|
258
|
+
--color-chart-cat-8: var(--chart-cat-8);
|
|
259
|
+
|
|
260
|
+
/* Sequential colors */
|
|
261
|
+
--color-chart-seq-1: var(--chart-seq-1);
|
|
262
|
+
--color-chart-seq-2: var(--chart-seq-2);
|
|
263
|
+
--color-chart-seq-3: var(--chart-seq-3);
|
|
264
|
+
--color-chart-seq-4: var(--chart-seq-4);
|
|
265
|
+
--color-chart-seq-5: var(--chart-seq-5);
|
|
266
|
+
--color-chart-seq-6: var(--chart-seq-6);
|
|
267
|
+
--color-chart-seq-7: var(--chart-seq-7);
|
|
268
|
+
--color-chart-seq-8: var(--chart-seq-8);
|
|
269
|
+
|
|
270
|
+
/* Diverging colors */
|
|
271
|
+
--color-chart-div-1: var(--chart-div-1);
|
|
272
|
+
--color-chart-div-2: var(--chart-div-2);
|
|
273
|
+
--color-chart-div-3: var(--chart-div-3);
|
|
274
|
+
--color-chart-div-4: var(--chart-div-4);
|
|
275
|
+
--color-chart-div-5: var(--chart-div-5);
|
|
276
|
+
--color-chart-div-6: var(--chart-div-6);
|
|
277
|
+
--color-chart-div-7: var(--chart-div-7);
|
|
278
|
+
--color-chart-div-8: var(--chart-div-8);
|
|
279
|
+
--color-sidebar: var(--sidebar);
|
|
280
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
281
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
282
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
283
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
284
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
285
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
286
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
287
|
+
--radius: var(--radius);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
@layer base {
|
|
291
|
+
* {
|
|
292
|
+
border-color: var(--border);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
html {
|
|
296
|
+
-webkit-font-smoothing: antialiased;
|
|
297
|
+
-moz-osx-font-smoothing: grayscale;
|
|
298
|
+
text-rendering: optimizeLegibility;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
body {
|
|
302
|
+
background-color: var(--background);
|
|
303
|
+
color: var(--foreground);
|
|
304
|
+
font-feature-settings:
|
|
305
|
+
"rlig" 1,
|
|
306
|
+
"calt" 1;
|
|
307
|
+
transition:
|
|
308
|
+
background-color 0.2s ease,
|
|
309
|
+
color 0.2s ease;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
h1,
|
|
313
|
+
h2,
|
|
314
|
+
h3,
|
|
315
|
+
h4,
|
|
316
|
+
h5,
|
|
317
|
+
h6 {
|
|
318
|
+
font-weight: 600;
|
|
319
|
+
letter-spacing: -0.025em;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
h1 {
|
|
323
|
+
font-size: 2.25rem;
|
|
324
|
+
line-height: 1.2;
|
|
325
|
+
}
|
|
326
|
+
h2 {
|
|
327
|
+
font-size: 1.875rem;
|
|
328
|
+
line-height: 1.3;
|
|
329
|
+
}
|
|
330
|
+
h3 {
|
|
331
|
+
font-size: 1.5rem;
|
|
332
|
+
line-height: 1.4;
|
|
333
|
+
}
|
|
334
|
+
h4 {
|
|
335
|
+
font-size: 1.25rem;
|
|
336
|
+
}
|
|
337
|
+
h5 {
|
|
338
|
+
font-size: 1.125rem;
|
|
339
|
+
}
|
|
340
|
+
p {
|
|
341
|
+
line-height: 1.75rem;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
:focus-visible {
|
|
345
|
+
outline: none;
|
|
346
|
+
box-shadow:
|
|
347
|
+
0 0 0 2px var(--background),
|
|
348
|
+
0 0 0 4px var(--ring);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
img {
|
|
352
|
+
max-width: 100%;
|
|
353
|
+
height: auto;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
::-webkit-scrollbar {
|
|
357
|
+
width: 10px;
|
|
358
|
+
height: 10px;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
::-webkit-scrollbar-track {
|
|
362
|
+
background-color: var(--secondary);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
::-webkit-scrollbar-thumb {
|
|
366
|
+
background-color: var(--muted-foreground);
|
|
367
|
+
opacity: 0.5;
|
|
368
|
+
border-radius: 0.375rem;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
::-webkit-scrollbar-thumb:hover {
|
|
372
|
+
opacity: 0.7;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
::selection {
|
|
376
|
+
background-color: var(--primary);
|
|
377
|
+
opacity: 0.2;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
@media (prefers-reduced-motion: reduce) {
|
|
381
|
+
*,
|
|
382
|
+
*::before,
|
|
383
|
+
*::after {
|
|
384
|
+
/* biome-ignore lint/complexity/noImportantStyles: !important is intentional for accessibility - forces reduced motion regardless of specificity */
|
|
385
|
+
animation-duration: 0.01ms !important;
|
|
386
|
+
/* biome-ignore lint/complexity/noImportantStyles: !important is intentional for accessibility - forces reduced motion regardless of specificity */
|
|
387
|
+
animation-iteration-count: 1 !important;
|
|
388
|
+
/* biome-ignore lint/complexity/noImportantStyles: !important is intentional for accessibility - forces reduced motion regardless of specificity */
|
|
389
|
+
transition-duration: 0.01ms !important;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/* Optional: set all rounded utility to use CSS var */
|
|
394
|
+
.rounded {
|
|
395
|
+
border-radius: var(--radius);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/* -----------------------------
|
|
400
|
+
Tailwind custom utilities
|
|
401
|
+
----------------------------- */
|
|
402
|
+
@layer utilities {
|
|
403
|
+
.sr-only {
|
|
404
|
+
position: absolute;
|
|
405
|
+
width: 1px;
|
|
406
|
+
height: 1px;
|
|
407
|
+
padding: 0;
|
|
408
|
+
margin: -1px;
|
|
409
|
+
overflow: hidden;
|
|
410
|
+
clip: rect(0, 0, 0, 0);
|
|
411
|
+
white-space: nowrap;
|
|
412
|
+
border-width: 0;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.focus\:not-sr-only:focus {
|
|
416
|
+
position: static;
|
|
417
|
+
width: auto;
|
|
418
|
+
height: auto;
|
|
419
|
+
padding: initial;
|
|
420
|
+
margin: initial;
|
|
421
|
+
overflow: visible;
|
|
422
|
+
clip: auto;
|
|
423
|
+
white-space: normal;
|
|
424
|
+
}
|
|
425
|
+
}
|
package/llms.txt
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# llms.txt — Guidance for AI systems using the Databricks AppKit (@databricks/appkit)
|
|
2
|
+
|
|
3
|
+
Project: Databricks AppKit
|
|
4
|
+
Author: Databricks
|
|
5
|
+
Version: 1.0.0
|
|
6
|
+
|
|
7
|
+
# =====================
|
|
8
|
+
# General Description
|
|
9
|
+
# =====================
|
|
10
|
+
AppKit is a modular TypeScript SDK for building apps with workflows and plugins.
|
|
11
|
+
It provides a single entrypoint (createApp) where you configure and register plugins.
|
|
12
|
+
Each plugin is then available under AppKit[pluginName].
|
|
13
|
+
|
|
14
|
+
Main concepts:
|
|
15
|
+
- createApp(config): initializes the SDK with plugins
|
|
16
|
+
- Plugins: extend AppKit with functionality (server, analytics, ai, etc.)
|
|
17
|
+
- AppKit[pluginName]: exposes plugin API after initialization
|
|
18
|
+
- New plugins can be created by extending the Plugin class.
|
|
19
|
+
|
|
20
|
+
# =====================
|
|
21
|
+
# Primary Usage Pattern
|
|
22
|
+
# =====================
|
|
23
|
+
Always use async/await.
|
|
24
|
+
Always initialize AppKit before using plugins.
|
|
25
|
+
Server and plugins already initialized, no custom endpoints.
|
|
26
|
+
|
|
27
|
+
Example:
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
import { createApp, server, analytics } from "@databricks/appkit";
|
|
31
|
+
|
|
32
|
+
await createApp({
|
|
33
|
+
plugins: [
|
|
34
|
+
server({ port: 8000 }),
|
|
35
|
+
analytics(),
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
# ==============================================
|
|
41
|
+
# Basic Usage Pattern starting the server
|
|
42
|
+
# ==============================================
|
|
43
|
+
|
|
44
|
+
Example:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { createApp, server, analytics } from "@databricks/appkit";
|
|
48
|
+
|
|
49
|
+
const AppKit = await createApp({
|
|
50
|
+
plugins: [
|
|
51
|
+
server({ port: 8000, autoStart: false }),
|
|
52
|
+
analytics(),
|
|
53
|
+
],
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const app = await AppKit.server.start();
|
|
57
|
+
app.get("/ping", (req, res) => res.send("pong"));
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
# =====================
|
|
61
|
+
# Plugin APIs
|
|
62
|
+
# =====================
|
|
63
|
+
|
|
64
|
+
Each plugin exposes a set of endpoints by default.
|
|
65
|
+
|
|
66
|
+
## Server Plugin
|
|
67
|
+
- AppKit.server.start(): Promise<Express.Application>
|
|
68
|
+
- Purpose: Start an Express server with configured port, only use if { autoStart: false } is provided in the config of the server plugin
|
|
69
|
+
- Usage: Add routes via the returned app
|
|
70
|
+
- Config - When setting the plugin, the following options can be provided:
|
|
71
|
+
server({
|
|
72
|
+
port?: number;
|
|
73
|
+
staticPath?: string; // This provides the path where the frontend assets are.
|
|
74
|
+
autoStart?: boolean;
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
## Analytics Plugin
|
|
78
|
+
- AppKit.analytics.query.executeQuery({ query, parameters }: { query: string; parameters?: Record<string, any> }, options?: ExecuteOptions): Promise<ExecuteStatementOutput>;
|
|
79
|
+
- Purpose: Provide SQL by key interface.
|
|
80
|
+
- Usage: Only for structured query + insert examples. SQL never goes into the call to the function. Any SQL that needs to be written,
|
|
81
|
+
will be written into config/queries/<query_key>.sql. All queries should be parameterized (use placeholders).
|
|
82
|
+
- Default endpoints:
|
|
83
|
+
- POST /api/analytics/:query_key -> `query_key` will be the key to the file that contains the query. Expects a body with the shape { parameters?: Record<string, any>; }. parameters will be bound into the query.
|
|
84
|
+
|
|
85
|
+
# =====================
|
|
86
|
+
# Custom Plugins
|
|
87
|
+
# =====================
|
|
88
|
+
|
|
89
|
+
Databricks AppKit Might not cover all the cases needed, so for those cases a plugin can be created.
|
|
90
|
+
Here is an example:
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
import { Plugin, toPlugin } from '@databricks/appkit';
|
|
94
|
+
|
|
95
|
+
class OpenWeatherPlugin extends Plugin {
|
|
96
|
+
name: string = "open-weather";
|
|
97
|
+
private apiKey: string;
|
|
98
|
+
private url: string;
|
|
99
|
+
|
|
100
|
+
constructor(config: any, auth: IAuthManager, telemetry: ITelemetryManager) {
|
|
101
|
+
super(config, auth, telemetry);
|
|
102
|
+
|
|
103
|
+
this.apiKey = process.env.OPEN_WEATHER_API_KEY!;
|
|
104
|
+
this.url = process.env.OPEN_WEATHER_URL || "https://api.openweathermap.org/data/3.0/onecall";
|
|
105
|
+
|
|
106
|
+
// ...
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async getWeather(lat: number, lon: number): Promise<any | null> {
|
|
110
|
+
const url = `${this.url}?lat=${lat}&lon=${lon}&appid=${this.apiKey}`;
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
const response = await fetch(url);
|
|
114
|
+
if (!response.ok) {
|
|
115
|
+
console.error("Error fetching weather data:", response.statusText);
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const data = await response.json();
|
|
120
|
+
return data;
|
|
121
|
+
} catch (error) {
|
|
122
|
+
console.error("Fetch error:", error);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Optionally the plugin can inject its own routes to the router
|
|
129
|
+
*/
|
|
130
|
+
injectRoutes(router: express.Router) {
|
|
131
|
+
/**
|
|
132
|
+
* Each route is scoped to the plugin name. So in this case the route will be end up being
|
|
133
|
+
* /api/open-weather/weather
|
|
134
|
+
*
|
|
135
|
+
* and an example request would be:
|
|
136
|
+
* GET /api/open-weather/weather?lat=40.7128&lon=-74.0060
|
|
137
|
+
*/
|
|
138
|
+
router.get("/weather", async (req: any, res: any) => {
|
|
139
|
+
const { lat, lon } = req.query;
|
|
140
|
+
const data = await this.getWeather(lat, lon);
|
|
141
|
+
res.send(data);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export const openWeather = toPlugin<typeof OpenWeatherPlugin, OpenWeatherConfig, "openWeather">(OpenWeatherPlugin, "openWeather");
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Then it would be used as the rest of the plugins
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
import { createApp, server, analytics } from "@databricks/appkit";
|
|
153
|
+
import { openWeather } from './open-weather';
|
|
154
|
+
|
|
155
|
+
const AppKit = await createApp({
|
|
156
|
+
plugins: [
|
|
157
|
+
server({ port: 8000 }),
|
|
158
|
+
analytics(),
|
|
159
|
+
openWeather(),
|
|
160
|
+
],
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
const app = await AppKit.server.start();
|
|
164
|
+
/**
|
|
165
|
+
* A route could also be added here
|
|
166
|
+
*/
|
|
167
|
+
app.get("/api/open-weather/weather", async (req, res) => {
|
|
168
|
+
const data = await AppKit.openWeather.getWeather(40.7128, -74.0060);
|
|
169
|
+
res.send(data);
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
# =====================
|
|
175
|
+
# Style Guidelines for AI
|
|
176
|
+
# =====================
|
|
177
|
+
- Always prefer async/await (never .then chaining in examples).
|
|
178
|
+
- Always show explicit plugin config (no hidden defaults).
|
|
179
|
+
- Use ESModules (import/export), not require().
|
|
180
|
+
- Use TypeScript typings in advanced examples if helpful.
|
|
181
|
+
|
|
182
|
+
# =====================
|
|
183
|
+
# Anti-Patterns (avoid in examples)
|
|
184
|
+
# =====================
|
|
185
|
+
- ❌ Do not access AppKit internals (only use AppKit[pluginName]).
|
|
186
|
+
- ❌ Do not assume SQL queries hit a real DB (they return demo data unless configured).
|
|
187
|
+
- ❌ Do not show usage without createApp first.
|
|
188
|
+
|
|
189
|
+
# =====================
|
|
190
|
+
# Attribution
|
|
191
|
+
# =====================
|
|
192
|
+
If AI-generated code uses this SDK, attribute:
|
|
193
|
+
"Powered by Databricks AppKit (https://github.com/...)".
|