@techsio/ui-kit 0.44.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/internal/date-picker-coordinator.js +166 -0
  2. package/dist/molecules/date-picker.js +1374 -0
  3. package/dist/molecules/tour.js +318 -0
  4. package/dist/src/internal/date-picker-coordinator.d.ts +42 -0
  5. package/dist/src/internal/date-picker-coordinator.d.ts.map +1 -0
  6. package/dist/src/molecules/date-picker.d.ts +159 -0
  7. package/dist/src/molecules/date-picker.d.ts.map +1 -0
  8. package/dist/src/molecules/tour.d.ts +72 -0
  9. package/dist/src/molecules/tour.d.ts.map +1 -0
  10. package/dist/src/types/zag.d.ts +1 -0
  11. package/dist/src/types/zag.d.ts.map +1 -1
  12. package/dist/stories/changelog/changelog.stories.d.ts +1 -1
  13. package/dist/stories/changelog/changelog.stories.d.ts.map +1 -1
  14. package/dist/stories/molecules/date-picker.stories.d.ts +141 -0
  15. package/dist/stories/molecules/date-picker.stories.d.ts.map +1 -0
  16. package/dist/stories/molecules/tour.stories.d.ts +58 -0
  17. package/dist/stories/molecules/tour.stories.d.ts.map +1 -0
  18. package/dist/test/date-picker.behavior.spec.d.ts +2 -0
  19. package/dist/test/date-picker.behavior.spec.d.ts.map +1 -0
  20. package/dist/test/tour.playwright.config.d.ts +4 -0
  21. package/dist/test/tour.playwright.config.d.ts.map +1 -0
  22. package/dist/test/tour.spec.d.ts +2 -0
  23. package/dist/test/tour.spec.d.ts.map +1 -0
  24. package/dist/test/tour.typecheck.d.ts +11 -0
  25. package/dist/test/tour.typecheck.d.ts.map +1 -0
  26. package/package.json +11 -3
  27. package/src/tokens/components/components.css +2 -0
  28. package/src/tokens/components/molecules/_date-picker.css +225 -0
  29. package/src/tokens/components/molecules/_tour.css +121 -0
@@ -0,0 +1,141 @@
1
+ import type { StoryObj } from "@storybook/react";
2
+ import { type DatePickerGranularity, type DatePickerDayRootProps, type DatePickerOpenChangeDetails, type DatePickerSelectionMode, type DatePickerSize } from "../../src/molecules/date-picker.js";
3
+ type DatePickerPlaygroundArgs = {
4
+ defaultOpen: boolean;
5
+ disabled: boolean;
6
+ flip: boolean;
7
+ granularity: DatePickerGranularity;
8
+ hideTimeZone: boolean;
9
+ hourCycle: 12 | 24;
10
+ initialValue: "empty" | "preset";
11
+ invalid: boolean;
12
+ locale: string;
13
+ numOfMonths: "auto" | 1 | 2;
14
+ onOpenChange?: (details: DatePickerOpenChangeDetails) => void;
15
+ onValueChange?: (details: {
16
+ value: unknown;
17
+ valueAsString: unknown;
18
+ }) => void;
19
+ offset: number;
20
+ placement: NonNullable<DatePickerDayRootProps["placement"]>;
21
+ readOnly: boolean;
22
+ required: boolean;
23
+ selectionMode: DatePickerSelectionMode;
24
+ shouldForceLeadingZeros: boolean;
25
+ size: DatePickerSize;
26
+ slide: boolean;
27
+ startOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;
28
+ useDateBounds: boolean;
29
+ useUnavailableDate: boolean;
30
+ useUnavailableTime: boolean;
31
+ valueKind: "floating" | "zoned";
32
+ };
33
+ declare const meta: {
34
+ title: string;
35
+ component: import("react").FunctionComponent<DatePickerDayRootProps>;
36
+ subcomponents: {
37
+ Label: ({ children, className, ref, ...props }: import("../../src/molecules/date-picker.js").DatePickerLabelProps) => import("react/jsx-runtime").JSX.Element;
38
+ Control: ({ children, className, ref, ...props }: import("../../src/molecules/date-picker.js").DatePickerControlProps) => import("react/jsx-runtime").JSX.Element;
39
+ Segments: ({ className, endLabel, ref, separator, startLabel, ...props }: import("../../src/molecules/date-picker.js").DatePickerSegmentsProps) => import("react/jsx-runtime").JSX.Element;
40
+ IndicatorGroup: ({ className, ref, ...props }: import("../../src/molecules/date-picker.js").DatePickerIndicatorGroupProps) => import("react/jsx-runtime").JSX.Element;
41
+ Trigger: ({ children, className, icon, iconSize, ref, size, theme, type, ...props }: import("../../src/molecules/date-picker.js").DatePickerTriggerProps) => import("react/jsx-runtime").JSX.Element;
42
+ ClearTrigger: ({ children, className, icon, iconSize, onClick, ref, size, theme, type, ...props }: import("../../src/molecules/date-picker.js").DatePickerClearTriggerProps) => import("react/jsx-runtime").JSX.Element;
43
+ Positioner: ({ children, className, forceMount, ref, ...props }: import("../../src/molecules/date-picker.js").DatePickerPositionerProps) => import("react/jsx-runtime").JSX.Element | null;
44
+ Content: ({ className, ref, ...props }: import("../../src/molecules/date-picker.js").DatePickerContentProps) => import("react/jsx-runtime").JSX.Element;
45
+ Calendar: ({ className, ref, ...props }: import("../../src/molecules/date-picker.js").DatePickerCalendarProps) => import("react/jsx-runtime").JSX.Element;
46
+ TimeControl: ({ className, endLabel, ref, startLabel, ...props }: import("../../src/molecules/date-picker.js").DatePickerTimeControlProps) => import("react/jsx-runtime").JSX.Element | null;
47
+ Footer: ({ className, ref, ...props }: import("../../src/molecules/date-picker.js").DatePickerFooterProps) => import("react/jsx-runtime").JSX.Element;
48
+ CancelTrigger: ({ children, className, onClick, ref, size: sizeProp, theme, type, variant, ...props }: import("../../src/molecules/date-picker.js").DatePickerCancelTriggerProps) => import("react/jsx-runtime").JSX.Element;
49
+ ConfirmTrigger: ({ children, className, disabled, onClick, ref, size: sizeProp, theme, type, variant, ...props }: import("../../src/molecules/date-picker.js").DatePickerConfirmTriggerProps) => import("react/jsx-runtime").JSX.Element;
50
+ };
51
+ tags: string[];
52
+ parameters: {
53
+ layout: string;
54
+ controls: {
55
+ include: string[];
56
+ };
57
+ docs: {
58
+ description: {
59
+ component: string;
60
+ };
61
+ };
62
+ };
63
+ argTypes: {
64
+ children: {
65
+ control: false;
66
+ table: {
67
+ disable: true;
68
+ };
69
+ };
70
+ size: {
71
+ control: "select";
72
+ options: string[];
73
+ description: string;
74
+ table: {
75
+ defaultValue: {
76
+ summary: string;
77
+ };
78
+ };
79
+ };
80
+ locale: {
81
+ control: "select";
82
+ options: string[];
83
+ description: string;
84
+ table: {
85
+ defaultValue: {
86
+ summary: string;
87
+ };
88
+ };
89
+ };
90
+ disabled: {
91
+ control: "boolean";
92
+ };
93
+ readOnly: {
94
+ control: "boolean";
95
+ };
96
+ invalid: {
97
+ control: "boolean";
98
+ };
99
+ required: {
100
+ control: "boolean";
101
+ };
102
+ onOpenChange: {
103
+ control: false;
104
+ };
105
+ onValueChange: {
106
+ control: false;
107
+ };
108
+ };
109
+ args: {
110
+ children: null;
111
+ disabled: false;
112
+ invalid: false;
113
+ locale: string;
114
+ onOpenChange: import("storybook/test").Mock<(...args: any[]) => any>;
115
+ onValueChange: import("storybook/test").Mock<(...args: any[]) => any>;
116
+ readOnly: false;
117
+ required: false;
118
+ size: "md";
119
+ };
120
+ };
121
+ export default meta;
122
+ type Story = StoryObj<typeof meta>;
123
+ export declare const Playground: StoryObj<DatePickerPlaygroundArgs>;
124
+ export declare const Sizes: Story;
125
+ export declare const States: Story;
126
+ export declare const DateOnlyCalendar: Story;
127
+ export declare const DateRangeCalendar: Story;
128
+ export declare const ControlledDateRange: Story;
129
+ export declare const RejectingControlledDateRange: Story;
130
+ export declare const RangeFormSerialization: Story;
131
+ export declare const LocalizedUnavailableRange: Story;
132
+ export declare const TransactionalTimeGranularities: Story;
133
+ export declare const InitiallyOpenTimedDraft: Story;
134
+ export declare const InitiallyOpenDateTimeRange: Story;
135
+ export declare const ZonedDateTimeRange: Story;
136
+ export declare const ControlledTimedResync: Story;
137
+ export declare const ControlledParentBehaviors: Story;
138
+ export declare const ClearAndFormSerialization: Story;
139
+ export declare const LocalesAndLongLabels: Story;
140
+ export declare const TypedDateTimeValues: Story;
141
+ //# sourceMappingURL=date-picker.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.stories.d.ts","sourceRoot":"","sources":["../../../stories/molecules/date-picker.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { StoryObj } from "@storybook/react";
2
+ import { Tour, type TourStep } from "../../src/molecules/tour.js";
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof Tour;
6
+ tags: string[];
7
+ parameters: {
8
+ layout: string;
9
+ controls: {
10
+ include: string[];
11
+ };
12
+ };
13
+ argTypes: {
14
+ closeOnEscape: {
15
+ control: "boolean";
16
+ };
17
+ closeOnInteractOutside: {
18
+ control: "boolean";
19
+ };
20
+ preventInteraction: {
21
+ control: "boolean";
22
+ };
23
+ keyboardNavigation: {
24
+ control: "boolean";
25
+ };
26
+ dir: {
27
+ control: "select";
28
+ options: string[];
29
+ };
30
+ };
31
+ args: {
32
+ steps: never[];
33
+ children: null;
34
+ closeOnEscape: true;
35
+ closeOnInteractOutside: true;
36
+ preventInteraction: false;
37
+ keyboardNavigation: true;
38
+ dir: "ltr";
39
+ onStatusChange: import("storybook/test").Mock<(...args: any[]) => any>;
40
+ onStepChange: import("storybook/test").Mock<(...args: any[]) => any>;
41
+ };
42
+ render: (args: Omit<import("@zag-js/tour").Props, "id" | "steps" | "stepId"> & {
43
+ children: import("react").ReactNode;
44
+ id?: string;
45
+ steps: TourStep[];
46
+ }) => import("react/jsx-runtime").JSX.Element;
47
+ };
48
+ export default meta;
49
+ type Story = StoryObj<typeof meta>;
50
+ export declare const Playground: Story;
51
+ export declare const LateTarget: Story;
52
+ export declare const InteractiveWait: Story;
53
+ export declare const FloatingPlacements: Story;
54
+ export declare const CustomControls: Story;
55
+ export declare const LongContent: Story;
56
+ export declare const UnmountDuringWait: Story;
57
+ export declare const ScrollTarget: Story;
58
+ //# sourceMappingURL=tour.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tour.stories.d.ts","sourceRoot":"","sources":["../../../stories/molecules/tour.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAKtD,OAAO,EACL,IAAI,EAEJ,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAA;AA0FjC,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCmB,CAAA;AAE7B,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC,eAAO,MAAM,UAAU,EAAE,KAAU,CAAA;AA0DnC,eAAO,MAAM,UAAU,EAAE,KAExB,CAAA;AA4ED,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAA;AAkBD,eAAO,MAAM,kBAAkB,EAAE,KAsBhC,CAAA;AAgGD,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAqCzB,CAAA;AAgCD,eAAO,MAAM,iBAAiB,EAAE,KAG/B,CAAA;AA4BD,eAAO,MAAM,YAAY,EAAE,KAE1B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=date-picker.behavior.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.behavior.spec.d.ts","sourceRoot":"","sources":["../../test/date-picker.behavior.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ /** Focused behavior checks against an already running Storybook. */
2
+ declare const _default: import("@playwright/test").PlaywrightTestConfig<{}, {}>;
3
+ export default _default;
4
+ //# sourceMappingURL=tour.playwright.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tour.playwright.config.d.ts","sourceRoot":"","sources":["../../test/tour.playwright.config.ts"],"names":[],"mappings":"AAEA,oEAAoE;;AACpE,wBAeE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tour.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tour.spec.d.ts","sourceRoot":"","sources":["../../test/tour.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { type TourApi, type TourStep } from "../src/molecules/tour.js";
2
+ export declare const tourSteps: TourStep[];
3
+ export declare const tourContract: import("react/jsx-runtime").JSX.Element;
4
+ export declare const triggerRefContract: import("react/jsx-runtime").JSX.Element;
5
+ export declare const actionRefContract: import("react/jsx-runtime").JSX.Element;
6
+ export declare const invalidActionContract: import("react/jsx-runtime").JSX.Element;
7
+ export declare const invalidControlledContract: import("react/jsx-runtime").JSX.Element;
8
+ export declare const invalidTimeoutContract: import("react/jsx-runtime").JSX.Element;
9
+ export type InvalidDismissContract = TourApi["dismiss"];
10
+ export type InvalidSkipContract = TourApi["skip"];
11
+ //# sourceMappingURL=tour.typecheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tour.typecheck.d.ts","sourceRoot":"","sources":["../../test/tour.typecheck.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEzE,eAAO,MAAM,SAAS,EAAE,QAAQ,EAO/B,CAAA;AAED,eAAO,MAAM,YAAY,yCAiBxB,CAAA;AAGD,eAAO,MAAM,kBAAkB,yCAE9B,CAAA;AACD,eAAO,MAAM,iBAAiB,yCAI7B,CAAA;AAED,eAAO,MAAM,qBAAqB,yCAGjC,CAAA;AAED,eAAO,MAAM,yBAAyB,yCAKrC,CAAA;AAED,eAAO,MAAM,sBAAsB,yCAKlC,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAGvD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techsio/ui-kit",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -70,6 +70,7 @@
70
70
  "storybook": "storybook dev",
71
71
  "figma:connect:parse": "figma connect parse --config figma.config.json",
72
72
  "figma:connect:publish": "figma connect publish --config figma.config.json",
73
+ "test": "vitest run --config vitest.config.ts",
73
74
  "test-storybook": "test-storybook",
74
75
  "storybook:a11y": "bash scripts/storybook-a11y.sh",
75
76
  "test:components": "node scripts/run-component-tests.mjs",
@@ -82,7 +83,8 @@
82
83
  "validate:tokens": "bun scripts/validate-token-usage.js && bun scripts/validate-token-definitions.js",
83
84
  "validate:token-usage": "bun scripts/validate-token-usage.js",
84
85
  "validate:token-definitions": "bun scripts/validate-token-definitions.js",
85
- "semantic-release": "semantic-release"
86
+ "semantic-release": "semantic-release",
87
+ "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.tests.json"
86
88
  },
87
89
  "dependencies": {
88
90
  "@dnd-kit/core": "^6.3.1",
@@ -93,6 +95,7 @@
93
95
  "@iconify-json/mdi-light": "^1.2.2",
94
96
  "@iconify-json/svg-spinners": "^1.2.4",
95
97
  "@iconify/tailwind4": "^1.1.0",
98
+ "@internationalized/date": "^3.12.2",
96
99
  "@tanstack/charts": "^0.6.5",
97
100
  "@tanstack/charts-scales": "^0.6.5",
98
101
  "@tanstack/react-charts": "^0.6.5",
@@ -103,6 +106,8 @@
103
106
  "@zag-js/cascade-select": "1.43.3",
104
107
  "@zag-js/checkbox": "1.43.3",
105
108
  "@zag-js/combobox": "1.43.3",
109
+ "@zag-js/date-input": "1.43.3",
110
+ "@zag-js/date-picker": "1.43.3",
106
111
  "@zag-js/dialog": "1.43.3",
107
112
  "@zag-js/drawer": "1.43.3",
108
113
  "@zag-js/file-upload": "1.43.3",
@@ -122,6 +127,7 @@
122
127
  "@zag-js/tabs": "1.43.3",
123
128
  "@zag-js/toast": "1.43.3",
124
129
  "@zag-js/tooltip": "1.43.3",
130
+ "@zag-js/tour": "1.43.3",
125
131
  "@zag-js/tree-view": "1.43.3",
126
132
  "better-themes": "^1.1.0",
127
133
  "d3-scale": "^4.0.2",
@@ -166,7 +172,9 @@
166
172
  "storybook-addon-rslib": "^3.4.2",
167
173
  "storybook-react-rsbuild": "^3.4.2",
168
174
  "tailwindcss": "^4.1.17",
169
- "typescript": "^5.9.3"
175
+ "typescript": "^5.9.3",
176
+ "vite": "catalog:vite5-testing",
177
+ "vitest": "catalog:vite5-testing"
170
178
  },
171
179
  "peerDependencies": {
172
180
  "@types/react": ">=19.2.0",
@@ -23,6 +23,7 @@
23
23
  @import "./molecules/_chart.css";
24
24
  @import "./molecules/_color-select.css";
25
25
  @import "./molecules/_combobox.css";
26
+ @import "./molecules/_date-picker.css";
26
27
  @import "./molecules/_dialog.css";
27
28
  @import "./molecules/_drawer.css";
28
29
  @import "./molecules/_file-upload.css";
@@ -39,6 +40,7 @@
39
40
  @import "./molecules/_steps.css";
40
41
  @import "./molecules/_switch.css";
41
42
  @import "./molecules/_toast.css";
43
+ @import "./molecules/_tour.css";
42
44
  @import "./molecules/_tree-view.css";
43
45
 
44
46
  @import "./organisms/_table.css";
@@ -0,0 +1,225 @@
1
+ /*
2
+ * DatePicker — compact segmented field and calendar surface.
3
+ *
4
+ * The reference layer binds the component to shared form-control and semantic
5
+ * foundations. The derived layer is the only DatePicker palette consumed by
6
+ * the component source.
7
+ */
8
+ @theme static {
9
+ /* Reference layer */
10
+ --color-date-picker-surface: var(--color-fill-overlay);
11
+ --color-date-picker-fill: var(--color-form-control-bg);
12
+ --color-date-picker-fill-hover: var(--color-form-control-bg-hover);
13
+ --color-date-picker-fill-active: var(--color-form-control-bg-focus);
14
+ --color-date-picker-accent: var(--color-bg-primary-base);
15
+ --color-date-picker-accent-hover: var(--color-bg-primary-hover);
16
+ --color-date-picker-accent-foreground: var(--color-fg-light);
17
+ --color-date-picker-text: var(--color-fg-primary);
18
+ --color-date-picker-text-muted: var(--color-fg-secondary);
19
+ --color-date-picker-placeholder: var(--color-form-control-fg-placeholder);
20
+ --color-date-picker-disabled: var(--color-form-control-fg-disabled);
21
+ --color-date-picker-border: var(--color-form-control-border);
22
+ --color-date-picker-border-hover: var(--color-form-control-border-hover);
23
+ --color-date-picker-focus: var(--color-form-control-border-focus);
24
+ --color-date-picker-ring: var(--color-form-control-ring);
25
+ --color-date-picker-error: var(--color-danger);
26
+ --color-date-picker-error-hover: var(--color-border-danger-hover);
27
+ --color-date-picker-error-focus: var(--color-border-danger-focus);
28
+ --color-date-picker-range: color-mix(
29
+ in oklab,
30
+ var(--color-date-picker-accent) 20%,
31
+ transparent
32
+ );
33
+ --color-date-picker-transparent: var(--color-bg-transparent);
34
+
35
+ /* Derived color layer */
36
+ --color-date-picker-label-fg: var(--color-date-picker-text);
37
+ --color-date-picker-control-bg: var(--color-date-picker-fill);
38
+ --color-date-picker-control-bg-hover: var(--color-date-picker-fill-hover);
39
+ --color-date-picker-control-bg-focus: var(--color-date-picker-fill-active);
40
+ --color-date-picker-control-bg-readonly: var(--color-date-picker-fill);
41
+ --color-date-picker-control-bg-disabled: var(
42
+ --color-form-control-bg-disabled
43
+ );
44
+ --color-date-picker-control-fg: var(--color-date-picker-text);
45
+ --color-date-picker-control-fg-disabled: var(--color-date-picker-disabled);
46
+ --color-date-picker-control-border: var(--color-date-picker-border);
47
+ --color-date-picker-control-border-hover: var(
48
+ --color-date-picker-border-hover
49
+ );
50
+ --color-date-picker-control-border-focus: var(--color-date-picker-focus);
51
+ --color-date-picker-control-border-error: var(--color-date-picker-error);
52
+ --color-date-picker-control-border-error-hover: var(
53
+ --color-date-picker-error-hover
54
+ );
55
+ --color-date-picker-control-border-error-focus: var(
56
+ --color-date-picker-error-focus
57
+ );
58
+ --color-date-picker-control-border-disabled: var(
59
+ --color-form-control-border-disabled
60
+ );
61
+ --color-date-picker-control-ring: var(--color-date-picker-ring);
62
+ --color-date-picker-segment-bg-focus: var(--color-date-picker-fill-hover);
63
+ --color-date-picker-segment-fg-placeholder: var(
64
+ --color-date-picker-placeholder
65
+ );
66
+ --color-date-picker-range-separator-fg: var(--color-date-picker-text-muted);
67
+ --color-date-picker-trigger-bg: var(--color-date-picker-fill);
68
+ --color-date-picker-trigger-bg-hover: var(--color-date-picker-fill-hover);
69
+ --color-date-picker-trigger-bg-active: var(--color-date-picker-fill-active);
70
+ --color-date-picker-trigger-fg: var(--color-date-picker-text);
71
+ --color-date-picker-trigger-fg-disabled: var(--color-date-picker-disabled);
72
+ --color-date-picker-trigger-ring: var(--color-date-picker-ring);
73
+ --color-date-picker-content-bg: var(--color-date-picker-surface);
74
+ --color-date-picker-content-fg: var(--color-date-picker-text);
75
+ --color-date-picker-content-border: var(--color-date-picker-border);
76
+ --color-date-picker-navigation-bg-hover: var(--color-date-picker-fill-hover);
77
+ --color-date-picker-navigation-fg: var(--color-date-picker-text);
78
+ --color-date-picker-navigation-fg-disabled: var(--color-date-picker-disabled);
79
+ --color-date-picker-navigation-ring: var(--color-date-picker-ring);
80
+ --color-date-picker-weekday-fg: var(--color-date-picker-text);
81
+ --color-date-picker-day-bg: var(--color-date-picker-transparent);
82
+ --color-date-picker-day-bg-hover: var(--color-date-picker-fill-hover);
83
+ --color-date-picker-day-bg-range: var(--color-date-picker-range);
84
+ --color-date-picker-day-bg-range-hover: color-mix(
85
+ in oklab,
86
+ var(--color-date-picker-accent) 28%,
87
+ transparent
88
+ );
89
+ --color-date-picker-day-bg-selected: var(--color-date-picker-accent);
90
+ --color-date-picker-day-bg-selected-hover: var(
91
+ --color-date-picker-accent-hover
92
+ );
93
+ --color-date-picker-day-fg: var(--color-date-picker-text);
94
+ --color-date-picker-day-fg-selected: var(
95
+ --color-date-picker-accent-foreground
96
+ );
97
+ --color-date-picker-day-fg-unavailable: var(--color-date-picker-disabled);
98
+ --color-date-picker-day-border: var(--color-date-picker-transparent);
99
+ --color-date-picker-day-today-border: var(--color-date-picker-accent);
100
+ --color-date-picker-day-ring: var(--color-date-picker-ring);
101
+ --color-date-picker-time-bg: var(--color-date-picker-fill);
102
+ --color-date-picker-time-fg: var(--color-date-picker-text);
103
+ --color-date-picker-time-label-fg: var(--color-date-picker-text);
104
+ --color-date-picker-time-border: var(--color-date-picker-border);
105
+ --color-date-picker-time-ring: var(--color-date-picker-ring);
106
+ --color-date-picker-footer-border: var(--color-date-picker-border);
107
+ --color-date-picker-month-divider-border: var(--color-date-picker-border);
108
+
109
+ /* Geometry and density */
110
+ --border-width-date-picker-control: var(--border-width-form-control);
111
+ --border-width-date-picker-content: var(--border-sm);
112
+ --border-width-date-picker-day: var(--border-sm);
113
+ --border-width-date-picker-time: var(--border-width-form-control);
114
+ --radius-date-picker-control-sm: var(--radius-form-control-sm);
115
+ --radius-date-picker-control-md: var(--radius-form-control-md);
116
+ --radius-date-picker-control-lg: var(--radius-form-control-lg);
117
+ --radius-date-picker-content: var(--radius-popover);
118
+ --radius-date-picker-day: var(--radius-button-sm);
119
+ --radius-date-picker-time: var(--radius-form-control-sm);
120
+ --shadow-date-picker-content: var(--shadow-popover);
121
+
122
+ --gap-date-picker-root: var(--spacing-form-field-gap);
123
+ --gap-date-picker-control: var(--spacing-100);
124
+ --gap-date-picker-indicator: var(--spacing-50);
125
+ --gap-date-picker-calendar: var(--spacing-100);
126
+ --gap-date-picker-time: var(--spacing-100);
127
+ --gap-date-picker-footer: var(--spacing-100);
128
+ --spacing-date-picker-enter-offset: var(--spacing-50);
129
+ --padding-date-picker-segments-sm: var(--spacing-100);
130
+ --padding-date-picker-segments-md: var(--spacing-150);
131
+ --padding-date-picker-segments-lg: var(--spacing-200);
132
+ --padding-date-picker-segment: var(--spacing-50);
133
+ --padding-date-picker-range-separator: var(--spacing-100);
134
+ --padding-date-picker-content: var(--dimension-16);
135
+ --padding-date-picker-content-timed: var(--dimension-10);
136
+ --padding-date-picker-calendar-cell: var(--spacing-100);
137
+ --padding-date-picker-time-input: var(--spacing-50);
138
+ --padding-date-picker-time: var(--dimension-10);
139
+ --padding-date-picker-footer: var(--dimension-10);
140
+
141
+ --height-date-picker-control-sm: var(--height-form-control-sm);
142
+ --height-date-picker-control-md: var(--height-form-control-md);
143
+ --height-date-picker-control-lg: var(--height-form-control-lg);
144
+ --size-date-picker-navigation: var(--size-icon-control-md);
145
+ --size-date-picker-day-sm: var(--dimension-28);
146
+ --size-date-picker-day-md: var(--dimension-32);
147
+ --size-date-picker-day-lg: var(--dimension-36);
148
+ --size-date-picker-day-timed: var(--dimension-28);
149
+ --height-date-picker-day-sm: var(--size-date-picker-day-sm);
150
+ --height-date-picker-day-md: var(--size-date-picker-day-md);
151
+ --height-date-picker-day-lg: var(--size-date-picker-day-lg);
152
+ --height-date-picker-day-timed: var(--size-date-picker-day-timed);
153
+ --width-date-picker-content: calc(var(--dimension-40) * 7);
154
+ --width-date-picker-content-range: calc(
155
+ var(--width-date-picker-content) *
156
+ 2 +
157
+ var(--gap-date-picker-calendar) +
158
+ var(--padding-date-picker-content) *
159
+ 2
160
+ );
161
+ --container-date-picker-viewport: calc(100vw - var(--spacing-250) * 2);
162
+ --size-date-picker-segment: var(--dimension-24);
163
+ --height-date-picker-time-field: var(--height-form-control-sm);
164
+ --width-date-picker-time-field: var(--dimension-40);
165
+
166
+ --text-date-picker-sm: var(--text-sm);
167
+ --text-date-picker-md: var(--text-md);
168
+ --text-date-picker-lg: var(--text-lg);
169
+ --text-date-picker-content-sm: var(--text-xs);
170
+ --text-date-picker-content-md: var(--text-sm);
171
+ --text-date-picker-content-lg: var(--text-sm);
172
+ --text-date-picker-weekday: var(--text-xs);
173
+ --text-date-picker-time-label: var(--text-xs);
174
+ --font-weight-date-picker-view: var(--font-weight-medium);
175
+ --font-weight-date-picker-weekday: var(--font-weight-medium);
176
+ --opacity-date-picker-outside: var(--opacity-disabled);
177
+ --opacity-date-picker-disabled: var(--opacity-disabled);
178
+ }
179
+
180
+ @utility date-picker-scrollbar-hidden {
181
+ scrollbar-width: none;
182
+
183
+ &::-webkit-scrollbar {
184
+ display: none;
185
+ }
186
+ }
187
+
188
+ @utility date-picker-segment-size {
189
+ min-width: var(--size-date-picker-segment);
190
+ min-height: var(--size-date-picker-segment);
191
+ }
192
+
193
+ @utility token-icon-date-picker-calendar {
194
+ @apply icon-[mdi--calendar-blank-outline];
195
+ }
196
+
197
+ @utility token-icon-date-picker-clear {
198
+ @apply token-icon-close;
199
+ }
200
+
201
+ @utility token-icon-date-picker-previous {
202
+ @apply token-icon-chevron-left;
203
+ }
204
+
205
+ @utility token-icon-date-picker-next {
206
+ @apply token-icon-chevron-right;
207
+ }
208
+
209
+ @utility token-icon-date-picker-previous-year {
210
+ @apply icon-[mdi--chevron-double-left];
211
+ }
212
+
213
+ @utility token-icon-date-picker-next-year {
214
+ @apply icon-[mdi--chevron-double-right];
215
+ }
216
+
217
+ @utility token-date-picker-time-input {
218
+ appearance: textfield;
219
+
220
+ &::-webkit-inner-spin-button,
221
+ &::-webkit-outer-spin-button {
222
+ margin: 0;
223
+ appearance: none;
224
+ }
225
+ }
@@ -0,0 +1,121 @@
1
+ /* Code-owned until the explicitly deferred component-to-figma handoff. */
2
+ @theme static {
3
+ /* Reference layer */
4
+ --color-tour-surface: var(--color-fill-surface);
5
+ --color-tour-text: var(--color-fg-primary);
6
+ --color-tour-outline: var(--color-border-primary);
7
+ --color-tour-scrim: var(--color-bg-scrim);
8
+
9
+ /* Derived layer */
10
+ --color-tour-bg: var(--color-tour-surface);
11
+ --color-tour-fg: var(--color-tour-text);
12
+ --color-tour-description-fg: var(--color-tour-text);
13
+ --color-tour-progress-fg: var(--color-tour-text);
14
+ --color-tour-border: var(--color-tour-outline);
15
+ --color-tour-backdrop-bg: var(--color-tour-scrim);
16
+ --color-tour-arrow-bg: var(--color-tour-surface);
17
+ --color-tour-spotlight-border: var(--color-tour-text);
18
+ --border-width-tour: var(--border-width-sm);
19
+ --radius-tour: var(--radius-sm);
20
+ --shadow-tour: var(--shadow-primary);
21
+ --padding-tour: var(--dimension-20);
22
+ --padding-tour-actions: var(--dimension-6);
23
+ --spacing-tour-content: var(--dimension-10);
24
+ --spacing-tour-actions: var(--dimension-6);
25
+ --spacing-tour-close: var(--dimension-10);
26
+ --spacing-tour-title: var(--dimension-30);
27
+ --spacing-tour-arrow: var(--dimension-10);
28
+ --spacing-tour-viewport: var(--dimension-16);
29
+ --container-tour: var(--container-sm);
30
+ --text-tour-title-size: var(--text-lg);
31
+ --text-tour-body-size: var(--text-base);
32
+ --text-tour-progress-size: var(--text-base);
33
+ --font-weight-tour-title: var(--font-weight-semibold);
34
+
35
+ /* Runtime layer, not a Figma variable. */
36
+ --z-tour: 80;
37
+ }
38
+
39
+ @utility tour-layer {
40
+ /* Zag 1.43.3 derives the positioner's inline z-index from Content.
41
+ * Keep explicit backdrop/spotlight/content offsets for the ui-kit stack. */
42
+ z-index: calc(var(--z-tour) + var(--tour-layer, 2)) !important;
43
+ }
44
+
45
+ @utility tour-border {
46
+ border: var(--border-width-tour) solid var(--color-tour-border);
47
+ }
48
+
49
+ @utility tour-spotlight-border {
50
+ border: var(--border-width-tour) solid var(--color-tour-spotlight-border);
51
+ }
52
+
53
+ @utility tour-content {
54
+ width: var(--container-tour);
55
+ max-width: calc(100vw - var(--spacing-tour-viewport) * 2);
56
+ max-height: calc(100svh - var(--spacing-tour-viewport) * 2);
57
+ overflow-wrap: anywhere;
58
+ overflow-y: auto;
59
+ overscroll-behavior: contain;
60
+ }
61
+
62
+ @utility tour-positioner {
63
+ &[data-type="dialog"] {
64
+ position: fixed;
65
+ inset: 0;
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ pointer-events: none;
70
+ }
71
+
72
+ &[data-type="floating"] {
73
+ position: fixed;
74
+ inset: 0;
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ padding: var(--spacing-tour-viewport);
79
+ pointer-events: none;
80
+
81
+ &[data-placement^="top"],
82
+ &[data-placement="left-start"],
83
+ &[data-placement="right-start"] {
84
+ align-items: flex-start;
85
+ }
86
+
87
+ &[data-placement^="bottom"],
88
+ &[data-placement="left-end"],
89
+ &[data-placement="right-end"] {
90
+ align-items: flex-end;
91
+ }
92
+
93
+ &[data-placement="top-start"],
94
+ &[data-placement="bottom-start"] {
95
+ justify-content: flex-start;
96
+ }
97
+
98
+ &[data-placement="top-end"],
99
+ &[data-placement="bottom-end"] {
100
+ justify-content: flex-end;
101
+ }
102
+
103
+ &[data-placement^="left"] {
104
+ justify-content: left;
105
+ }
106
+
107
+ &[data-placement^="right"] {
108
+ justify-content: right;
109
+ }
110
+ }
111
+
112
+ & > [data-scope="tour"][data-part="content"] {
113
+ pointer-events: auto;
114
+ }
115
+ }
116
+
117
+ @utility tour-arrow {
118
+ --arrow-size: var(--spacing-tour-arrow);
119
+ --arrow-background: var(--color-tour-arrow-bg);
120
+ z-index: calc(var(--z-tour) + 3);
121
+ }