shadcn_phlexcomponents 0.1.17 → 0.1.19
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.
- checksums.yaml +4 -4
- data/README.md +321 -23
- data/app/javascript/controllers/accordion_controller.js +1 -0
- data/app/javascript/controllers/alert_dialog_controller.js +1 -0
- data/app/javascript/controllers/avatar_controller.js +1 -0
- data/app/javascript/controllers/checkbox_controller.js +1 -0
- data/app/javascript/controllers/collapsible_controller.js +1 -0
- data/app/javascript/controllers/combobox_controller.js +1 -1
- data/app/javascript/controllers/command_controller.js +1 -0
- data/app/javascript/controllers/date_picker_controller.js +21 -5
- data/app/javascript/controllers/date_range_picker_controller.js +1 -0
- data/app/javascript/controllers/dialog_controller.js +1 -0
- data/app/javascript/controllers/dropdown_menu_controller.js +1 -0
- data/app/javascript/controllers/dropdown_menu_sub_controller.js +1 -0
- data/app/javascript/controllers/form_field_controller.js +1 -0
- data/app/javascript/controllers/hover_card_controller.js +1 -0
- data/app/javascript/controllers/loading_button_controller.js +1 -0
- data/app/javascript/controllers/popover_controller.js +1 -0
- data/app/javascript/controllers/progress_controller.js +1 -0
- data/app/javascript/controllers/radio_group_controller.js +1 -0
- data/app/javascript/controllers/select_controller.js +1 -0
- data/app/javascript/controllers/slider_controller.js +1 -0
- data/app/javascript/controllers/switch_controller.js +1 -0
- data/app/javascript/controllers/tabs_controller.js +1 -0
- data/app/javascript/controllers/theme_switcher_controller.js +1 -0
- data/app/javascript/controllers/toast_container_controller.js +1 -0
- data/app/javascript/controllers/toast_controller.js +1 -0
- data/app/javascript/controllers/toggle_controller.js +1 -0
- data/app/javascript/controllers/toggle_group_controller.js +1 -0
- data/app/javascript/controllers/tooltip_controller.js +2 -1
- data/app/javascript/shadcn_phlexcomponents.js +27 -60
- data/app/javascript/utils/command.js +0 -2
- data/app/javascript/utils/floating_ui.js +10 -17
- data/app/stylesheets/date_picker.css +1 -1
- data/app/stylesheets/shadcn_phlexcomponents.css +173 -0
- data/app/typescript/controllers/accordion_controller.ts +2 -0
- data/app/typescript/controllers/alert_dialog_controller.ts +2 -0
- data/app/typescript/controllers/avatar_controller.ts +2 -0
- data/app/typescript/controllers/checkbox_controller.ts +2 -0
- data/app/typescript/controllers/collapsible_controller.ts +2 -0
- data/app/typescript/controllers/combobox_controller.ts +2 -1
- data/app/typescript/controllers/command_controller.ts +2 -0
- data/app/typescript/controllers/date_picker_controller.ts +27 -7
- data/app/typescript/controllers/date_range_picker_controller.ts +2 -0
- data/app/typescript/controllers/dialog_controller.ts +2 -0
- data/app/typescript/controllers/dropdown_menu_controller.ts +2 -0
- data/app/typescript/controllers/dropdown_menu_sub_controller.ts +2 -0
- data/app/typescript/controllers/form_field_controller.ts +2 -0
- data/app/typescript/controllers/hover_card_controller.ts +2 -0
- data/app/typescript/controllers/loading_button_controller.ts +2 -0
- data/app/typescript/controllers/popover_controller.ts +2 -0
- data/app/typescript/controllers/progress_controller.ts +2 -0
- data/app/typescript/controllers/radio_group_controller.ts +2 -0
- data/app/typescript/controllers/select_controller.ts +2 -0
- data/app/typescript/controllers/slider_controller.ts +2 -0
- data/app/typescript/controllers/switch_controller.ts +2 -0
- data/app/typescript/controllers/tabs_controller.ts +2 -0
- data/app/typescript/controllers/theme_switcher_controller.ts +2 -0
- data/app/typescript/controllers/toast_container_controller.ts +2 -0
- data/app/typescript/controllers/toast_controller.ts +2 -0
- data/app/typescript/controllers/toggle_controller.ts +2 -0
- data/app/typescript/controllers/toggle_group_controller.ts +2 -0
- data/app/typescript/controllers/tooltip_controller.ts +3 -1
- data/app/typescript/shadcn_phlexcomponents.ts +27 -61
- data/app/typescript/utils/command.ts +0 -2
- data/app/typescript/utils/floating_ui.ts +11 -20
- data/app/typescript/utils/index.ts +1 -1
- data/lib/install/upgrade_shadcn_phlexcomponents.rb +28 -0
- data/lib/shadcn_phlexcomponents/components/accordion.rb +56 -13
- data/lib/shadcn_phlexcomponents/components/alert.rb +35 -16
- data/lib/shadcn_phlexcomponents/components/alert_dialog.rb +58 -18
- data/lib/shadcn_phlexcomponents/components/aspect_ratio.rb +33 -2
- data/lib/shadcn_phlexcomponents/components/avatar.rb +24 -7
- data/lib/shadcn_phlexcomponents/components/badge.rb +23 -18
- data/lib/shadcn_phlexcomponents/components/base.rb +2 -2
- data/lib/shadcn_phlexcomponents/components/breadcrumb.rb +46 -6
- data/lib/shadcn_phlexcomponents/components/button.rb +32 -27
- data/lib/shadcn_phlexcomponents/components/card.rb +59 -10
- data/lib/shadcn_phlexcomponents/components/checkbox.rb +51 -30
- data/lib/shadcn_phlexcomponents/components/checkbox_group.rb +24 -4
- data/lib/shadcn_phlexcomponents/components/combobox.rb +224 -81
- data/lib/shadcn_phlexcomponents/components/command.rb +167 -63
- data/lib/shadcn_phlexcomponents/components/date_picker.rb +140 -48
- data/lib/shadcn_phlexcomponents/components/date_range_picker.rb +26 -44
- data/lib/shadcn_phlexcomponents/components/dialog.rb +86 -32
- data/lib/shadcn_phlexcomponents/components/dropdown_menu.rb +74 -25
- data/lib/shadcn_phlexcomponents/components/dropdown_menu_sub.rb +52 -24
- data/lib/shadcn_phlexcomponents/components/form/form_checkbox.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_checkbox_group.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_combobox.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_date_picker.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_date_range_picker.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_error.rb +8 -1
- data/lib/shadcn_phlexcomponents/components/form/form_helpers.rb +3 -2
- data/lib/shadcn_phlexcomponents/components/form/form_hint.rb +8 -1
- data/lib/shadcn_phlexcomponents/components/form/form_input.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_radio_group.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_select.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_slider.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_switch.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form/form_textarea.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/form.rb +22 -6
- data/lib/shadcn_phlexcomponents/components/hover_card.rb +48 -18
- data/lib/shadcn_phlexcomponents/components/input.rb +13 -8
- data/lib/shadcn_phlexcomponents/components/label.rb +9 -4
- data/lib/shadcn_phlexcomponents/components/link.rb +8 -1
- data/lib/shadcn_phlexcomponents/components/pagination.rb +34 -6
- data/lib/shadcn_phlexcomponents/components/popover.rb +43 -13
- data/lib/shadcn_phlexcomponents/components/progress.rb +37 -6
- data/lib/shadcn_phlexcomponents/components/radio_group.rb +41 -15
- data/lib/shadcn_phlexcomponents/components/select.rb +99 -42
- data/lib/shadcn_phlexcomponents/components/separator.rb +9 -4
- data/lib/shadcn_phlexcomponents/components/sheet.rb +94 -28
- data/lib/shadcn_phlexcomponents/components/skeleton.rb +8 -1
- data/lib/shadcn_phlexcomponents/components/switch.rb +45 -17
- data/lib/shadcn_phlexcomponents/components/table.rb +84 -17
- data/lib/shadcn_phlexcomponents/components/tabs.rb +36 -12
- data/lib/shadcn_phlexcomponents/components/textarea.rb +12 -7
- data/lib/shadcn_phlexcomponents/components/toast.rb +46 -20
- data/lib/shadcn_phlexcomponents/components/toast_container.rb +19 -14
- data/lib/shadcn_phlexcomponents/components/toggle.rb +29 -24
- data/lib/shadcn_phlexcomponents/components/tooltip.rb +49 -14
- data/lib/shadcn_phlexcomponents/configuration.rb +46 -0
- data/lib/shadcn_phlexcomponents/initializers/shadcn_phlexcomponents.rb +28 -0
- data/lib/shadcn_phlexcomponents/version.rb +1 -1
- data/lib/shadcn_phlexcomponents.rb +12 -1
- data/lib/tasks/upgrade.rake +10 -0
- metadata +16 -14
- data/app/typescript/controllers/sidebar_controller.ts +0 -39
- data/app/typescript/controllers/sidebar_trigger_controller.ts +0 -21
@@ -3,6 +3,7 @@ import { useHover } from "stimulus-use";
|
|
3
3
|
import { initFloatingUi } from "../utils/floating_ui";
|
4
4
|
import { showContent, hideContent } from "../utils";
|
5
5
|
const TooltipController = class extends Controller {
|
6
|
+
static name = "tooltip";
|
6
7
|
// targets
|
7
8
|
static targets = ["trigger", "content", "contentContainer", "arrow"];
|
8
9
|
// values
|
@@ -46,7 +47,7 @@ const TooltipController = class extends Controller {
|
|
46
47
|
arrowElement: this.arrowTarget,
|
47
48
|
side: this.contentTarget.dataset.side,
|
48
49
|
align: this.contentTarget.dataset.align,
|
49
|
-
sideOffset:
|
50
|
+
sideOffset: 4,
|
50
51
|
});
|
51
52
|
} else {
|
52
53
|
hideContent({
|
@@ -1,60 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
import { ToggleController } from "./controllers/toggle_controller";
|
29
|
-
import { TooltipController } from "./controllers/tooltip_controller";
|
30
|
-
export default {
|
31
|
-
accordion: AccordionController,
|
32
|
-
"alert-dialog": AlertDialogController,
|
33
|
-
avatar: AvatarController,
|
34
|
-
checkbox: CheckboxController,
|
35
|
-
collapsible: CollapsibleController,
|
36
|
-
combobox: ComboboxController,
|
37
|
-
command: CommandController,
|
38
|
-
"date-picker": DatePickerController,
|
39
|
-
"date-range-picker": DateRangePickerController,
|
40
|
-
dialog: DialogController,
|
41
|
-
"dropdown-menu": DropdownMenuController,
|
42
|
-
"dropdown-menu-sub": DropdownMenuSubController,
|
43
|
-
"form-field": FormFieldController,
|
44
|
-
"hover-card": HoverCardController,
|
45
|
-
"loading-button": LoadingButtonController,
|
46
|
-
popover: PopoverController,
|
47
|
-
progress: ProgressController,
|
48
|
-
"radio-group": RadioGroupController,
|
49
|
-
select: SelectController,
|
50
|
-
sidebar: SidebarController,
|
51
|
-
"sidebar-trigger": SidebarTriggerController,
|
52
|
-
slider: SliderController,
|
53
|
-
switch: SwitchController,
|
54
|
-
tabs: TabsController,
|
55
|
-
"theme-switcher": ThemeSwitcherController,
|
56
|
-
"toast-container": ToastContainerController,
|
57
|
-
toast: ToastController,
|
58
|
-
toggle: ToggleController,
|
59
|
-
tooltip: TooltipController,
|
60
|
-
};
|
1
|
+
export { AccordionController } from "./controllers/accordion_controller";
|
2
|
+
export { AlertDialogController } from "./controllers/alert_dialog_controller";
|
3
|
+
export { AvatarController } from "./controllers/avatar_controller";
|
4
|
+
export { CheckboxController } from "./controllers/checkbox_controller";
|
5
|
+
export { CollapsibleController } from "./controllers/collapsible_controller";
|
6
|
+
export { ComboboxController } from "./controllers/combobox_controller";
|
7
|
+
export { CommandController } from "./controllers/command_controller";
|
8
|
+
export { DatePickerController } from "./controllers/date_picker_controller";
|
9
|
+
export { DateRangePickerController } from "./controllers/date_range_picker_controller";
|
10
|
+
export { DialogController } from "./controllers/dialog_controller";
|
11
|
+
export { DropdownMenuController } from "./controllers/dropdown_menu_controller";
|
12
|
+
export { DropdownMenuSubController } from "./controllers/dropdown_menu_sub_controller";
|
13
|
+
export { FormFieldController } from "./controllers/form_field_controller";
|
14
|
+
export { HoverCardController } from "./controllers/hover_card_controller";
|
15
|
+
export { LoadingButtonController } from "./controllers/loading_button_controller";
|
16
|
+
export { PopoverController } from "./controllers/popover_controller";
|
17
|
+
export { ProgressController } from "./controllers/progress_controller";
|
18
|
+
export { RadioGroupController } from "./controllers/radio_group_controller";
|
19
|
+
export { SelectController } from "./controllers/select_controller";
|
20
|
+
export { SliderController } from "./controllers/slider_controller";
|
21
|
+
export { SwitchController } from "./controllers/switch_controller";
|
22
|
+
export { TabsController } from "./controllers/tabs_controller";
|
23
|
+
export { ThemeSwitcherController } from "./controllers/theme_switcher_controller";
|
24
|
+
export { ToastContainerController } from "./controllers/toast_container_controller";
|
25
|
+
export { ToastController } from "./controllers/toast_controller";
|
26
|
+
export { ToggleController } from "./controllers/toggle_controller";
|
27
|
+
export { TooltipController } from "./controllers/tooltip_controller";
|
@@ -262,7 +262,6 @@ const performRemoteSearch = async (controller, query) => {
|
|
262
262
|
}
|
263
263
|
};
|
264
264
|
const renderRemoteResults = (controller, data) => {
|
265
|
-
console.log("data", data);
|
266
265
|
data.forEach((item) => {
|
267
266
|
const tempDiv = document.createElement("div");
|
268
267
|
tempDiv.innerHTML = item.html;
|
@@ -322,7 +321,6 @@ const renderRemoteResults = (controller, data) => {
|
|
322
321
|
),
|
323
322
|
);
|
324
323
|
controller.highlightItemByIndex(0);
|
325
|
-
console.log("controller.filteredItems", controller.filteredItems);
|
326
324
|
if (controller.filteredItems.length > 0) {
|
327
325
|
hideEmpty(controller);
|
328
326
|
} else {
|
@@ -6,7 +6,9 @@ import {
|
|
6
6
|
autoUpdate,
|
7
7
|
size,
|
8
8
|
arrow,
|
9
|
+
limitShift,
|
9
10
|
} from "@floating-ui/dom";
|
11
|
+
// https://github.com/radix-ui/primitives/blob/13e76f08f7afdea623aebfd3c55a7e41ae8d8078/packages/react/popper/src/popper.tsx
|
10
12
|
const OPPOSITE_SIDE = {
|
11
13
|
top: "bottom",
|
12
14
|
right: "left",
|
@@ -44,8 +46,14 @@ const initFloatingUi = ({
|
|
44
46
|
arrowHeight = rect.height;
|
45
47
|
}
|
46
48
|
const middleware = [
|
49
|
+
offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),
|
50
|
+
shift({
|
51
|
+
mainAxis: true,
|
52
|
+
crossAxis: false,
|
53
|
+
limiter: limitShift(),
|
54
|
+
}),
|
55
|
+
flip({ crossAxis: "alignment", fallbackAxisSideDirection: "end" }),
|
47
56
|
transformOrigin({ arrowHeight, arrowWidth }),
|
48
|
-
offset({ mainAxis: sideOffset, alignmentAxis: alignOffset }),
|
49
57
|
size({
|
50
58
|
apply: ({ elements, rects, availableWidth, availableHeight }) => {
|
51
59
|
const { width: anchorWidth, height: anchorHeight } = rects.reference;
|
@@ -68,23 +76,8 @@ const initFloatingUi = ({
|
|
68
76
|
);
|
69
77
|
},
|
70
78
|
}),
|
79
|
+
arrowElement && arrow({ element: arrowElement, padding: 0 }),
|
71
80
|
];
|
72
|
-
const flipMiddleware = flip({
|
73
|
-
// Ensure we flip to the perpendicular axis if it doesn't fit
|
74
|
-
// on narrow viewports.
|
75
|
-
crossAxis: "alignment",
|
76
|
-
fallbackAxisSideDirection: "end", // or 'start'
|
77
|
-
});
|
78
|
-
const shiftMiddleware = shift();
|
79
|
-
// Prioritize flip over shift for edge-aligned placements only.
|
80
|
-
if (placement.includes("-")) {
|
81
|
-
middleware.push(flipMiddleware, shiftMiddleware);
|
82
|
-
} else {
|
83
|
-
middleware.push(shiftMiddleware, flipMiddleware);
|
84
|
-
}
|
85
|
-
if (arrowElement) {
|
86
|
-
middleware.push(arrow({ element: arrowElement, padding: 0 }));
|
87
|
-
}
|
88
81
|
return autoUpdate(referenceElement, floatingElement, () => {
|
89
82
|
computePosition(referenceElement, floatingElement, {
|
90
83
|
placement: placement,
|
@@ -0,0 +1,173 @@
|
|
1
|
+
@import './tw-animate.css';
|
2
|
+
@import './date_picker.css';
|
3
|
+
@import './nouislider.css';
|
4
|
+
|
5
|
+
@custom-variant dark (&:is(.dark *));
|
6
|
+
@custom-variant fixed (&:is(.layout-fixed *));
|
7
|
+
|
8
|
+
@theme inline {
|
9
|
+
--breakpoint-3xl: 1600px;
|
10
|
+
--breakpoint-4xl: 2000px;
|
11
|
+
--font-sans: var(--font-sans);
|
12
|
+
--font-mono: var(--font-mono);
|
13
|
+
--radius-sm: calc(var(--radius) - 4px);
|
14
|
+
--radius-md: calc(var(--radius) - 2px);
|
15
|
+
--radius-lg: var(--radius);
|
16
|
+
--radius-xl: calc(var(--radius) + 4px);
|
17
|
+
--color-background: var(--background);
|
18
|
+
--color-foreground: var(--foreground);
|
19
|
+
--color-card: var(--card);
|
20
|
+
--color-card-foreground: var(--card-foreground);
|
21
|
+
--color-popover: var(--popover);
|
22
|
+
--color-popover-foreground: var(--popover-foreground);
|
23
|
+
--color-primary: var(--primary);
|
24
|
+
--color-primary-foreground: var(--primary-foreground);
|
25
|
+
--color-secondary: var(--secondary);
|
26
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
27
|
+
--color-muted: var(--muted);
|
28
|
+
--color-muted-foreground: var(--muted-foreground);
|
29
|
+
--color-accent: var(--accent);
|
30
|
+
--color-accent-foreground: var(--accent-foreground);
|
31
|
+
--color-destructive: var(--destructive);
|
32
|
+
--color-border: var(--border);
|
33
|
+
--color-input: var(--input);
|
34
|
+
--color-ring: var(--ring);
|
35
|
+
--color-chart-1: var(--chart-1);
|
36
|
+
--color-chart-2: var(--chart-2);
|
37
|
+
--color-chart-3: var(--chart-3);
|
38
|
+
--color-chart-4: var(--chart-4);
|
39
|
+
--color-chart-5: var(--chart-5);
|
40
|
+
--color-sidebar: var(--sidebar);
|
41
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
42
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
43
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
44
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
45
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
46
|
+
--color-sidebar-border: var(--sidebar-border);
|
47
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
48
|
+
--color-surface: var(--surface);
|
49
|
+
--color-surface-foreground: var(--surface-foreground);
|
50
|
+
--color-code: var(--code);
|
51
|
+
--color-code-foreground: var(--code-foreground);
|
52
|
+
--color-code-highlight: var(--code-highlight);
|
53
|
+
--color-code-number: var(--code-number);
|
54
|
+
--color-selection: var(--selection);
|
55
|
+
--color-selection-foreground: var(--selection-foreground);
|
56
|
+
}
|
57
|
+
|
58
|
+
:root {
|
59
|
+
--radius: 0.625rem;
|
60
|
+
--background: oklch(1 0 0);
|
61
|
+
--foreground: oklch(0.145 0 0);
|
62
|
+
--card: oklch(1 0 0);
|
63
|
+
--card-foreground: oklch(0.145 0 0);
|
64
|
+
--popover: oklch(1 0 0);
|
65
|
+
--popover-foreground: oklch(0.145 0 0);
|
66
|
+
--primary: oklch(0.205 0 0);
|
67
|
+
--primary-foreground: oklch(0.985 0 0);
|
68
|
+
--secondary: oklch(0.97 0 0);
|
69
|
+
--secondary-foreground: oklch(0.205 0 0);
|
70
|
+
--muted: oklch(0.97 0 0);
|
71
|
+
--muted-foreground: oklch(0.556 0 0);
|
72
|
+
--accent: oklch(0.97 0 0);
|
73
|
+
--accent-foreground: oklch(0.205 0 0);
|
74
|
+
--destructive: oklch(0.577 0.245 27.325);
|
75
|
+
--border: oklch(0.922 0 0);
|
76
|
+
--input: oklch(0.922 0 0);
|
77
|
+
--ring: oklch(0.708 0 0);
|
78
|
+
--chart-1: var(--color-blue-300);
|
79
|
+
--chart-2: var(--color-blue-500);
|
80
|
+
--chart-3: var(--color-blue-600);
|
81
|
+
--chart-4: var(--color-blue-700);
|
82
|
+
--chart-5: var(--color-blue-800);
|
83
|
+
--sidebar: oklch(0.985 0 0);
|
84
|
+
--sidebar-foreground: oklch(0.145 0 0);
|
85
|
+
--sidebar-primary: oklch(0.205 0 0);
|
86
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
87
|
+
--sidebar-accent: oklch(0.97 0 0);
|
88
|
+
--sidebar-accent-foreground: oklch(0.205 0 0);
|
89
|
+
--sidebar-border: oklch(0.922 0 0);
|
90
|
+
--sidebar-ring: oklch(0.708 0 0);
|
91
|
+
--surface: oklch(0.98 0 0);
|
92
|
+
--surface-foreground: var(--foreground);
|
93
|
+
--code: var(--surface);
|
94
|
+
--code-foreground: var(--surface-foreground);
|
95
|
+
--code-highlight: oklch(0.96 0 0);
|
96
|
+
--code-number: oklch(0.56 0 0);
|
97
|
+
--selection: oklch(0.145 0 0);
|
98
|
+
--selection-foreground: oklch(1 0 0);
|
99
|
+
}
|
100
|
+
|
101
|
+
.dark {
|
102
|
+
--background: oklch(0.145 0 0);
|
103
|
+
--foreground: oklch(0.985 0 0);
|
104
|
+
--card: oklch(0.205 0 0);
|
105
|
+
--card-foreground: oklch(0.985 0 0);
|
106
|
+
--popover: oklch(0.269 0 0);
|
107
|
+
--popover-foreground: oklch(0.985 0 0);
|
108
|
+
--primary: oklch(0.922 0 0);
|
109
|
+
--primary-foreground: oklch(0.205 0 0);
|
110
|
+
--secondary: oklch(0.269 0 0);
|
111
|
+
--secondary-foreground: oklch(0.985 0 0);
|
112
|
+
--muted: oklch(0.269 0 0);
|
113
|
+
--muted-foreground: oklch(0.708 0 0);
|
114
|
+
--accent: oklch(0.371 0 0);
|
115
|
+
--accent-foreground: oklch(0.985 0 0);
|
116
|
+
--destructive: oklch(0.704 0.191 22.216);
|
117
|
+
--border: oklch(1 0 0 / 10%);
|
118
|
+
--input: oklch(1 0 0 / 15%);
|
119
|
+
--ring: oklch(0.556 0 0);
|
120
|
+
--chart-1: var(--color-blue-300);
|
121
|
+
--chart-2: var(--color-blue-500);
|
122
|
+
--chart-3: var(--color-blue-600);
|
123
|
+
--chart-4: var(--color-blue-700);
|
124
|
+
--chart-5: var(--color-blue-800);
|
125
|
+
--sidebar: oklch(0.205 0 0);
|
126
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
127
|
+
--sidebar-primary: oklch(0.488 0.243 264.376);
|
128
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
129
|
+
--sidebar-accent: oklch(0.269 0 0);
|
130
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
131
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
132
|
+
--sidebar-ring: oklch(0.439 0 0);
|
133
|
+
--surface: oklch(0.2 0 0);
|
134
|
+
--surface-foreground: oklch(0.708 0 0);
|
135
|
+
--code: var(--surface);
|
136
|
+
--code-foreground: var(--surface-foreground);
|
137
|
+
--code-highlight: oklch(0.27 0 0);
|
138
|
+
--code-number: oklch(0.72 0 0);
|
139
|
+
--selection: oklch(0.922 0 0);
|
140
|
+
--selection-foreground: oklch(0.205 0 0);
|
141
|
+
}
|
142
|
+
|
143
|
+
@layer base {
|
144
|
+
* {
|
145
|
+
@apply border-border outline-ring/50;
|
146
|
+
}
|
147
|
+
::selection {
|
148
|
+
@apply bg-selection text-selection-foreground;
|
149
|
+
}
|
150
|
+
html {
|
151
|
+
@apply scroll-smooth;
|
152
|
+
}
|
153
|
+
body {
|
154
|
+
font-synthesis-weight: none;
|
155
|
+
text-rendering: optimizeLegibility;
|
156
|
+
}
|
157
|
+
|
158
|
+
@supports (font: -apple-system-body) and (-webkit-appearance: none) {
|
159
|
+
[data-wrapper] {
|
160
|
+
@apply min-[1800px]:border-t;
|
161
|
+
}
|
162
|
+
}
|
163
|
+
|
164
|
+
a:active,
|
165
|
+
button:active {
|
166
|
+
@apply opacity-60 md:opacity-100;
|
167
|
+
}
|
168
|
+
|
169
|
+
button:not(:disabled),
|
170
|
+
[role='button']:not(:disabled) {
|
171
|
+
cursor: pointer;
|
172
|
+
}
|
173
|
+
}
|
@@ -2,6 +2,8 @@ import { Controller } from '@hotwired/stimulus'
|
|
2
2
|
import { hideContent, showContent } from '../utils'
|
3
3
|
|
4
4
|
const CollapsibleController = class extends Controller {
|
5
|
+
static name = 'collapsible'
|
6
|
+
|
5
7
|
// targets
|
6
8
|
static targets = ['trigger', 'content']
|
7
9
|
declare readonly triggerTarget: HTMLElement
|
@@ -25,6 +25,8 @@ import {
|
|
25
25
|
import { useClickOutside, useDebounce } from 'stimulus-use'
|
26
26
|
|
27
27
|
const ComboboxController = class extends Controller<HTMLElement> {
|
28
|
+
static name = 'combobox'
|
29
|
+
|
28
30
|
// targets
|
29
31
|
static targets = [
|
30
32
|
'trigger',
|
@@ -115,7 +117,6 @@ const ComboboxController = class extends Controller<HTMLElement> {
|
|
115
117
|
this.searchInputTarget.focus()
|
116
118
|
|
117
119
|
let index = 0
|
118
|
-
console.log('this.selectedValue', this.selectedValue)
|
119
120
|
if (this.selectedValue) {
|
120
121
|
const item = this.filteredItems.find(
|
121
122
|
(i) => i.dataset.value === this.selectedValue,
|
@@ -19,9 +19,17 @@ import utc from 'dayjs/plugin/utc'
|
|
19
19
|
dayjs.extend(customParseFormat)
|
20
20
|
dayjs.extend(utc)
|
21
21
|
|
22
|
+
const SMALL_SCREEN_BREAKPOINT = 768
|
23
|
+
|
24
|
+
const isSmallScreen = () => {
|
25
|
+
return window.innerWidth < SMALL_SCREEN_BREAKPOINT
|
26
|
+
}
|
27
|
+
|
22
28
|
const DAYJS_FORMAT = 'YYYY-MM-DD'
|
23
29
|
|
24
30
|
const DatePickerController = class extends Controller<HTMLElement> {
|
31
|
+
static name = 'date-picker'
|
32
|
+
|
25
33
|
// targets
|
26
34
|
static targets = [
|
27
35
|
'trigger',
|
@@ -55,7 +63,6 @@ const DatePickerController = class extends Controller<HTMLElement> {
|
|
55
63
|
declare format: string
|
56
64
|
declare mask: boolean
|
57
65
|
declare calendar: Calendar
|
58
|
-
declare isMobile: boolean
|
59
66
|
declare DOMKeydownListener: (event: KeyboardEvent) => void
|
60
67
|
declare cleanup: () => void
|
61
68
|
declare onClickDateListener: (self: Calendar) => void
|
@@ -81,9 +88,23 @@ const DatePickerController = class extends Controller<HTMLElement> {
|
|
81
88
|
}
|
82
89
|
|
83
90
|
contentContainerTargetConnected() {
|
84
|
-
|
85
|
-
|
86
|
-
|
91
|
+
if (isSmallScreen()) {
|
92
|
+
const windowHeight = window.innerHeight
|
93
|
+
const datePickerHeight = this.identifier === 'date-picker' ? 300 : 600
|
94
|
+
|
95
|
+
let topOffset = 0
|
96
|
+
|
97
|
+
if (windowHeight > datePickerHeight) {
|
98
|
+
topOffset = (windowHeight - datePickerHeight) / 2
|
99
|
+
}
|
100
|
+
|
101
|
+
Object.assign(this.contentContainerTarget.style, {
|
102
|
+
top: `${topOffset}px`,
|
103
|
+
left: '50%',
|
104
|
+
transform: 'translateX(-50%)',
|
105
|
+
pointerEvents: 'auto',
|
106
|
+
})
|
107
|
+
}
|
87
108
|
}
|
88
109
|
|
89
110
|
toggle() {
|
@@ -154,12 +175,11 @@ const DatePickerController = class extends Controller<HTMLElement> {
|
|
154
175
|
if (!this.contentTarget.dataset.width) {
|
155
176
|
const contentWidth = this.contentTarget.offsetWidth
|
156
177
|
this.contentTarget.dataset.width = `${contentWidth}`
|
157
|
-
|
158
178
|
this.contentTarget.style.maxWidth = `${contentWidth}px`
|
159
179
|
this.contentTarget.style.minWidth = `${contentWidth}px`
|
160
180
|
}
|
161
181
|
|
162
|
-
if (
|
182
|
+
if (isSmallScreen()) {
|
163
183
|
lockScroll(this.contentTarget.id)
|
164
184
|
this.overlayTarget.style.display = ''
|
165
185
|
this.overlayTarget.dataset.state = 'open'
|
@@ -206,7 +226,7 @@ const DatePickerController = class extends Controller<HTMLElement> {
|
|
206
226
|
contentContainer: this.contentContainerTarget,
|
207
227
|
})
|
208
228
|
|
209
|
-
if (
|
229
|
+
if (isSmallScreen()) {
|
210
230
|
unlockScroll(this.contentTarget.id)
|
211
231
|
this.overlayTarget.style.display = 'none'
|
212
232
|
this.overlayTarget.dataset.state = 'closed'
|
@@ -49,6 +49,8 @@ const focusItemByIndex = (
|
|
49
49
|
}
|
50
50
|
|
51
51
|
const DropdownMenuController = class extends Controller<HTMLElement> {
|
52
|
+
static name = 'dropdown-menu'
|
53
|
+
|
52
54
|
// targets
|
53
55
|
static targets = ['trigger', 'contentContainer', 'content', 'item']
|
54
56
|
declare readonly triggerTarget: HTMLElement
|
@@ -9,6 +9,8 @@ import {
|
|
9
9
|
} from '../utils'
|
10
10
|
|
11
11
|
const DropdownMenuSubController = class extends Controller<HTMLElement> {
|
12
|
+
static name = 'dropdown-menu-sub'
|
13
|
+
|
12
14
|
// targets
|
13
15
|
static targets = ['trigger', 'contentContainer', 'content']
|
14
16
|
declare readonly triggerTarget: HTMLElement
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { Controller } from '@hotwired/stimulus'
|
2
2
|
|
3
3
|
const FormFieldController = class extends Controller {
|
4
|
+
static name = 'form-field'
|
5
|
+
|
4
6
|
connect() {
|
5
7
|
const hintContainer = this.element.querySelector('[data-remove-label]')
|
6
8
|
const labelContainer = this.element.querySelector('[data-remove-hint]')
|
@@ -4,6 +4,8 @@ import { initFloatingUi } from '../utils/floating_ui'
|
|
4
4
|
import { showContent, hideContent } from '../utils'
|
5
5
|
|
6
6
|
const HoverCardController = class extends Controller<HTMLElement> {
|
7
|
+
static name = 'hover-card'
|
8
|
+
|
7
9
|
// targets
|
8
10
|
static targets = ['trigger', 'content', 'contentContainer']
|
9
11
|
declare readonly triggerTarget: HTMLElement
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { Controller } from '@hotwired/stimulus'
|
2
2
|
|
3
3
|
const RadioGroupController = class extends Controller<HTMLElement> {
|
4
|
+
static name = 'radio-group'
|
5
|
+
|
4
6
|
// targets
|
5
7
|
static targets = ['item', 'input', 'indicator']
|
6
8
|
declare readonly itemTargets: HTMLInputElement[]
|
@@ -2,6 +2,8 @@ import { Controller } from '@hotwired/stimulus'
|
|
2
2
|
import noUiSlider, { API, Options } from 'nouislider'
|
3
3
|
|
4
4
|
const SliderController = class extends Controller<HTMLElement> {
|
5
|
+
static name = 'slider'
|
6
|
+
|
5
7
|
// targets
|
6
8
|
static targets = ['slider', 'hiddenInput', 'endHiddenInput']
|
7
9
|
declare readonly sliderTarget: HTMLInputElement
|
@@ -2,6 +2,8 @@ import { Controller } from '@hotwired/stimulus'
|
|
2
2
|
import { getNextEnabledIndex, getPreviousEnabledIndex } from '../utils'
|
3
3
|
|
4
4
|
const TabsController = class extends Controller {
|
5
|
+
static name = 'tabs'
|
6
|
+
|
5
7
|
// targets
|
6
8
|
static targets = ['trigger', 'content']
|
7
9
|
declare readonly triggerTargets: HTMLButtonElement[]
|