@vadimcomanescu/nadicode-design-system 4.0.3 → 4.0.4

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.
@@ -821,6 +821,24 @@ export declare const seedComponentDefinitions: {
821
821
  events: string[];
822
822
  description: string;
823
823
  };
824
+ TimezonePickerBlock: {
825
+ props: z.ZodObject<{
826
+ value: z.ZodNullable<z.ZodString>;
827
+ groups: z.ZodNullable<z.ZodArray<z.ZodObject<{
828
+ region: z.ZodString;
829
+ timezones: z.ZodArray<z.ZodObject<{
830
+ value: z.ZodString;
831
+ label: z.ZodString;
832
+ region: z.ZodString;
833
+ offset: z.ZodString;
834
+ offsetMinutes: z.ZodNumber;
835
+ }, z.core.$strip>>;
836
+ }, z.core.$strip>>>;
837
+ name: z.ZodNullable<z.ZodString>;
838
+ }, z.core.$strip>;
839
+ events: string[];
840
+ description: string;
841
+ };
824
842
  UsageDonutBlock: {
825
843
  props: z.ZodObject<{
826
844
  data: z.ZodNullable<z.ZodArray<z.ZodObject<{
@@ -761,6 +761,28 @@ var seedComponentDefinitions = {
761
761
  events: ["verify", "complete"],
762
762
  description: "Two-factor setup wizard with QR code, secret key display, backup codes, and verification."
763
763
  },
764
+ TimezonePickerBlock: {
765
+ props: z.object({
766
+ value: z.string().nullable(),
767
+ groups: z.array(
768
+ z.object({
769
+ region: z.string(),
770
+ timezones: z.array(
771
+ z.object({
772
+ value: z.string(),
773
+ label: z.string(),
774
+ region: z.string(),
775
+ offset: z.string(),
776
+ offsetMinutes: z.number()
777
+ })
778
+ )
779
+ })
780
+ ).nullable(),
781
+ name: z.string().nullable()
782
+ }),
783
+ events: ["change"],
784
+ description: "Searchable timezone picker with grouped IANA timezones, offset display, and form integration."
785
+ },
764
786
  UsageDonutBlock: {
765
787
  props: z.object({
766
788
  data: z.array(
@@ -51,6 +51,7 @@ import { TeamBlock } from '../components/blocks/TeamBlock';
51
51
  import { TestimonialsBlock } from '../components/blocks/TestimonialsBlock';
52
52
  import { TwoFactorChallengeBlock } from '../components/blocks/TwoFactorChallengeBlock';
53
53
  import { TwoFactorSetupBlock } from '../components/blocks/TwoFactorSetupBlock';
54
+ import { TimezonePickerBlock } from '../components/blocks/TimezonePickerBlock';
54
55
  import { UsageDonutBlock } from '../components/blocks/UsageDonutBlock';
55
56
  import { AudioVisualizerBlock } from '../components/blocks/AudioVisualizerBlock';
56
57
  import { AuthLayout } from '../components/blocks/AuthLayout';
@@ -141,6 +142,7 @@ export declare const seedComponents: {
141
142
  readonly TestimonialsBlock: typeof TestimonialsBlock;
142
143
  readonly TwoFactorChallengeBlock: typeof TwoFactorChallengeBlock;
143
144
  readonly TwoFactorSetupBlock: typeof TwoFactorSetupBlock;
145
+ readonly TimezonePickerBlock: typeof TimezonePickerBlock;
144
146
  readonly UsageDonutBlock: typeof UsageDonutBlock;
145
147
  readonly AudioVisualizerBlock: typeof AudioVisualizerBlock;
146
148
  readonly AuthLayout: typeof AuthLayout;
@@ -1,8 +1,10 @@
1
1
  'use client';
2
+ import { SuccessPageKit } from '../chunk-3U56FXYC.js';
2
3
  import { TeamSettingsPageKit } from '../chunk-DEZXWNYF.js';
3
4
  import { TwoFactorPageKit } from '../chunk-S5OY2B63.js';
4
5
  import { VerifyEmailPageKit } from '../chunk-SWRJWMGG.js';
5
6
  import { VoiceAgentsPageKit } from '../chunk-32OLQ7FC.js';
7
+ import { OnboardingPageKit } from '../chunk-BYEHHZZN.js';
6
8
  import { PricingPageKit } from '../chunk-RMGDDOCD.js';
7
9
  import { ProfileSettingsPageKit } from '../chunk-MGSGCARB.js';
8
10
  import { RecoveryPageKit } from '../chunk-BRCBJ3S4.js';
@@ -10,13 +12,13 @@ import { ResetPageKit } from '../chunk-LP6ZZYOQ.js';
10
12
  import { ServiceSuitePageKit } from '../chunk-K4U67BVG.js';
11
13
  import { SettingsPageKit } from '../chunk-RKQPU75I.js';
12
14
  import { SignupPageKit } from '../chunk-BRICSLHJ.js';
13
- import { SuccessPageKit } from '../chunk-3U56FXYC.js';
14
15
  import { DashboardPageKit } from '../chunk-C33GUEDY.js';
15
16
  import { ErrorPageKit } from '../chunk-HPTHS7SX.js';
16
17
  import { KanbanBoardPageKit } from '../chunk-25BOZMXA.js';
18
+ import { CrudListDetailPageKit } from '../chunk-OJ7OO3QB.js';
17
19
  import { LandingPageKit } from '../chunk-LK2L3C7D.js';
18
20
  import { LoginPageKit } from '../chunk-Z2WION42.js';
19
- import { OnboardingPageKit } from '../chunk-BYEHHZZN.js';
21
+ import { InviteUserModal } from '../chunk-YDYDGG5K.js';
20
22
  import { AccountLockedPageKit } from '../chunk-DNJEVMDY.js';
21
23
  import { AgentsChatPageKit } from '../chunk-UR43ANYS.js';
22
24
  import { AnalyticsPageKit } from '../chunk-CUDMDYKE.js';
@@ -25,16 +27,16 @@ import { CheckoutPageKit } from '../chunk-LGW7FVG5.js';
25
27
  import { CompanySuitePageKit } from '../chunk-QW5II6YK.js';
26
28
  import { MarketingShellPageKit } from '../chunk-Z233ZQZE.js';
27
29
  import { CrudFormPageKit } from '../chunk-KWILREVQ.js';
28
- import { CrudListDetailPageKit } from '../chunk-OJ7OO3QB.js';
29
30
  import { NavigationShellPageKit } from '../chunk-ZKLB5N3Q.js';
30
31
  import { TeamBlock } from '../chunk-VBZQ4DBE.js';
31
32
  import { TestimonialsBlock } from '../chunk-FV2G6SAF.js';
33
+ import { TimezonePickerBlock } from '../chunk-ZXVDDZZL.js';
34
+ import '../chunk-PTJPPKDR.js';
32
35
  import { TwoFactorChallengeBlock } from '../chunk-W7FXDRQJ.js';
33
36
  import { TwoFactorSetupBlock } from '../chunk-IXQGKJU4.js';
34
37
  import { UsageDonutBlock } from '../chunk-VRGPG2YN.js';
35
38
  import { VoiceAgentCard } from '../chunk-HWHJ6IRQ.js';
36
39
  import { WizardBlock } from '../chunk-XKKFSFYO.js';
37
- import { InviteUserModal } from '../chunk-YDYDGG5K.js';
38
40
  import { ProcessFlowBlock } from '../chunk-HZERHGBT.js';
39
41
  import { ResetPasswordBlock } from '../chunk-X6VXWEDO.js';
40
42
  import { SettingsLayout } from '../chunk-4MWKE6F5.js';
@@ -56,14 +58,14 @@ import { HeroBlock } from '../chunk-GJ557DGH.js';
56
58
  import { HeroSectionBlock } from '../chunk-ALA6OM7K.js';
57
59
  import '../chunk-QQOWC53X.js';
58
60
  import { HeaderBlock } from '../chunk-WOYBVPXK.js';
59
- import { IntegrationsBlock } from '../chunk-6HGSU24S.js';
61
+ import { IntegrationsBlock } from '../chunk-BSCC7OQK.js';
60
62
  import '../chunk-3ZDYYZDD.js';
63
+ import '../chunk-BZYMCJHW.js';
61
64
  import '../chunk-H466RJCI.js';
62
65
  import '../chunk-DT6DGTVW.js';
63
66
  import '../chunk-J5DRK4RF.js';
64
67
  import '../chunk-TSVN5A2F.js';
65
68
  import '../chunk-PX2WVDDB.js';
66
- import '../chunk-BZYMCJHW.js';
67
69
  import { InteractiveAreaChartBlock } from '../chunk-TPJ6JJ2F.js';
68
70
  import { KanbanDemoBlock } from '../chunk-CVTMWSNS.js';
69
71
  import { ContactBlock } from '../chunk-U4GYSYGN.js';
@@ -159,6 +161,8 @@ import '../chunk-PDSQC6VE.js';
159
161
  import '../chunk-PXDHNGTG.js';
160
162
  import '../chunk-CQEUNASC.js';
161
163
  import '../chunk-DFPXK2JO.js';
164
+ import '../chunk-UYT33NG6.js';
165
+ import '../chunk-2HDB6MDK.js';
162
166
  import '../chunk-W73JAOHW.js';
163
167
  import '../chunk-S2WSXZ7Y.js';
164
168
  import '../chunk-756Q7AC5.js';
@@ -357,6 +361,7 @@ var seedComponents = {
357
361
  TestimonialsBlock,
358
362
  TwoFactorChallengeBlock,
359
363
  TwoFactorSetupBlock,
364
+ TimezonePickerBlock,
360
365
  UsageDonutBlock,
361
366
  AudioVisualizerBlock,
362
367
  AuthLayout,
@@ -0,0 +1,115 @@
1
+ // src/lib/timezones.ts
2
+ var FALLBACK_TIMEZONES = [
3
+ "Etc/UTC",
4
+ "America/New_York",
5
+ "America/Chicago",
6
+ "America/Denver",
7
+ "America/Los_Angeles",
8
+ "Europe/London",
9
+ "Europe/Rome",
10
+ "Europe/Bucharest",
11
+ "Asia/Tokyo",
12
+ "Australia/Sydney"
13
+ ];
14
+ function getTimezoneGroups(referenceDate = /* @__PURE__ */ new Date()) {
15
+ const allTimezones = getAllTimezones();
16
+ const entries = allTimezones.filter((timezone) => timezone.includes("/") || timezone === "UTC").map((timezone) => {
17
+ const normalizedTimezone = timezone === "UTC" ? "Etc/UTC" : timezone;
18
+ const [region, ...rest] = normalizedTimezone.split("/");
19
+ const labelSource = rest.length > 0 ? rest[rest.length - 1] : normalizedTimezone;
20
+ const offsetMinutes = getOffsetMinutes(normalizedTimezone, referenceDate);
21
+ return {
22
+ value: normalizedTimezone,
23
+ label: labelSource.replaceAll("_", " "),
24
+ region,
25
+ offset: formatOffset(offsetMinutes),
26
+ offsetMinutes
27
+ };
28
+ });
29
+ const groupedByRegion = /* @__PURE__ */ new Map();
30
+ for (const entry of entries) {
31
+ const regionEntries = groupedByRegion.get(entry.region) ?? [];
32
+ regionEntries.push(entry);
33
+ groupedByRegion.set(entry.region, regionEntries);
34
+ }
35
+ const groups = Array.from(groupedByRegion.entries()).map(([region, timezones]) => ({
36
+ region,
37
+ timezones: timezones.slice().sort(
38
+ (left, right) => left.offsetMinutes - right.offsetMinutes || left.label.localeCompare(right.label)
39
+ )
40
+ }));
41
+ return groups.sort((left, right) => left.region.localeCompare(right.region));
42
+ }
43
+ function searchTimezones(query, groups) {
44
+ const normalizedQuery = query.trim().toLowerCase();
45
+ if (!normalizedQuery) {
46
+ return groups.flatMap((group) => group.timezones);
47
+ }
48
+ const matches = [];
49
+ for (const group of groups) {
50
+ for (const timezone of group.timezones) {
51
+ const candidate = `${timezone.value} ${timezone.label} ${timezone.region} ${timezone.offset}`;
52
+ if (candidate.toLowerCase().includes(normalizedQuery)) {
53
+ matches.push(timezone);
54
+ }
55
+ }
56
+ }
57
+ return matches;
58
+ }
59
+ function detectBrowserTimezone() {
60
+ try {
61
+ const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
62
+ if (!timezone) {
63
+ return "Etc/UTC";
64
+ }
65
+ return timezone === "UTC" ? "Etc/UTC" : timezone;
66
+ } catch {
67
+ return "Etc/UTC";
68
+ }
69
+ }
70
+ function getAllTimezones() {
71
+ const supportedValuesOf = Intl.supportedValuesOf;
72
+ if (typeof supportedValuesOf !== "function") {
73
+ return FALLBACK_TIMEZONES;
74
+ }
75
+ try {
76
+ const supported = supportedValuesOf("timeZone");
77
+ if (supported.length === 0) {
78
+ return FALLBACK_TIMEZONES;
79
+ }
80
+ return supported;
81
+ } catch {
82
+ return FALLBACK_TIMEZONES;
83
+ }
84
+ }
85
+ function getOffsetMinutes(timezone, referenceDate) {
86
+ try {
87
+ const formatter = new Intl.DateTimeFormat("en-US", {
88
+ timeZone: timezone,
89
+ timeZoneName: "shortOffset"
90
+ });
91
+ const timezoneName = formatter.formatToParts(referenceDate).find((part) => part.type === "timeZoneName")?.value ?? "GMT";
92
+ const match = timezoneName.match(/^GMT(?:(\+|-)(\d{1,2})(?::(\d{2}))?)?$/);
93
+ if (!match) {
94
+ return 0;
95
+ }
96
+ if (!match[1] || !match[2]) {
97
+ return 0;
98
+ }
99
+ const sign = match[1] === "-" ? -1 : 1;
100
+ const hours = Number.parseInt(match[2], 10);
101
+ const minutes = Number.parseInt(match[3] ?? "0", 10);
102
+ return sign * (hours * 60 + minutes);
103
+ } catch {
104
+ return 0;
105
+ }
106
+ }
107
+ function formatOffset(offsetMinutes) {
108
+ const sign = offsetMinutes >= 0 ? "+" : "-";
109
+ const absoluteMinutes = Math.abs(offsetMinutes);
110
+ const hours = String(Math.floor(absoluteMinutes / 60)).padStart(2, "0");
111
+ const minutes = String(absoluteMinutes % 60).padStart(2, "0");
112
+ return `UTC${sign}${hours}:${minutes}`;
113
+ }
114
+
115
+ export { detectBrowserTimezone, getTimezoneGroups, searchTimezones };
@@ -0,0 +1,96 @@
1
+ import { getTimezoneGroups } from './chunk-PTJPPKDR.js';
2
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-UYT33NG6.js';
3
+ import { Command } from './chunk-2HDB6MDK.js';
4
+ import { Button } from './chunk-7KIDDF3I.js';
5
+ import { Badge } from './chunk-S4JAHKOP.js';
6
+ import { cn } from './chunk-QYZT24TS.js';
7
+ import { useState, useMemo } from 'react';
8
+ import { Command as Command$1 } from 'cmdk';
9
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
10
+
11
+ var DEFAULT_GROUPS = getTimezoneGroups();
12
+ function TimezonePickerBlock({
13
+ id,
14
+ value,
15
+ onChange,
16
+ name,
17
+ className,
18
+ groups = DEFAULT_GROUPS
19
+ }) {
20
+ const [open, setOpen] = useState(false);
21
+ const entries = useMemo(() => groups.flatMap((group) => group.timezones), [groups]);
22
+ const selectedTimezone = useMemo(
23
+ () => entries.find((timezone) => timezone.value === value) ?? null,
24
+ [entries, value]
25
+ );
26
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
27
+ name ? /* @__PURE__ */ jsx("input", { type: "hidden", name, value: value ?? "" }) : null,
28
+ /* @__PURE__ */ jsxs(Popover, { modal: false, open, onOpenChange: setOpen, children: [
29
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
30
+ Button,
31
+ {
32
+ id,
33
+ type: "button",
34
+ variant: "outline",
35
+ role: "combobox",
36
+ "aria-expanded": open,
37
+ "aria-label": "Select timezone",
38
+ className: cn("w-full justify-between text-left", className),
39
+ children: [
40
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: selectedTimezone ? `${selectedTimezone.value} (${selectedTimezone.offset})` : "Select timezone" }),
41
+ /* @__PURE__ */ jsx("span", { className: "ml-2 shrink-0 opacity-50", "aria-hidden": "true", children: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 20 20", width: "14", height: "14", fill: "none", stroke: "currentColor", children: [
42
+ /* @__PURE__ */ jsx("path", { d: "M6 8l4-4 4 4", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }),
43
+ /* @__PURE__ */ jsx("path", { d: "M6 12l4 4 4-4", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" })
44
+ ] }) })
45
+ ]
46
+ }
47
+ ) }),
48
+ /* @__PURE__ */ jsx(PopoverContent, { align: "start", className: "w-[min(90vw,32rem)] p-0", children: /* @__PURE__ */ jsxs(Command, { children: [
49
+ /* @__PURE__ */ jsx("div", { className: "flex items-center border-b px-4", children: /* @__PURE__ */ jsx(
50
+ Command$1.Input,
51
+ {
52
+ className: "h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-text-tertiary focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-background",
53
+ placeholder: "Search timezone by city, region, or offset..."
54
+ }
55
+ ) }),
56
+ /* @__PURE__ */ jsxs(Command$1.List, { className: "max-h-80 overflow-y-auto overflow-x-hidden", children: [
57
+ /* @__PURE__ */ jsx(Command$1.Empty, { className: "py-6 text-center text-sm", children: "No timezone found." }),
58
+ groups.map((group) => /* @__PURE__ */ jsx(
59
+ Command$1.Group,
60
+ {
61
+ heading: /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: group.region }),
62
+ className: "overflow-hidden p-1.5 text-text-primary [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5",
63
+ children: group.timezones.map((timezone) => /* @__PURE__ */ jsxs(
64
+ Command$1.Item,
65
+ {
66
+ value: `${timezone.value} ${timezone.label} ${timezone.region} ${timezone.offset}`,
67
+ onSelect: () => {
68
+ onChange?.(timezone.value);
69
+ setOpen(false);
70
+ },
71
+ className: "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-background data-[disabled=true]:pointer-events-none data-[selected='true']:bg-surface-active data-[selected=true]:text-text-primary data-[disabled=true]:opacity-50",
72
+ children: [
73
+ /* @__PURE__ */ jsx(
74
+ "span",
75
+ {
76
+ className: cn("mr-2 shrink-0 text-xs", value === timezone.value ? "opacity-100" : "opacity-0"),
77
+ "aria-hidden": "true",
78
+ children: "\u2713"
79
+ }
80
+ ),
81
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: timezone.value }),
82
+ /* @__PURE__ */ jsx("span", { className: "ml-auto pl-2 text-xs text-text-tertiary", children: timezone.offset })
83
+ ]
84
+ },
85
+ timezone.value
86
+ ))
87
+ },
88
+ group.region
89
+ ))
90
+ ] })
91
+ ] }) })
92
+ ] })
93
+ ] });
94
+ }
95
+
96
+ export { TimezonePickerBlock };
@@ -1,12 +1,12 @@
1
1
  'use client';
2
- export { IntegrationsBlock } from '../../chunk-6HGSU24S.js';
2
+ export { IntegrationsBlock } from '../../chunk-BSCC7OQK.js';
3
3
  import '../../chunk-3ZDYYZDD.js';
4
+ import '../../chunk-BZYMCJHW.js';
4
5
  import '../../chunk-H466RJCI.js';
5
6
  import '../../chunk-DT6DGTVW.js';
6
7
  import '../../chunk-J5DRK4RF.js';
7
8
  import '../../chunk-TSVN5A2F.js';
8
9
  import '../../chunk-PX2WVDDB.js';
9
- import '../../chunk-BZYMCJHW.js';
10
10
  import '../../chunk-DQPK2XRL.js';
11
11
  import '../../chunk-WI547C47.js';
12
12
  import '../../chunk-I23DDSU7.js';
@@ -0,0 +1,11 @@
1
+ import type { TimezoneGroup } from '../../lib/timezones';
2
+ interface TimezonePickerBlockProps {
3
+ id?: string;
4
+ value?: string;
5
+ onChange?: (value: string) => void;
6
+ name?: string;
7
+ className?: string;
8
+ groups?: TimezoneGroup[];
9
+ }
10
+ export declare function TimezonePickerBlock({ id, value, onChange, name, className, groups, }: TimezonePickerBlockProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,126 @@
1
+ 'use client';
2
+ export { TimezonePickerBlock } from '../../chunk-ZXVDDZZL.js';
3
+ import '../../chunk-PTJPPKDR.js';
4
+ import '../../chunk-UYT33NG6.js';
5
+ import '../../chunk-2HDB6MDK.js';
6
+ import '../../chunk-W73JAOHW.js';
7
+ import '../../chunk-KRBLVZII.js';
8
+ import '../../chunk-7KIDDF3I.js';
9
+ import '../../chunk-6FOHUNXR.js';
10
+ import '../../chunk-PD2YEH3H.js';
11
+ import '../../chunk-CRY67BIF.js';
12
+ import '../../chunk-HJC6U46F.js';
13
+ import '../../chunk-GO35FTNJ.js';
14
+ import '../../chunk-WUO7OONN.js';
15
+ import '../../chunk-FLF5AMNO.js';
16
+ import '../../chunk-3CLXYQKB.js';
17
+ import '../../chunk-S4GKGKON.js';
18
+ import '../../chunk-LCDDAE7J.js';
19
+ import '../../chunk-R674XI7C.js';
20
+ import '../../chunk-HNY45VUQ.js';
21
+ import '../../chunk-BPCCTJSK.js';
22
+ import '../../chunk-CGUCH322.js';
23
+ import '../../chunk-ELKIUARM.js';
24
+ import '../../chunk-KSHJQ2VT.js';
25
+ import '../../chunk-GAKU7DFY.js';
26
+ import '../../chunk-T6BRD7TS.js';
27
+ import '../../chunk-TXGANOAX.js';
28
+ import '../../chunk-OITJWGFV.js';
29
+ import '../../chunk-Z74D6D2W.js';
30
+ import '../../chunk-7WDT2PRI.js';
31
+ import '../../chunk-IJJI4RQU.js';
32
+ import '../../chunk-E7RBK6ML.js';
33
+ import '../../chunk-UBIGDGOP.js';
34
+ import '../../chunk-ALMGJVMT.js';
35
+ import '../../chunk-QPXTBZWN.js';
36
+ import '../../chunk-4NXZIMYZ.js';
37
+ import '../../chunk-R5XP45PD.js';
38
+ import '../../chunk-G5EO5FWC.js';
39
+ import '../../chunk-NCULQXJE.js';
40
+ import '../../chunk-VDYPDMYR.js';
41
+ import '../../chunk-WDGIQDQG.js';
42
+ import '../../chunk-RYOTIXZO.js';
43
+ import '../../chunk-JZ4G2SJH.js';
44
+ import '../../chunk-KYGKJ553.js';
45
+ import '../../chunk-M7YSMMAC.js';
46
+ import '../../chunk-XQ2UDMPO.js';
47
+ import '../../chunk-JMCSAGZ3.js';
48
+ import '../../chunk-QUKDUSHD.js';
49
+ import '../../chunk-O74AEVHW.js';
50
+ import '../../chunk-ZUHIWALK.js';
51
+ import '../../chunk-2IZC7HSV.js';
52
+ import '../../chunk-2SDZMTB2.js';
53
+ import '../../chunk-IQEBXXB5.js';
54
+ import '../../chunk-AZUJNRQU.js';
55
+ import '../../chunk-W3B3UOEG.js';
56
+ import '../../chunk-ACRVOD7W.js';
57
+ import '../../chunk-QSU23VYZ.js';
58
+ import '../../chunk-BJYCQ2NV.js';
59
+ import '../../chunk-VM462WZC.js';
60
+ import '../../chunk-5UZDOF6V.js';
61
+ import '../../chunk-PKVTEDKO.js';
62
+ import '../../chunk-I3TH7PIB.js';
63
+ import '../../chunk-WGPK3FQ7.js';
64
+ import '../../chunk-JL4MVVFH.js';
65
+ import '../../chunk-4FEAWXJD.js';
66
+ import '../../chunk-JHQTKMKG.js';
67
+ import '../../chunk-WA45EC4Y.js';
68
+ import '../../chunk-2MOEOEOI.js';
69
+ import '../../chunk-5LCXASRW.js';
70
+ import '../../chunk-2ZJVU7NV.js';
71
+ import '../../chunk-5ESF6N36.js';
72
+ import '../../chunk-RBPLOM3A.js';
73
+ import '../../chunk-6BAV4TZ5.js';
74
+ import '../../chunk-SW6QPJM4.js';
75
+ import '../../chunk-2NT57K4U.js';
76
+ import '../../chunk-JRJGSNI4.js';
77
+ import '../../chunk-RF6ECFS5.js';
78
+ import '../../chunk-KYZT3RNW.js';
79
+ import '../../chunk-UEG2LI7Z.js';
80
+ import '../../chunk-CI7GPGCJ.js';
81
+ import '../../chunk-226EBOTK.js';
82
+ import '../../chunk-74RKVIBV.js';
83
+ import '../../chunk-V6WNRZT3.js';
84
+ import '../../chunk-JBK2LA6U.js';
85
+ import '../../chunk-55U27XY4.js';
86
+ import '../../chunk-LSPO6OBI.js';
87
+ import '../../chunk-Y56WBNCY.js';
88
+ import '../../chunk-JJTQOH7J.js';
89
+ import '../../chunk-72X6SXOX.js';
90
+ import '../../chunk-SR5U52V3.js';
91
+ import '../../chunk-AWIJHDNK.js';
92
+ import '../../chunk-MAUTIHQG.js';
93
+ import '../../chunk-S733NAYS.js';
94
+ import '../../chunk-666N6OTL.js';
95
+ import '../../chunk-FMH55OKV.js';
96
+ import '../../chunk-WXVNTJIB.js';
97
+ import '../../chunk-T7H53CK2.js';
98
+ import '../../chunk-TBKJ34BB.js';
99
+ import '../../chunk-BRP6D56U.js';
100
+ import '../../chunk-6G3RRWJT.js';
101
+ import '../../chunk-ZU2GYVAP.js';
102
+ import '../../chunk-CRZ2JE24.js';
103
+ import '../../chunk-PSVQ7ZNX.js';
104
+ import '../../chunk-WKRIKCJC.js';
105
+ import '../../chunk-JHQ5NMLZ.js';
106
+ import '../../chunk-WFJQ43SM.js';
107
+ import '../../chunk-AP5Y5M3R.js';
108
+ import '../../chunk-Q7LVUGFL.js';
109
+ import '../../chunk-G5YLGJXR.js';
110
+ import '../../chunk-G24VV5NO.js';
111
+ import '../../chunk-R3AO6AZM.js';
112
+ import '../../chunk-GCUTJI7M.js';
113
+ import '../../chunk-CXACRCZ4.js';
114
+ import '../../chunk-P6IRHPFM.js';
115
+ import '../../chunk-SXHYB7JB.js';
116
+ import '../../chunk-BFLN54VR.js';
117
+ import '../../chunk-ONGJ7AC2.js';
118
+ import '../../chunk-UHXGBV5N.js';
119
+ import '../../chunk-UIUMTURU.js';
120
+ import '../../chunk-PRUXIDBD.js';
121
+ import '../../chunk-NURPUVUV.js';
122
+ import '../../chunk-S4JAHKOP.js';
123
+ import '../../chunk-TV4RSQH4.js';
124
+ import '../../chunk-HJBXUXTD.js';
125
+ import '../../chunk-ASKFAYYR.js';
126
+ import '../../chunk-QYZT24TS.js';
@@ -1,7 +1,7 @@
1
1
  import '../../chunk-3ZDYYZDD.js';
2
+ export { MagicUI } from '../../chunk-BZYMCJHW.js';
2
3
  export { MediaWiki } from '../../chunk-H466RJCI.js';
3
4
  export { Replit } from '../../chunk-DT6DGTVW.js';
4
5
  export { VSCodium } from '../../chunk-J5DRK4RF.js';
5
6
  export { Gemini } from '../../chunk-TSVN5A2F.js';
6
7
  export { GooglePaLM } from '../../chunk-PX2WVDDB.js';
7
- export { MagicUI } from '../../chunk-BZYMCJHW.js';
@@ -0,0 +1,14 @@
1
+ export interface TimezoneEntry {
2
+ value: string;
3
+ label: string;
4
+ region: string;
5
+ offset: string;
6
+ offsetMinutes: number;
7
+ }
8
+ export interface TimezoneGroup {
9
+ region: string;
10
+ timezones: TimezoneEntry[];
11
+ }
12
+ export declare function getTimezoneGroups(referenceDate?: Date): TimezoneGroup[];
13
+ export declare function searchTimezones(query: string, groups: TimezoneGroup[]): TimezoneEntry[];
14
+ export declare function detectBrowserTimezone(): string;
@@ -0,0 +1 @@
1
+ export { detectBrowserTimezone, getTimezoneGroups, searchTimezones } from '../chunk-PTJPPKDR.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vadimcomanescu/nadicode-design-system",
3
- "version": "4.0.3",
3
+ "version": "4.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"
@@ -57,7 +57,7 @@
57
57
  "release:patch": "npm version patch --no-git-tag-version && npm run publish:package",
58
58
  "release:minor": "npm version minor --no-git-tag-version && npm run publish:package",
59
59
  "release:major": "npm version major --no-git-tag-version && npm run publish:package",
60
- "precommit": "npx lint-staged --config package.json && npm run ds:validate",
60
+ "precommit": "npx lint-staged --config package.json",
61
61
  "gate:prepush": "npm run typecheck && npm run lint && npm run ds:check && npm run build:lib && npm run docs:check && npx vitest run --coverage && npm run build && npm run lighthouse",
62
62
  "test:visual": "npx playwright test --config=playwright.visual.config.ts",
63
63
  "test:visual:update": "npx playwright test --config=playwright.visual.config.ts --update-snapshots",
@@ -1525,6 +1525,10 @@
1525
1525
  "import": "./dist/components/ui/Typography.js",
1526
1526
  "types": "./dist/components/ui/Typography.d.ts"
1527
1527
  },
1528
+ "./lib/timezones": {
1529
+ "import": "./dist/lib/timezones.js",
1530
+ "types": "./dist/lib/timezones.d.ts"
1531
+ },
1528
1532
  "./utils": {
1529
1533
  "import": "./dist/lib/utils.js",
1530
1534
  "types": "./dist/lib/utils.d.ts"
@@ -1,9 +1,9 @@
1
+ import { MagicUI } from './chunk-BZYMCJHW.js';
1
2
  import { MediaWiki } from './chunk-H466RJCI.js';
2
3
  import { Replit } from './chunk-DT6DGTVW.js';
3
4
  import { VSCodium } from './chunk-J5DRK4RF.js';
4
5
  import { Gemini } from './chunk-TSVN5A2F.js';
5
6
  import { GooglePaLM } from './chunk-PX2WVDDB.js';
6
- import { MagicUI } from './chunk-BZYMCJHW.js';
7
7
  import { StaggerChildren } from './chunk-DQPK2XRL.js';
8
8
  import { Heading } from './chunk-WI547C47.js';
9
9
  import { ScrollFadeIn } from './chunk-I23DDSU7.js';