@bigbinary/neeto-atoms 1.0.10 → 1.0.11
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/dist/{Accordion-BzfsJePA.js → Accordion-Ch9S_qd3.js} +3 -3
- package/dist/Accordion-Ch9S_qd3.js.map +1 -0
- package/dist/{ColorPicker-D-7QGnf9.js → ColorPicker-DtOvy0Gy.js} +3 -2
- package/dist/ColorPicker-DtOvy0Gy.js.map +1 -0
- package/dist/Input-C1gcv9o2.js.map +1 -1
- package/dist/MultiEmailInput-SCTYovtX.js.map +1 -1
- package/dist/RadioGroup-BNeYQAoT.js.map +1 -1
- package/dist/{Select-BGODpJGc.js → Select-TlFBcxcY.js} +7 -3
- package/dist/Select-TlFBcxcY.js.map +1 -0
- package/dist/Textarea-C0z50h0N.js.map +1 -1
- package/dist/TimePickerPanel-CiF0RExY.js.map +1 -1
- package/dist/TranslationProvider-Ba9rn47H.js.map +1 -1
- package/dist/{Tree-Dkr11OPy.js → Tree-C7r10UY5.js} +2 -2
- package/dist/{Tree-Dkr11OPy.js.map → Tree-C7r10UY5.js.map} +1 -1
- package/dist/{TreeSelect-Cmc90YWJ.js → TreeSelect-DRGcYz-6.js} +2 -2
- package/dist/{TreeSelect-Cmc90YWJ.js.map → TreeSelect-DRGcYz-6.js.map} +1 -1
- package/dist/{Typography-D5TjXEfu.js → Typography-CMJ8OveZ.js} +3 -9
- package/dist/Typography-CMJ8OveZ.js.map +1 -0
- package/dist/cjs/{Accordion-BX5I9ypV.js → Accordion-BoTckTBI.js} +3 -3
- package/dist/cjs/Accordion-BoTckTBI.js.map +1 -0
- package/dist/cjs/{ColorPicker-DEELmqH8.js → ColorPicker-Uxgn8U0h.js} +3 -2
- package/dist/cjs/ColorPicker-Uxgn8U0h.js.map +1 -0
- package/dist/cjs/Input-pkugjUb0.js.map +1 -1
- package/dist/cjs/MultiEmailInput-l0_YVjbp.js.map +1 -1
- package/dist/cjs/RadioGroup-1RAoe38m.js.map +1 -1
- package/dist/cjs/{Select-DOPZHlqc.js → Select-Br1AT_wm.js} +7 -3
- package/dist/cjs/Select-Br1AT_wm.js.map +1 -0
- package/dist/cjs/Textarea-BfdlAJ59.js.map +1 -1
- package/dist/cjs/TimePickerPanel-DGNr97cj.js.map +1 -1
- package/dist/cjs/TranslationProvider-DBZHXmzX.js.map +1 -1
- package/dist/cjs/{Tree-qpOcsGL9.js → Tree-BPd0DuLh.js} +2 -2
- package/dist/cjs/{Tree-qpOcsGL9.js.map → Tree-BPd0DuLh.js.map} +1 -1
- package/dist/cjs/{TreeSelect-DiIEdiAU.js → TreeSelect-C9nQJKNo.js} +2 -2
- package/dist/cjs/{TreeSelect-DiIEdiAU.js.map → TreeSelect-C9nQJKNo.js.map} +1 -1
- package/dist/cjs/{Typography-C3rGpmAY.js → Typography-PojQmdAY.js} +3 -28
- package/dist/cjs/Typography-PojQmdAY.js.map +1 -0
- package/dist/cjs/components/Accordion.js +1 -1
- package/dist/cjs/components/ColorPicker.js +1 -1
- package/dist/cjs/components/DropdownMenu.js.map +1 -1
- package/dist/cjs/components/Select.js +1 -1
- package/dist/cjs/components/Tree.js +6 -34
- package/dist/cjs/components/Tree.js.map +1 -1
- package/dist/cjs/components/TreeSelect.js +2 -2
- package/dist/cjs/components/Typography.js +1 -1
- package/dist/cjs/components/index.js +180 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/formik/ActionBlock.js +48 -0
- package/dist/cjs/formik/ActionBlock.js.map +1 -0
- package/dist/cjs/formik/BlockNavigation.js +111 -0
- package/dist/cjs/formik/BlockNavigation.js.map +1 -0
- package/dist/cjs/formik/Select.js +2 -2
- package/dist/cjs/formik/Select.js.map +1 -1
- package/dist/cjs/formik/TreeSelect.js +2 -2
- package/dist/cjs/formik/index.js +12 -3
- package/dist/cjs/formik/index.js.map +1 -1
- package/dist/cjs/index.js +10 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/search-CfYUGi4v.js +37 -0
- package/dist/cjs/search-CfYUGi4v.js.map +1 -0
- package/dist/components/Accordion/Accordion.d.ts +3 -1
- package/dist/components/Accordion.js +1 -1
- package/dist/components/ColorPicker/ColorPicker.d.ts +1 -2
- package/dist/components/ColorPicker/Palette.d.ts +1 -1
- package/dist/components/ColorPicker/types.d.ts +6 -1
- package/dist/components/ColorPicker.js +1 -1
- package/dist/components/DropdownMenu/MenuItemButton.d.ts +1 -2
- package/dist/components/DropdownMenu/index.d.ts +1 -0
- package/dist/components/DropdownMenu.js.map +1 -1
- package/dist/components/Input/Input.d.ts +3 -1
- package/dist/components/MultiEmailInput/MultiEmailInput.d.ts +1 -2
- package/dist/components/RadioGroup/RadioGroup.d.ts +1 -1
- package/dist/components/RadioGroup/index.d.ts +1 -1
- package/dist/components/Select/Select.d.ts +1 -2
- package/dist/components/Select.js +1 -1
- package/dist/components/Textarea/Textarea.d.ts +3 -1
- package/dist/components/TimePicker/TimePickerPanel.d.ts +1 -2
- package/dist/components/Tree.js +2 -34
- package/dist/components/Tree.js.map +1 -1
- package/dist/components/TreeSelect.js +2 -2
- package/dist/components/Typography/Typography.d.ts +11 -4
- package/dist/components/Typography.js +1 -1
- package/dist/components/index.d.ts +36 -0
- package/dist/components/index.js +128 -0
- package/dist/components/index.js.map +1 -0
- package/dist/formik/ActionBlock.d.ts +18 -0
- package/dist/formik/ActionBlock.js +46 -0
- package/dist/formik/ActionBlock.js.map +1 -0
- package/dist/formik/BlockNavigation/BlockNavigationAlert.d.ts +23 -0
- package/dist/formik/BlockNavigation/index.d.ts +11 -0
- package/dist/formik/BlockNavigation.js +109 -0
- package/dist/formik/BlockNavigation.js.map +1 -0
- package/dist/formik/RadioGroup.d.ts +11 -0
- package/dist/formik/Select.js +2 -2
- package/dist/formik/Select.js.map +1 -1
- package/dist/formik/TreeSelect.js +2 -2
- package/dist/formik/index.d.ts +4 -0
- package/dist/formik/index.js +10 -3
- package/dist/formik/index.js.map +1 -1
- package/dist/hooks/useNavPrompt.d.ts +15 -0
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/search-BK7Ozh5_.js +33 -0
- package/dist/search-BK7Ozh5_.js.map +1 -0
- package/package.json +15 -2
- package/dist/Accordion-BzfsJePA.js.map +0 -1
- package/dist/ColorPicker-D-7QGnf9.js.map +0 -1
- package/dist/Select-BGODpJGc.js.map +0 -1
- package/dist/Typography-D5TjXEfu.js.map +0 -1
- package/dist/cjs/Accordion-BX5I9ypV.js.map +0 -1
- package/dist/cjs/ColorPicker-DEELmqH8.js.map +0 -1
- package/dist/cjs/Select-DOPZHlqc.js.map +0 -1
- package/dist/cjs/Typography-C3rGpmAY.js.map +0 -1
- package/dist/shadcn/components/typography.d.ts +0 -17
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/utils/dayjs/timezonePlugin.ts","../../../src/utils/dayjs/index.ts"],"sourcesContent":["import type { Dayjs, PluginFunc } from \"dayjs\";\n\ntype TypeToPos = Record<string, number>;\n\nconst typeToPos: TypeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5,\n};\n\nconst dateTimeFormatDefaults: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n};\n\nconst dtfCache = new Map<string, Intl.DateTimeFormat>();\nconst getDateTimeFormat = (\n timezone: string,\n options: { timeZoneName?: \"short\" | \"long\" } = {}\n): Intl.DateTimeFormat => {\n const timeZoneName = options.timeZoneName || \"short\";\n const key = `${timezone}|${timeZoneName}`;\n let dtf = dtfCache.get(key);\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(\"en-US\", {\n ...dateTimeFormatDefaults,\n hour12: false,\n timeZone: timezone,\n timeZoneName,\n });\n dtfCache.set(key, dtf);\n }\n\n return dtf;\n};\n\nconst localeStringifierCache = new Map<string, Intl.DateTimeFormat>();\nconst getLocaleStringifier = (timezone: string): Intl.DateTimeFormat => {\n let localeStringifier = localeStringifierCache.get(timezone);\n if (!localeStringifier) {\n localeStringifier = new Intl.DateTimeFormat(\"en-US\", {\n ...dateTimeFormatDefaults,\n timeZone: timezone,\n });\n localeStringifierCache.set(timezone, localeStringifier);\n }\n\n return localeStringifier;\n};\n\ninterface DayjsInternal extends Dayjs {\n $ms: number;\n $x: { $timezone?: string };\n $set(unit: string, value: number): DayjsInternal;\n}\n\ntype DayjsFactory = {\n (input?: string | number | Date | Dayjs, format?: string): DayjsInternal;\n utc(input?: string | number | Date, format?: string): DayjsInternal;\n tz: {\n (\n input: string | number | Date | Dayjs,\n arg1?: string,\n arg2?: string\n ): DayjsInternal;\n guess: () => string;\n setDefault: (timezone?: string) => void;\n };\n};\n\ntype DayjsClass = {\n prototype: DayjsInternal;\n};\n\nconst timezonePlugin: PluginFunc = (_o, c, d) => {\n let defaultTimezone: string | undefined;\n\n const dayjsFactory = d as unknown as DayjsFactory;\n const dayjsClass = c as unknown as DayjsClass;\n\n const makeFormatParts = (\n timestamp: number,\n timezone: string,\n options: { timeZoneName?: \"short\" | \"long\" } = {}\n ): Intl.DateTimeFormatPart[] => {\n const date = new Date(timestamp);\n const dtf = getDateTimeFormat(timezone, options);\n\n return dtf.formatToParts(date);\n };\n\n const tzOffset = (timestamp: number, timezone: string): number => {\n const formatResult = makeFormatParts(timestamp, timezone);\n const filled: number[] = [];\n for (let i = 0; i < formatResult.length; i += 1) {\n const { type, value } = formatResult[i];\n const pos = typeToPos[type];\n\n if (pos >= 0) {\n filled[pos] = parseInt(value, 10);\n }\n }\n const hour = filled[3];\n const fixedHour = hour === 24 ? 0 : hour;\n const utcString = `${filled[0]}-${filled[1]}-${filled[2]} ${fixedHour}:${filled[4]}:${filled[5]}:000`;\n const utcTs = dayjsFactory.utc(utcString).valueOf();\n let asTS = Number(timestamp);\n const over = asTS % 1000;\n asTS -= over;\n\n return (utcTs - asTS) / (60 * 1000);\n };\n\n const fixOffset = (\n localTS: number,\n o0: number,\n tz: string\n ): [number, number] => {\n let utcGuess = localTS - o0 * 60 * 1000;\n const o2 = tzOffset(utcGuess, tz);\n if (o0 === o2) {\n return [utcGuess, o0];\n }\n utcGuess -= (o2 - o0) * 60 * 1000;\n const o3 = tzOffset(utcGuess, tz);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n };\n\n const proto = dayjsClass.prototype;\n\n proto.tz = function (\n timezone: string = defaultTimezone!,\n keepLocalTime?: boolean\n ) {\n const oldOffset = this.utcOffset();\n const date = this.toDate();\n const target = getLocaleStringifier(timezone).format(date);\n const diff = Math.round(\n (date.getTime() - new Date(target).getTime()) / 1000 / 60\n );\n let ins = dayjsFactory(target)\n .$set(\"millisecond\", this.$ms)\n .utcOffset(\n -Math.round(date.getTimezoneOffset() / 15) * 15 - diff,\n true\n ) as DayjsInternal;\n if (keepLocalTime) {\n const newOffset = ins.utcOffset();\n ins = ins.add(oldOffset - newOffset, \"minute\") as DayjsInternal;\n }\n ins.$x.$timezone = timezone;\n\n return ins;\n };\n\n proto.offsetName = function (type?: \"short\" | \"long\") {\n const zone = this.$x.$timezone || dayjsFactory.tz.guess();\n const result = makeFormatParts(this.valueOf(), zone, {\n timeZoneName: type,\n }).find(\n (m: Intl.DateTimeFormatPart) => m.type.toLowerCase() === \"timezonename\"\n );\n\n return result && result.value;\n };\n\n const oldStartOf = proto.startOf;\n proto.startOf = function (units: string, startOf?: boolean) {\n if (!this.$x || !this.$x.$timezone) {\n return oldStartOf.call(this, units, startOf);\n }\n\n const withoutTz = dayjsFactory(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"));\n const startOfWithoutTz = oldStartOf.call(withoutTz, units, startOf);\n\n return (startOfWithoutTz as DayjsInternal).tz(this.$x.$timezone, true);\n };\n\n dayjsFactory.tz = function (\n input: string | number | Date | Dayjs,\n arg1?: string,\n arg2?: string\n ) {\n const parseFormat = arg2 && arg1;\n const timezone = arg2 || arg1 || defaultTimezone;\n const previousOffset = tzOffset(Number(dayjsFactory()), timezone!);\n if (typeof input !== \"string\") {\n return dayjsFactory(input as string | number | Date).tz(timezone!);\n }\n const localTs = dayjsFactory.utc(input, parseFormat).valueOf();\n const [targetTs, targetOffset] = fixOffset(\n localTs,\n previousOffset,\n timezone!\n );\n const ins = dayjsFactory(targetTs).utcOffset(targetOffset) as DayjsInternal;\n ins.$x.$timezone = timezone;\n\n return ins;\n };\n\n dayjsFactory.tz.guess = function () {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n };\n\n dayjsFactory.tz.setDefault = function (timezone?: string) {\n defaultTimezone = timezone;\n };\n};\n\nexport default timezonePlugin;\n","import pureDayjs from \"dayjs\";\nimport type { Dayjs } from \"dayjs\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport utc from \"dayjs/plugin/utc\";\nimport weekday from \"dayjs/plugin/weekday\";\nimport weekOfYear from \"dayjs/plugin/weekOfYear\";\n\nimport timezonePlugin from \"./timezonePlugin\";\n\npureDayjs.extend(weekOfYear);\npureDayjs.extend(weekday);\npureDayjs.extend(localeData);\npureDayjs.extend(utc);\npureDayjs.extend(timezonePlugin);\n\ninterface DayjsInternal extends Dayjs {\n $x: { $timezone?: string };\n}\n\ninterface DayjsWithTz {\n (\n ...args: [string | number | Date | Dayjs | null | undefined, string?]\n ): Dayjs;\n utc(input?: string | number | Date, format?: string): Dayjs;\n tz: {\n (\n input?: string | number | Date | Dayjs,\n arg1?: string,\n arg2?: string\n ): DayjsInternal;\n guess: () => string;\n setDefault: (timezone?: string) => void;\n };\n}\n\nclass LRUCache<K, V> {\n private limit: number;\n private cache: Map<K, V>;\n\n constructor(limit: number) {\n this.limit = limit;\n this.cache = new Map();\n }\n\n get(key: K): V | undefined {\n const value = this.cache.get(key);\n this.cache.delete(key);\n if (value !== undefined) {\n this.cache.set(key, value);\n }\n\n return value;\n }\n\n set(key: K, value: V): void {\n if (this.cache.size >= this.limit) {\n const oldestKey = this.cache.keys().next().value;\n if (oldestKey !== undefined) {\n this.cache.delete(oldestKey);\n }\n }\n this.cache.set(key, value);\n }\n\n has(key: K): boolean {\n return this.cache.has(key);\n }\n}\n\nconst hasTimezone = (dateString: string): boolean => {\n const timezoneRegex = /Z|[+-]\\d{2}:\\d{2}$|[+-]\\d{4}$|GMT([+-]\\d{4})?$/;\n\n return timezoneRegex.test(dateString);\n};\n\nconst cache = new LRUCache<string, Dayjs>(1000);\nconst pureDayjsWithTz = pureDayjs as unknown as DayjsWithTz;\n\nconst dayjs = (\n ...args: [string | number | Date | Dayjs | null | undefined, string?]\n): Dayjs => {\n const cacheKey = JSON.stringify(args);\n\n if (cache.has(cacheKey) && args[0] !== undefined) return cache.get(cacheKey)!;\n\n const userTimezone = pureDayjsWithTz.tz()?.$x?.$timezone;\n const browserTimezone = pureDayjsWithTz.tz.guess();\n const timezone = userTimezone || browserTimezone;\n\n if (userTimezone === browserTimezone || userTimezone === undefined) {\n const result = pureDayjsWithTz(...args);\n\n if (args[0] !== undefined) cache.set(cacheKey, result);\n\n return result;\n }\n\n const mutableArgs: [\n string | number | Date | Dayjs | null | undefined,\n string?,\n ] = [...args];\n\n if (\n mutableArgs.length > 0 &&\n (typeof mutableArgs[0] === \"string\" || mutableArgs[0] === null)\n ) {\n const pureDayjsArgs: [\n string | number | Date | Dayjs | null | undefined,\n string?,\n ] = [mutableArgs[0], mutableArgs[1]];\n\n if (typeof mutableArgs[0] === \"string\" && hasTimezone(mutableArgs[0])) {\n mutableArgs[0] = pureDayjsWithTz(...pureDayjsArgs);\n } else {\n mutableArgs[0] = pureDayjsWithTz(...pureDayjsArgs).format(\n \"YYYY-MM-DD HH:mm:ss\"\n );\n mutableArgs[1] = \"YYYY-MM-DD HH:mm:ss\";\n }\n }\n\n if (mutableArgs[0]?.toString() === \"Invalid Date\") {\n const result = pureDayjsWithTz(...mutableArgs);\n\n if (mutableArgs[0] !== undefined) cache.set(cacheKey, result);\n\n return result;\n }\n\n const result =\n mutableArgs.length === 2\n ? pureDayjsWithTz.tz(\n mutableArgs[0] as string | number | Date | Dayjs,\n mutableArgs[1],\n timezone\n )\n : pureDayjsWithTz.tz(\n mutableArgs[0] as string | number | Date | Dayjs,\n timezone\n );\n\n if (mutableArgs[0] !== undefined) cache.set(cacheKey, result as Dayjs);\n\n return result as Dayjs;\n};\n\nObject.assign(dayjs, { ...pureDayjs });\n\nexport const getTimezoneAppliedDateTime = (\n inputDateTime: Dayjs | Dayjs[] | null\n): Dayjs | (Dayjs | null)[] | null => {\n const timezoneAppliedDateTime = (date: Dayjs | null): Dayjs | null =>\n date && typeof date.format === \"function\"\n ? dayjs(date.format(\"YYYY-MM-DD HH:mm:ss\"))\n : null;\n\n return Array.isArray(inputDateTime)\n ? inputDateTime.map(timezoneAppliedDateTime)\n : timezoneAppliedDateTime(inputDateTime);\n};\n\nexport { dayjs };\n"],"names":["pureDayjs","weekOfYear","weekday","localeData","utc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/utils/dayjs/timezonePlugin.ts","../../../src/utils/dayjs/index.ts"],"sourcesContent":["import type { Dayjs, PluginFunc } from \"dayjs\";\n\ntype TypeToPos = Record<string, number>;\n\nconst typeToPos: TypeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5,\n};\n\nconst dateTimeFormatDefaults: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n};\n\nconst dtfCache = new Map<string, Intl.DateTimeFormat>();\nconst getDateTimeFormat = (\n timezone: string,\n options: { timeZoneName?: \"short\" | \"long\" } = {}\n): Intl.DateTimeFormat => {\n const timeZoneName = options.timeZoneName || \"short\";\n const key = `${timezone}|${timeZoneName}`;\n let dtf = dtfCache.get(key);\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(\"en-US\", {\n ...dateTimeFormatDefaults,\n hour12: false,\n timeZone: timezone,\n timeZoneName,\n });\n dtfCache.set(key, dtf);\n }\n\n return dtf;\n};\n\nconst localeStringifierCache = new Map<string, Intl.DateTimeFormat>();\nconst getLocaleStringifier = (timezone: string): Intl.DateTimeFormat => {\n let localeStringifier = localeStringifierCache.get(timezone);\n if (!localeStringifier) {\n localeStringifier = new Intl.DateTimeFormat(\"en-US\", {\n ...dateTimeFormatDefaults,\n timeZone: timezone,\n });\n localeStringifierCache.set(timezone, localeStringifier);\n }\n\n return localeStringifier;\n};\n\ninterface DayjsInternal extends Dayjs {\n $ms: number;\n $x: { $timezone?: string };\n $set(unit: string, value: number): DayjsInternal;\n tz(timezone: string, keepLocalTime?: boolean): DayjsInternal;\n offsetName(type?: \"short\" | \"long\"): string | undefined;\n startOf(units: string, startOf?: boolean): DayjsInternal;\n}\n\ntype DayjsFactory = {\n (input?: string | number | Date | Dayjs, format?: string): DayjsInternal;\n utc(input?: string | number | Date, format?: string): DayjsInternal;\n tz: {\n (\n input: string | number | Date | Dayjs,\n arg1?: string,\n arg2?: string\n ): DayjsInternal;\n guess: () => string;\n setDefault: (timezone?: string) => void;\n };\n};\n\ntype DayjsClass = {\n prototype: DayjsInternal;\n};\n\nconst timezonePlugin: PluginFunc = (_o, c, d) => {\n let defaultTimezone: string | undefined;\n\n const dayjsFactory = d as unknown as DayjsFactory;\n const dayjsClass = c as unknown as DayjsClass;\n\n const makeFormatParts = (\n timestamp: number,\n timezone: string,\n options: { timeZoneName?: \"short\" | \"long\" } = {}\n ): Intl.DateTimeFormatPart[] => {\n const date = new Date(timestamp);\n const dtf = getDateTimeFormat(timezone, options);\n\n return dtf.formatToParts(date);\n };\n\n const tzOffset = (timestamp: number, timezone: string): number => {\n const formatResult = makeFormatParts(timestamp, timezone);\n const filled: number[] = [];\n for (let i = 0; i < formatResult.length; i += 1) {\n const { type, value } = formatResult[i];\n const pos = typeToPos[type];\n\n if (pos >= 0) {\n filled[pos] = parseInt(value, 10);\n }\n }\n const hour = filled[3];\n const fixedHour = hour === 24 ? 0 : hour;\n const utcString = `${filled[0]}-${filled[1]}-${filled[2]} ${fixedHour}:${filled[4]}:${filled[5]}:000`;\n const utcTs = dayjsFactory.utc(utcString).valueOf();\n let asTS = Number(timestamp);\n const over = asTS % 1000;\n asTS -= over;\n\n return (utcTs - asTS) / (60 * 1000);\n };\n\n const fixOffset = (\n localTS: number,\n o0: number,\n tz: string\n ): [number, number] => {\n let utcGuess = localTS - o0 * 60 * 1000;\n const o2 = tzOffset(utcGuess, tz);\n if (o0 === o2) {\n return [utcGuess, o0];\n }\n utcGuess -= (o2 - o0) * 60 * 1000;\n const o3 = tzOffset(utcGuess, tz);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n };\n\n const proto = dayjsClass.prototype;\n\n proto.tz = function (\n timezone: string = defaultTimezone!,\n keepLocalTime?: boolean\n ) {\n const oldOffset = this.utcOffset();\n const date = this.toDate();\n const target = getLocaleStringifier(timezone).format(date);\n const diff = Math.round(\n (date.getTime() - new Date(target).getTime()) / 1000 / 60\n );\n let ins = dayjsFactory(target)\n .$set(\"millisecond\", this.$ms)\n .utcOffset(\n -Math.round(date.getTimezoneOffset() / 15) * 15 - diff,\n true\n ) as DayjsInternal;\n if (keepLocalTime) {\n const newOffset = ins.utcOffset();\n ins = ins.add(oldOffset - newOffset, \"minute\") as DayjsInternal;\n }\n ins.$x.$timezone = timezone;\n\n return ins;\n };\n\n proto.offsetName = function (type?: \"short\" | \"long\") {\n const zone = this.$x.$timezone || dayjsFactory.tz.guess();\n const result = makeFormatParts(this.valueOf(), zone, {\n timeZoneName: type,\n }).find(\n (m: Intl.DateTimeFormatPart) => m.type.toLowerCase() === \"timezonename\"\n );\n\n return result && result.value;\n };\n\n const oldStartOf = proto.startOf;\n proto.startOf = function (units: string, startOf?: boolean) {\n if (!this.$x || !this.$x.$timezone) {\n return oldStartOf.call(this, units, startOf);\n }\n\n const withoutTz = dayjsFactory(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"));\n const startOfWithoutTz = oldStartOf.call(withoutTz, units, startOf);\n\n return (startOfWithoutTz as DayjsInternal).tz(this.$x.$timezone, true);\n };\n\n const tzFunction = function (\n input: string | number | Date | Dayjs,\n arg1?: string,\n arg2?: string\n ) {\n const parseFormat = arg2 && arg1;\n const timezone = arg2 || arg1 || defaultTimezone;\n const previousOffset = tzOffset(Number(dayjsFactory()), timezone!);\n if (typeof input !== \"string\") {\n return dayjsFactory(input as string | number | Date).tz(timezone!);\n }\n const localTs = dayjsFactory.utc(input, parseFormat).valueOf();\n const [targetTs, targetOffset] = fixOffset(\n localTs,\n previousOffset,\n timezone!\n );\n const ins = dayjsFactory(targetTs).utcOffset(targetOffset) as DayjsInternal;\n ins.$x.$timezone = timezone;\n\n return ins;\n } as DayjsFactory[\"tz\"];\n\n tzFunction.guess = function () {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n };\n\n tzFunction.setDefault = function (timezone?: string) {\n defaultTimezone = timezone;\n };\n\n dayjsFactory.tz = tzFunction;\n};\n\nexport default timezonePlugin;\n","import pureDayjs from \"dayjs\";\nimport type { Dayjs } from \"dayjs\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport utc from \"dayjs/plugin/utc\";\nimport weekday from \"dayjs/plugin/weekday\";\nimport weekOfYear from \"dayjs/plugin/weekOfYear\";\n\nimport timezonePlugin from \"./timezonePlugin\";\n\npureDayjs.extend(weekOfYear);\npureDayjs.extend(weekday);\npureDayjs.extend(localeData);\npureDayjs.extend(utc);\npureDayjs.extend(timezonePlugin);\n\ninterface DayjsInternal extends Dayjs {\n $x: { $timezone?: string };\n}\n\ninterface DayjsWithTz {\n (\n ...args: [string | number | Date | Dayjs | null | undefined, string?]\n ): Dayjs;\n utc(input?: string | number | Date, format?: string): Dayjs;\n tz: {\n (\n input?: string | number | Date | Dayjs,\n arg1?: string,\n arg2?: string\n ): DayjsInternal;\n guess: () => string;\n setDefault: (timezone?: string) => void;\n };\n}\n\nclass LRUCache<K, V> {\n private limit: number;\n private cache: Map<K, V>;\n\n constructor(limit: number) {\n this.limit = limit;\n this.cache = new Map();\n }\n\n get(key: K): V | undefined {\n const value = this.cache.get(key);\n this.cache.delete(key);\n if (value !== undefined) {\n this.cache.set(key, value);\n }\n\n return value;\n }\n\n set(key: K, value: V): void {\n if (this.cache.size >= this.limit) {\n const oldestKey = this.cache.keys().next().value;\n if (oldestKey !== undefined) {\n this.cache.delete(oldestKey);\n }\n }\n this.cache.set(key, value);\n }\n\n has(key: K): boolean {\n return this.cache.has(key);\n }\n}\n\nconst hasTimezone = (dateString: string): boolean => {\n const timezoneRegex = /Z|[+-]\\d{2}:\\d{2}$|[+-]\\d{4}$|GMT([+-]\\d{4})?$/;\n\n return timezoneRegex.test(dateString);\n};\n\nconst cache = new LRUCache<string, Dayjs>(1000);\nconst pureDayjsWithTz = pureDayjs as unknown as DayjsWithTz;\n\nconst dayjs = (\n ...args: [string | number | Date | Dayjs | null | undefined, string?]\n): Dayjs => {\n const cacheKey = JSON.stringify(args);\n\n if (cache.has(cacheKey) && args[0] !== undefined) return cache.get(cacheKey)!;\n\n const userTimezone = pureDayjsWithTz.tz()?.$x?.$timezone;\n const browserTimezone = pureDayjsWithTz.tz.guess();\n const timezone = userTimezone || browserTimezone;\n\n if (userTimezone === browserTimezone || userTimezone === undefined) {\n const result = pureDayjsWithTz(...args);\n\n if (args[0] !== undefined) cache.set(cacheKey, result);\n\n return result;\n }\n\n const mutableArgs: [\n string | number | Date | Dayjs | null | undefined,\n string?,\n ] = [...args];\n\n if (\n mutableArgs.length > 0 &&\n (typeof mutableArgs[0] === \"string\" || mutableArgs[0] === null)\n ) {\n const pureDayjsArgs: [\n string | number | Date | Dayjs | null | undefined,\n string?,\n ] = [mutableArgs[0], mutableArgs[1]];\n\n if (typeof mutableArgs[0] === \"string\" && hasTimezone(mutableArgs[0])) {\n mutableArgs[0] = pureDayjsWithTz(...pureDayjsArgs);\n } else {\n mutableArgs[0] = pureDayjsWithTz(...pureDayjsArgs).format(\n \"YYYY-MM-DD HH:mm:ss\"\n );\n mutableArgs[1] = \"YYYY-MM-DD HH:mm:ss\";\n }\n }\n\n if (mutableArgs[0]?.toString() === \"Invalid Date\") {\n const result = pureDayjsWithTz(...mutableArgs);\n\n if (mutableArgs[0] !== undefined) cache.set(cacheKey, result);\n\n return result;\n }\n\n const result =\n mutableArgs.length === 2\n ? pureDayjsWithTz.tz(\n mutableArgs[0] as string | number | Date | Dayjs,\n mutableArgs[1],\n timezone\n )\n : pureDayjsWithTz.tz(\n mutableArgs[0] as string | number | Date | Dayjs,\n timezone\n );\n\n if (mutableArgs[0] !== undefined) cache.set(cacheKey, result as Dayjs);\n\n return result as Dayjs;\n};\n\nObject.assign(dayjs, { ...pureDayjs });\n\nexport const getTimezoneAppliedDateTime = (\n inputDateTime: Dayjs | Dayjs[] | null\n): Dayjs | (Dayjs | null)[] | null => {\n const timezoneAppliedDateTime = (date: Dayjs | null): Dayjs | null =>\n date && typeof date.format === \"function\"\n ? dayjs(date.format(\"YYYY-MM-DD HH:mm:ss\"))\n : null;\n\n return Array.isArray(inputDateTime)\n ? inputDateTime.map(timezoneAppliedDateTime)\n : timezoneAppliedDateTime(inputDateTime);\n};\n\nexport { dayjs };\n"],"names":["pureDayjs","weekOfYear","weekday","localeData","utc"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const getParentKey = (key, tree) => {
|
|
4
|
+
for (const node of tree) {
|
|
5
|
+
if (node.children) {
|
|
6
|
+
if (node.children.some(child => child.key === key))
|
|
7
|
+
return node.key;
|
|
8
|
+
const parentKey = getParentKey(key, node.children);
|
|
9
|
+
if (parentKey)
|
|
10
|
+
return parentKey;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
};
|
|
15
|
+
const flattenTreeData = (tree) => {
|
|
16
|
+
const list = [];
|
|
17
|
+
const walk = (nodes) => {
|
|
18
|
+
nodes.forEach(node => {
|
|
19
|
+
if (typeof node.title === "string") {
|
|
20
|
+
list.push({ key: node.key, title: node.title });
|
|
21
|
+
}
|
|
22
|
+
if (node.children)
|
|
23
|
+
walk(node.children);
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
walk(tree);
|
|
27
|
+
return list;
|
|
28
|
+
};
|
|
29
|
+
const getExpandedKeysFromSearch = (searchValue, treeData, dataList) => dataList
|
|
30
|
+
.filter(item => item.title.toLowerCase().includes(searchValue.toLowerCase()))
|
|
31
|
+
.map(item => getParentKey(item.key, treeData))
|
|
32
|
+
.filter((key, i, self) => !!key && self.indexOf(key) === i);
|
|
33
|
+
|
|
34
|
+
exports.flattenTreeData = flattenTreeData;
|
|
35
|
+
exports.getExpandedKeysFromSearch = getExpandedKeysFromSearch;
|
|
36
|
+
exports.getParentKey = getParentKey;
|
|
37
|
+
//# sourceMappingURL=search-CfYUGi4v.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-CfYUGi4v.js","sources":["../../../src/components/Tree/utils/search.ts"],"sourcesContent":["import type { TreeNodeData } from \"../types\";\n\nexport const getParentKey = (\n key: string,\n tree: TreeNodeData[]\n): string | undefined => {\n for (const node of tree) {\n if (node.children) {\n if (node.children.some(child => child.key === key)) return node.key;\n const parentKey = getParentKey(key, node.children);\n if (parentKey) return parentKey;\n }\n }\n\n return undefined;\n};\n\nexport const flattenTreeData = (\n tree: TreeNodeData[]\n): { key: string; title: string }[] => {\n const list: { key: string; title: string }[] = [];\n const walk = (nodes: TreeNodeData[]) => {\n nodes.forEach(node => {\n if (typeof node.title === \"string\") {\n list.push({ key: node.key, title: node.title });\n }\n if (node.children) walk(node.children);\n });\n };\n walk(tree);\n\n return list;\n};\n\nexport const getExpandedKeysFromSearch = (\n searchValue: string,\n treeData: TreeNodeData[],\n dataList: { key: string; title: string }[]\n): string[] =>\n dataList\n .filter(item =>\n item.title.toLowerCase().includes(searchValue.toLowerCase())\n )\n .map(item => getParentKey(item.key, treeData))\n .filter((key, i, self): key is string => !!key && self.indexOf(key) === i);\n"],"names":[],"mappings":";;MAEa,YAAY,GAAG,CAC1B,GAAW,EACX,IAAoB,KACE;AACtB,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG;YACnE,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;AAClD,YAAA,IAAI,SAAS;AAAE,gBAAA,OAAO,SAAS;QACjC;IACF;AAEA,IAAA,OAAO,SAAS;AAClB;AAEO,MAAM,eAAe,GAAG,CAC7B,IAAoB,KACgB;IACpC,MAAM,IAAI,GAAqC,EAAE;AACjD,IAAA,MAAM,IAAI,GAAG,CAAC,KAAqB,KAAI;AACrC,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,YAAA,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;AAClC,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACjD;YACA,IAAI,IAAI,CAAC,QAAQ;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IACD,IAAI,CAAC,IAAI,CAAC;AAEV,IAAA,OAAO,IAAI;AACb;AAEO,MAAM,yBAAyB,GAAG,CACvC,WAAmB,EACnB,QAAwB,EACxB,QAA0C,KAE1C;AACG,KAAA,MAAM,CAAC,IAAI,IACV,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAE7D,KAAA,GAAG,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;KAC5C,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,KAAoB,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;;;;;"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React, { type ReactNode } from "react";
|
|
2
2
|
import { Accordion as PrimitiveAccordion, AccordionItem as PrimitiveAccordionItem } from "src/primitives/Accordion";
|
|
3
3
|
type AccordionRootProps = React.ComponentProps<typeof PrimitiveAccordion>;
|
|
4
|
-
export interface AccordionProps extends Omit<AccordionRootProps, "children"> {
|
|
4
|
+
export interface AccordionProps extends Omit<AccordionRootProps, "children" | "type"> {
|
|
5
|
+
/** Whether one or many items can be opened at the same time. */
|
|
6
|
+
type?: "single" | "multiple";
|
|
5
7
|
/** Accordion.Item children. */
|
|
6
8
|
children?: ReactNode;
|
|
7
9
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import type { ColorPickerProps } from "./types";
|
|
3
|
-
declare const ColorPicker:
|
|
2
|
+
declare const ColorPicker: import("react").ForwardRefExoticComponent<ColorPickerProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
4
3
|
export { ColorPicker };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { PaletteColor } from "./types";
|
|
3
|
-
export interface PaletteProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
export interface PaletteProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
4
4
|
/** Currently selected color. */
|
|
5
5
|
color?: string;
|
|
6
6
|
/** List of colors to render. */
|
|
@@ -12,7 +12,12 @@ export interface ColorValue {
|
|
|
12
12
|
}
|
|
13
13
|
export interface PaletteColor {
|
|
14
14
|
hex?: string;
|
|
15
|
-
rgb?: string
|
|
15
|
+
rgb?: string | {
|
|
16
|
+
r: number;
|
|
17
|
+
g: number;
|
|
18
|
+
b: number;
|
|
19
|
+
a?: number;
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
22
|
export interface ColorPickerProps {
|
|
18
23
|
/** Current color value (hex string). */
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { type MenuItemButtonProps } from "./types";
|
|
3
|
-
declare const MenuItemButton:
|
|
2
|
+
declare const MenuItemButton: import("react").ForwardRefExoticComponent<Omit<MenuItemButtonProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
4
3
|
export { MenuItemButton };
|
|
@@ -6,6 +6,7 @@ import { MenuItem } from "./MenuItem";
|
|
|
6
6
|
import { SubMenu } from "./SubMenu";
|
|
7
7
|
export type { DropdownProps, DropdownPosition } from "./types";
|
|
8
8
|
type DropdownComponent = typeof DropdownBase & {
|
|
9
|
+
displayName?: string;
|
|
9
10
|
Menu: typeof Menu;
|
|
10
11
|
MenuItem: typeof MenuItem;
|
|
11
12
|
Divider: typeof Divider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.js","sources":["../../src/components/DropdownMenu/constants.ts","../../src/components/DropdownMenu/SplitTrigger.tsx","../../src/components/DropdownMenu/TriggerButton.tsx","../../src/components/DropdownMenu/types.ts","../../src/components/DropdownMenu/DropdownBase.tsx","../../src/components/DropdownMenu/Divider.tsx","../../src/components/DropdownMenu/Label.tsx","../../src/components/DropdownMenu/Menu.tsx","../../src/components/DropdownMenu/MenuItemButton.tsx","../../src/components/DropdownMenu/MenuItem.tsx","../../src/components/DropdownMenu/SubMenu.tsx","../../src/components/DropdownMenu/index.tsx"],"sourcesContent":["import type { ButtonSize, ButtonStyle } from \"./types\";\n\nexport const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n auto: \"bottom\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"end\",\n};\n\nexport const BUTTON_STYLE_MAP: Record<\n ButtonStyle,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n> = {\n primary: \"default\",\n secondary: \"secondary\",\n tertiary: \"outline\",\n text: \"ghost\",\n danger: \"destructive\",\n \"danger-text\": \"ghost\",\n link: \"link\",\n};\n\nexport const BUTTON_SIZE_MAP: Record<ButtonSize, \"sm\" | \"default\" | \"lg\"> = {\n small: \"sm\",\n medium: \"default\",\n large: \"lg\",\n};\n\nexport const MENU_ITEM_STYLE_MAP: Record<\n \"default\" | \"danger\",\n \"default\" | \"destructive\"\n> = {\n default: \"default\",\n danger: \"destructive\",\n};\n\nexport const CHEVRON_SIZE_MAP: Record<ButtonSize, string> = {\n small: \"size-3.5\",\n medium: \"size-4\",\n large: \"size-4\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { ButtonGroup } from \"src/primitives/ButtonGroup\";\nimport { DropdownMenuTrigger } from \"src/primitives/DropdownMenu\";\n\nimport {\n BUTTON_SIZE_MAP,\n BUTTON_STYLE_MAP,\n CHEVRON_SIZE_MAP,\n} from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\ninterface SplitTriggerOwnProps extends BaseTriggerProps {\n /** Ref forwarded to the action button (left side). */\n actionButtonRef?: React.Ref<HTMLButtonElement>;\n}\n\n/**\n * Radix injects extra props (aria-expanded, data-state, …) via Slot on the\n * DropdownMenuTrigger child. We capture them with a rest-spread.\n */\ntype SplitTriggerProps = SplitTriggerOwnProps &\n Omit<React.ComponentProps<\"div\">, keyof SplitTriggerOwnProps>;\n\nconst SplitTrigger = forwardRef<HTMLDivElement, SplitTriggerProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n actionButtonRef,\n className,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const variant = BUTTON_STYLE_MAP[buttonStyle];\n const size = BUTTON_SIZE_MAP[buttonSize];\n\n return (\n <ButtonGroup\n ref={ref}\n className={cn(\"neeto-ui-action-dropdown\", className)}\n {...otherProps}\n >\n {/* Action button — fires the primary onClick */}\n <PrimitiveButton\n ref={actionButtonRef}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n onClick={onClick}\n data-testid=\"action-dropdown-btn\"\n {...buttonProps}\n >\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n </PrimitiveButton>\n\n {/* Chevron trigger — opens the dropdown menu */}\n <DropdownMenuTrigger asChild disabled={disabled}>\n <PrimitiveButton\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n aria-label={t(\n \"neetoatoms.dropdownMenu.openMenu\",\n \"Open dropdown menu\"\n )}\n className=\"px-1.5\"\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </PrimitiveButton>\n </DropdownMenuTrigger>\n </ButtonGroup>\n );\n }\n);\nSplitTrigger.displayName = \"Dropdown.SplitTrigger\";\n\nexport { SplitTrigger };\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\n\nimport { BUTTON_SIZE_MAP, BUTTON_STYLE_MAP, CHEVRON_SIZE_MAP } from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\n/**\n * Extra props that Radix's Slot injects when the parent Trigger uses\n * `asChild` (aria-expanded, aria-haspopup, data-state, id, …).\n * We capture them with a rest-spread so they reach the DOM button.\n */\ntype TriggerButtonProps = BaseTriggerProps &\n Omit<React.ComponentProps<\"button\">, keyof BaseTriggerProps>;\n\nconst TriggerButton = forwardRef<HTMLButtonElement, TriggerButtonProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n className,\n ...otherProps\n },\n ref\n ) => (\n <PrimitiveButton\n ref={ref}\n type=\"button\"\n variant={BUTTON_STYLE_MAP[buttonStyle]}\n size={BUTTON_SIZE_MAP[buttonSize]}\n disabled={disabled}\n className={cn(\n buttonStyle === \"danger-text\" &&\n \"text-destructive hover:text-destructive\",\n \"gap-1.5\",\n className\n )}\n onClick={onClick}\n {...otherProps}\n {...buttonProps}\n >\n <span className=\"inline-flex items-center gap-1.5\">\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </span>\n </PrimitiveButton>\n )\n);\nTriggerButton.displayName = \"Dropdown.TriggerButton\";\n\nexport { TriggerButton };\n","import { createContext, type ReactNode, type Ref } from \"react\";\n\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n} from \"src/primitives/DropdownMenu\";\nimport type { IconProp } from \"src/lib/renderIcon\";\n\nexport type DropdownPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\nexport type ButtonStyle =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"text\"\n | \"danger\"\n | \"danger-text\"\n | \"link\";\n\nexport type ButtonSize = \"small\" | \"medium\" | \"large\";\n\nexport type MenuItemButtonStyle = \"default\" | \"danger\";\n\nexport interface BaseTriggerProps {\n label?: string;\n icon?: IconProp;\n buttonStyle: ButtonStyle;\n buttonSize: ButtonSize;\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n disabled: boolean;\n isOpen: boolean;\n onClick?: (e: React.MouseEvent) => void;\n}\n\nexport interface DropdownProps {\n /** Text label displayed inside the trigger button. */\n label?: string;\n /** Icon rendered inside the trigger button. */\n icon?: IconProp;\n /** Visual style of the trigger button(s). */\n buttonStyle?: ButtonStyle;\n /** Size of the trigger button(s). */\n buttonSize?: ButtonSize;\n /** Extra props forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n /** Custom trigger element. Overrides the default button trigger. */\n customTarget?: ReactNode | ((props: { isOpen: boolean }) => ReactNode);\n /** Whether the dropdown is disabled. */\n disabled?: boolean;\n /** Dropdown menu content. */\n children?: ReactNode;\n /** Position of the dropdown menu relative to the trigger. */\n position?: DropdownPosition;\n /** Whether pressing Escape closes the dropdown. */\n closeOnEsc?: boolean;\n /** Whether selecting an item closes the dropdown. */\n closeOnSelect?: boolean;\n /** Whether clicking outside closes the dropdown. */\n closeOnOutsideClick?: boolean;\n /** Controlled open state. */\n isOpen?: boolean;\n /** Callback fired when the dropdown closes. */\n onClose?: () => void;\n /**\n * Callback fired when the trigger button is clicked.\n * When provided (without `customTarget`), renders a **split-button**:\n * a primary action button (fires `onClick`) paired with a separate\n * chevron that opens the dropdown menu.\n */\n onClick?: (e: React.MouseEvent) => void;\n /** Additional CSS class names for the trigger wrapper. */\n className?: string;\n /** Ref forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n triggerRef?: Ref<HTMLButtonElement>;\n /** Extra props forwarded to the DropdownMenuContent. */\n dropdownProps?: Omit<\n React.ComponentProps<typeof DropdownMenuContent>,\n \"side\" | \"align\"\n >;\n}\n\nexport interface MenuItemButtonProps extends Omit<\n React.ComponentProps<typeof PrimitiveDropdownMenuItem>,\n \"prefix\" | \"style\" | \"onClick\"\n> {\n /** Highlight as active. */\n isActive?: boolean;\n /** Disable the menu item button. */\n isDisabled?: boolean;\n /** Visual style of the button. */\n style?: MenuItemButtonStyle;\n /** Content rendered before the label. */\n prefix?: ReactNode;\n /** Content rendered after the label. */\n suffix?: ReactNode;\n /** Internal route (renders as anchor). */\n to?: string;\n /** External link (renders as anchor). */\n href?: string;\n /** Callback fired when the item is selected. */\n onClick?: (e: Event) => void;\n /** Children / label text. */\n children?: ReactNode;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport const DropdownContext = createContext({ closeOnSelect: true });\n","import { useCallback, useState } from \"react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"src/primitives/DropdownMenu\";\n\nimport { ALIGN_MAP, SIDE_MAP } from \"./constants\";\nimport { SplitTrigger } from \"./SplitTrigger\";\nimport { TriggerButton } from \"./TriggerButton\";\nimport { DropdownContext, type DropdownProps } from \"./types\";\n\nconst DropdownBase = ({\n label,\n icon,\n buttonStyle = \"primary\",\n buttonSize = \"medium\",\n buttonProps,\n customTarget,\n disabled = false,\n children,\n position = \"bottom-end\",\n closeOnEsc = true,\n closeOnSelect = true,\n closeOnOutsideClick = true,\n isOpen: isOpenProp,\n onClose,\n onClick,\n className,\n triggerRef,\n dropdownProps,\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = isOpenProp !== undefined;\n const open = isControlled ? isOpenProp : internalOpen;\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n if (!next) onClose?.();\n },\n [isControlled, onClose]\n );\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"end\";\n\n // Split-button mode: onClick provided without a customTarget.\n const isSplit = !!onClick && !customTarget;\n\n const sharedTriggerProps = {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen: open,\n onClick,\n };\n\n const triggerNode = isSplit ? (\n <SplitTrigger\n {...sharedTriggerProps}\n actionButtonRef={triggerRef}\n className={className}\n />\n ) : (\n <DropdownMenuTrigger asChild disabled={disabled} className={className}>\n {customTarget ? (\n typeof customTarget === \"function\" ? (\n customTarget({ isOpen: open })\n ) : (\n customTarget\n )\n ) : (\n <TriggerButton ref={triggerRef} {...sharedTriggerProps} />\n )}\n </DropdownMenuTrigger>\n );\n\n return (\n <DropdownContext.Provider value={{ closeOnSelect }}>\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n modal={closeOnOutsideClick}\n >\n {triggerNode}\n <DropdownMenuContent\n side={side}\n align={align}\n onEscapeKeyDown={closeOnEsc ? undefined : e => e.preventDefault()}\n onInteractOutside={\n closeOnOutsideClick ? undefined : e => e.preventDefault()\n }\n {...dropdownProps}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </DropdownContext.Provider>\n );\n};\n\nexport { DropdownBase };\n","import React, { forwardRef } from \"react\";\n\nimport { DropdownMenuSeparator } from \"src/primitives/DropdownMenu\";\n\nconst Divider = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof DropdownMenuSeparator>\n>((props, ref) => <DropdownMenuSeparator ref={ref} {...props} />);\nDivider.displayName = \"Dropdown.Divider\";\n\nexport { Divider };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { DropdownMenuLabel } from \"src/primitives/DropdownMenu\";\n\ninterface MenuLabelProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Label = forwardRef<HTMLDivElement, MenuLabelProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuLabel ref={ref} className={className} {...otherProps}>\n {children}\n </DropdownMenuLabel>\n )\n);\nLabel.displayName = \"Dropdown.Label\";\n\nexport { Label };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuGroup } from \"src/primitives/DropdownMenu\";\n\ninterface MenuProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuGroup\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n {...otherProps}\n >\n {children}\n </DropdownMenuGroup>\n )\n);\nMenu.displayName = \"Dropdown.Menu\";\n\nexport { Menu };\n","import React, { forwardRef, useCallback, useMemo, useContext } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuItem as PrimitiveDropdownMenuItem } from \"src/primitives/DropdownMenu\";\n\nimport { MENU_ITEM_STYLE_MAP } from \"./constants\";\nimport { DropdownContext, type MenuItemButtonProps } from \"./types\";\n\nconst MenuItemButton = forwardRef<HTMLDivElement, MenuItemButtonProps>(\n (\n {\n children,\n isActive = false,\n isDisabled = false,\n style = \"default\",\n prefix,\n suffix,\n to,\n href,\n className,\n onClick,\n variant: _variant,\n disabled: _disabled,\n asChild: _asChild,\n onSelect: _onSelect,\n ...otherProps\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(DropdownContext);\n const variant = MENU_ITEM_STYLE_MAP[style];\n const linkHref = to ?? href;\n\n const handleSelect = useCallback(\n (e: Event) => {\n if (!closeOnSelect) e.preventDefault();\n onClick?.(e);\n },\n [closeOnSelect, onClick]\n );\n\n const itemContent = useMemo(\n () => (\n <>\n {prefix && (\n <span data-slot=\"menu-item-prefix\" className=\"shrink-0\">\n {prefix}\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {suffix && (\n <span\n data-slot=\"menu-item-suffix\"\n className=\"ms-auto shrink-0 text-muted-foreground\"\n >\n {suffix}\n </span>\n )}\n </>\n ),\n [prefix, children, suffix]\n );\n\n return (\n <PrimitiveDropdownMenuItem\n ref={ref}\n variant={variant}\n disabled={isDisabled}\n data-active={isActive || undefined}\n className={cn(isActive && \"bg-accent text-accent-foreground\", className)}\n asChild={!!linkHref}\n onSelect={handleSelect}\n {...otherProps}\n >\n {linkHref ? <a href={linkHref}>{itemContent}</a> : itemContent}\n </PrimitiveDropdownMenuItem>\n );\n }\n);\nMenuItemButton.displayName = \"Dropdown.MenuItem.Button\";\n\nexport { MenuItemButton };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { MenuItemButton } from \"./MenuItemButton\";\n\ninterface MenuItemProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n ({ children, className, ...otherProps }, ref) => {\n // When used without className or extra props, skip the wrapper div\n // so Radix's DropdownMenuItem sits directly inside the Group.\n const hasWrapper = className || ref || Object.keys(otherProps).length > 0;\n\n if (!hasWrapper) return <>{children}</>;\n\n return (\n <div ref={ref} className={className} role=\"none\" {...otherProps}>\n {children}\n </div>\n );\n }\n) as React.ForwardRefExoticComponent<\n MenuItemProps & React.RefAttributes<HTMLDivElement>\n> & {\n Button: typeof MenuItemButton;\n};\nMenuItem.displayName = \"Dropdown.MenuItem\";\nMenuItem.Button = MenuItemButton;\n\nexport { MenuItem };\n","import { forwardRef, type ReactNode } from \"react\";\n\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport {\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n} from \"src/primitives/DropdownMenu\";\n\ninterface SubMenuProps {\n label?: string;\n icon?: IconProp;\n children?: ReactNode;\n className?: string;\n}\n\nconst SubMenu = forwardRef<HTMLDivElement, SubMenuProps>(\n ({ label, icon, children, className }, ref) => (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger ref={ref} className={className}>\n {icon && <span className=\"shrink-0\">{renderIcon(icon, \"size-4\")}</span>}\n {label && <span>{label}</span>}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>{children}</DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n);\nSubMenu.displayName = \"Dropdown.SubMenu\";\n\nexport { SubMenu };\n","import { DropdownBase } from \"./DropdownBase\";\nimport { Divider } from \"./Divider\";\nimport { Label } from \"./Label\";\nimport { Menu } from \"./Menu\";\nimport { MenuItem } from \"./MenuItem\";\nimport { SubMenu } from \"./SubMenu\";\n\nexport type { DropdownProps, DropdownPosition } from \"./types\";\n\ntype DropdownComponent = typeof DropdownBase & {\n Menu: typeof Menu;\n MenuItem: typeof MenuItem;\n Divider: typeof Divider;\n Label: typeof Label;\n SubMenu: typeof SubMenu;\n};\n\nconst DropdownMenu = DropdownBase as DropdownComponent;\nDropdownMenu.displayName = \"DropdownMenu\";\nDropdownMenu.Menu = Menu;\nDropdownMenu.MenuItem = MenuItem;\nDropdownMenu.Divider = Divider;\nDropdownMenu.Label = Label;\nDropdownMenu.SubMenu = SubMenu;\n\nexport { DropdownMenu };\n"],"names":["_jsxs","PrimitiveButton","_jsx","DropdownMenu","_Fragment","PrimitiveDropdownMenuItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownMenu.js","sources":["../../src/components/DropdownMenu/constants.ts","../../src/components/DropdownMenu/SplitTrigger.tsx","../../src/components/DropdownMenu/TriggerButton.tsx","../../src/components/DropdownMenu/types.ts","../../src/components/DropdownMenu/DropdownBase.tsx","../../src/components/DropdownMenu/Divider.tsx","../../src/components/DropdownMenu/Label.tsx","../../src/components/DropdownMenu/Menu.tsx","../../src/components/DropdownMenu/MenuItemButton.tsx","../../src/components/DropdownMenu/MenuItem.tsx","../../src/components/DropdownMenu/SubMenu.tsx","../../src/components/DropdownMenu/index.tsx"],"sourcesContent":["import type { ButtonSize, ButtonStyle } from \"./types\";\n\nexport const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n auto: \"bottom\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"end\",\n};\n\nexport const BUTTON_STYLE_MAP: Record<\n ButtonStyle,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n> = {\n primary: \"default\",\n secondary: \"secondary\",\n tertiary: \"outline\",\n text: \"ghost\",\n danger: \"destructive\",\n \"danger-text\": \"ghost\",\n link: \"link\",\n};\n\nexport const BUTTON_SIZE_MAP: Record<ButtonSize, \"sm\" | \"default\" | \"lg\"> = {\n small: \"sm\",\n medium: \"default\",\n large: \"lg\",\n};\n\nexport const MENU_ITEM_STYLE_MAP: Record<\n \"default\" | \"danger\",\n \"default\" | \"destructive\"\n> = {\n default: \"default\",\n danger: \"destructive\",\n};\n\nexport const CHEVRON_SIZE_MAP: Record<ButtonSize, string> = {\n small: \"size-3.5\",\n medium: \"size-4\",\n large: \"size-4\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { ButtonGroup } from \"src/primitives/ButtonGroup\";\nimport { DropdownMenuTrigger } from \"src/primitives/DropdownMenu\";\n\nimport {\n BUTTON_SIZE_MAP,\n BUTTON_STYLE_MAP,\n CHEVRON_SIZE_MAP,\n} from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\ninterface SplitTriggerOwnProps extends BaseTriggerProps {\n /** Ref forwarded to the action button (left side). */\n actionButtonRef?: React.Ref<HTMLButtonElement>;\n}\n\n/**\n * Radix injects extra props (aria-expanded, data-state, …) via Slot on the\n * DropdownMenuTrigger child. We capture them with a rest-spread.\n */\ntype SplitTriggerProps = SplitTriggerOwnProps &\n Omit<React.ComponentProps<\"div\">, keyof SplitTriggerOwnProps>;\n\nconst SplitTrigger = forwardRef<HTMLDivElement, SplitTriggerProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n actionButtonRef,\n className,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const variant = BUTTON_STYLE_MAP[buttonStyle];\n const size = BUTTON_SIZE_MAP[buttonSize];\n\n return (\n <ButtonGroup\n ref={ref}\n className={cn(\"neeto-ui-action-dropdown\", className)}\n {...otherProps}\n >\n {/* Action button — fires the primary onClick */}\n <PrimitiveButton\n ref={actionButtonRef}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n onClick={onClick}\n data-testid=\"action-dropdown-btn\"\n {...buttonProps}\n >\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n </PrimitiveButton>\n\n {/* Chevron trigger — opens the dropdown menu */}\n <DropdownMenuTrigger asChild disabled={disabled}>\n <PrimitiveButton\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n aria-label={t(\n \"neetoatoms.dropdownMenu.openMenu\",\n \"Open dropdown menu\"\n )}\n className=\"px-1.5\"\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </PrimitiveButton>\n </DropdownMenuTrigger>\n </ButtonGroup>\n );\n }\n);\nSplitTrigger.displayName = \"Dropdown.SplitTrigger\";\n\nexport { SplitTrigger };\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\n\nimport { BUTTON_SIZE_MAP, BUTTON_STYLE_MAP, CHEVRON_SIZE_MAP } from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\n/**\n * Extra props that Radix's Slot injects when the parent Trigger uses\n * `asChild` (aria-expanded, aria-haspopup, data-state, id, …).\n * We capture them with a rest-spread so they reach the DOM button.\n */\ntype TriggerButtonProps = BaseTriggerProps &\n Omit<React.ComponentProps<\"button\">, keyof BaseTriggerProps>;\n\nconst TriggerButton = forwardRef<HTMLButtonElement, TriggerButtonProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n className,\n ...otherProps\n },\n ref\n ) => (\n <PrimitiveButton\n ref={ref}\n type=\"button\"\n variant={BUTTON_STYLE_MAP[buttonStyle]}\n size={BUTTON_SIZE_MAP[buttonSize]}\n disabled={disabled}\n className={cn(\n buttonStyle === \"danger-text\" &&\n \"text-destructive hover:text-destructive\",\n \"gap-1.5\",\n className\n )}\n onClick={onClick}\n {...otherProps}\n {...buttonProps}\n >\n <span className=\"inline-flex items-center gap-1.5\">\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </span>\n </PrimitiveButton>\n )\n);\nTriggerButton.displayName = \"Dropdown.TriggerButton\";\n\nexport { TriggerButton };\n","import { createContext, type ReactNode, type Ref } from \"react\";\n\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n} from \"src/primitives/DropdownMenu\";\nimport type { IconProp } from \"src/lib/renderIcon\";\n\nexport type DropdownPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\nexport type ButtonStyle =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"text\"\n | \"danger\"\n | \"danger-text\"\n | \"link\";\n\nexport type ButtonSize = \"small\" | \"medium\" | \"large\";\n\nexport type MenuItemButtonStyle = \"default\" | \"danger\";\n\nexport interface BaseTriggerProps {\n label?: string;\n icon?: IconProp;\n buttonStyle: ButtonStyle;\n buttonSize: ButtonSize;\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n disabled: boolean;\n isOpen: boolean;\n onClick?: (e: React.MouseEvent) => void;\n}\n\nexport interface DropdownProps {\n /** Text label displayed inside the trigger button. */\n label?: string;\n /** Icon rendered inside the trigger button. */\n icon?: IconProp;\n /** Visual style of the trigger button(s). */\n buttonStyle?: ButtonStyle;\n /** Size of the trigger button(s). */\n buttonSize?: ButtonSize;\n /** Extra props forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n /** Custom trigger element. Overrides the default button trigger. */\n customTarget?: ReactNode | ((props: { isOpen: boolean }) => ReactNode);\n /** Whether the dropdown is disabled. */\n disabled?: boolean;\n /** Dropdown menu content. */\n children?: ReactNode;\n /** Position of the dropdown menu relative to the trigger. */\n position?: DropdownPosition;\n /** Whether pressing Escape closes the dropdown. */\n closeOnEsc?: boolean;\n /** Whether selecting an item closes the dropdown. */\n closeOnSelect?: boolean;\n /** Whether clicking outside closes the dropdown. */\n closeOnOutsideClick?: boolean;\n /** Controlled open state. */\n isOpen?: boolean;\n /** Callback fired when the dropdown closes. */\n onClose?: () => void;\n /**\n * Callback fired when the trigger button is clicked.\n * When provided (without `customTarget`), renders a **split-button**:\n * a primary action button (fires `onClick`) paired with a separate\n * chevron that opens the dropdown menu.\n */\n onClick?: (e: React.MouseEvent) => void;\n /** Additional CSS class names for the trigger wrapper. */\n className?: string;\n /** Ref forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n triggerRef?: Ref<HTMLButtonElement>;\n /** Extra props forwarded to the DropdownMenuContent. */\n dropdownProps?: Omit<\n React.ComponentProps<typeof DropdownMenuContent>,\n \"side\" | \"align\"\n >;\n}\n\nexport interface MenuItemButtonProps extends Omit<\n React.ComponentProps<typeof PrimitiveDropdownMenuItem>,\n \"prefix\" | \"style\" | \"onClick\"\n> {\n /** Highlight as active. */\n isActive?: boolean;\n /** Disable the menu item button. */\n isDisabled?: boolean;\n /** Visual style of the button. */\n style?: MenuItemButtonStyle;\n /** Content rendered before the label. */\n prefix?: ReactNode;\n /** Content rendered after the label. */\n suffix?: ReactNode;\n /** Internal route (renders as anchor). */\n to?: string;\n /** External link (renders as anchor). */\n href?: string;\n /** Callback fired when the item is selected. */\n onClick?: (e: Event) => void;\n /** Children / label text. */\n children?: ReactNode;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport const DropdownContext = createContext({ closeOnSelect: true });\n","import { useCallback, useState } from \"react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"src/primitives/DropdownMenu\";\n\nimport { ALIGN_MAP, SIDE_MAP } from \"./constants\";\nimport { SplitTrigger } from \"./SplitTrigger\";\nimport { TriggerButton } from \"./TriggerButton\";\nimport { DropdownContext, type DropdownProps } from \"./types\";\n\nconst DropdownBase = ({\n label,\n icon,\n buttonStyle = \"primary\",\n buttonSize = \"medium\",\n buttonProps,\n customTarget,\n disabled = false,\n children,\n position = \"bottom-end\",\n closeOnEsc = true,\n closeOnSelect = true,\n closeOnOutsideClick = true,\n isOpen: isOpenProp,\n onClose,\n onClick,\n className,\n triggerRef,\n dropdownProps,\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = isOpenProp !== undefined;\n const open = isControlled ? isOpenProp : internalOpen;\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n if (!next) onClose?.();\n },\n [isControlled, onClose]\n );\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"end\";\n\n // Split-button mode: onClick provided without a customTarget.\n const isSplit = !!onClick && !customTarget;\n\n const sharedTriggerProps = {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen: open,\n onClick,\n };\n\n const triggerNode = isSplit ? (\n <SplitTrigger\n {...sharedTriggerProps}\n actionButtonRef={triggerRef}\n className={className}\n />\n ) : (\n <DropdownMenuTrigger asChild disabled={disabled} className={className}>\n {customTarget ? (\n typeof customTarget === \"function\" ? (\n customTarget({ isOpen: open })\n ) : (\n customTarget\n )\n ) : (\n <TriggerButton ref={triggerRef} {...sharedTriggerProps} />\n )}\n </DropdownMenuTrigger>\n );\n\n return (\n <DropdownContext.Provider value={{ closeOnSelect }}>\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n modal={closeOnOutsideClick}\n >\n {triggerNode}\n <DropdownMenuContent\n side={side}\n align={align}\n onEscapeKeyDown={closeOnEsc ? undefined : e => e.preventDefault()}\n onInteractOutside={\n closeOnOutsideClick ? undefined : e => e.preventDefault()\n }\n {...dropdownProps}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </DropdownContext.Provider>\n );\n};\n\nexport { DropdownBase };\n","import React, { forwardRef } from \"react\";\n\nimport { DropdownMenuSeparator } from \"src/primitives/DropdownMenu\";\n\nconst Divider = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof DropdownMenuSeparator>\n>((props, ref) => <DropdownMenuSeparator ref={ref} {...props} />);\nDivider.displayName = \"Dropdown.Divider\";\n\nexport { Divider };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { DropdownMenuLabel } from \"src/primitives/DropdownMenu\";\n\ninterface MenuLabelProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Label = forwardRef<HTMLDivElement, MenuLabelProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuLabel ref={ref} className={className} {...otherProps}>\n {children}\n </DropdownMenuLabel>\n )\n);\nLabel.displayName = \"Dropdown.Label\";\n\nexport { Label };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuGroup } from \"src/primitives/DropdownMenu\";\n\ninterface MenuProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuGroup\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n {...otherProps}\n >\n {children}\n </DropdownMenuGroup>\n )\n);\nMenu.displayName = \"Dropdown.Menu\";\n\nexport { Menu };\n","import { forwardRef, useCallback, useMemo, useContext } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuItem as PrimitiveDropdownMenuItem } from \"src/primitives/DropdownMenu\";\n\nimport { MENU_ITEM_STYLE_MAP } from \"./constants\";\nimport { DropdownContext, type MenuItemButtonProps } from \"./types\";\n\nconst MenuItemButton = forwardRef<HTMLDivElement, MenuItemButtonProps>(\n (\n {\n children,\n isActive = false,\n isDisabled = false,\n style = \"default\",\n prefix,\n suffix,\n to,\n href,\n className,\n onClick,\n variant: _variant,\n disabled: _disabled,\n asChild: _asChild,\n onSelect: _onSelect,\n ...otherProps\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(DropdownContext);\n const variant = MENU_ITEM_STYLE_MAP[style];\n const linkHref = to ?? href;\n\n const handleSelect = useCallback(\n (e: Event) => {\n if (!closeOnSelect) e.preventDefault();\n onClick?.(e);\n },\n [closeOnSelect, onClick]\n );\n\n const itemContent = useMemo(\n () => (\n <>\n {prefix && (\n <span data-slot=\"menu-item-prefix\" className=\"shrink-0\">\n {prefix}\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {suffix && (\n <span\n data-slot=\"menu-item-suffix\"\n className=\"ms-auto shrink-0 text-muted-foreground\"\n >\n {suffix}\n </span>\n )}\n </>\n ),\n [prefix, children, suffix]\n );\n\n return (\n <PrimitiveDropdownMenuItem\n ref={ref}\n variant={variant}\n disabled={isDisabled}\n data-active={isActive || undefined}\n className={cn(\n isActive && \"bg-accent text-accent-foreground\",\n className\n )}\n asChild={!!linkHref}\n onSelect={handleSelect}\n {...otherProps}\n >\n {linkHref ? <a href={linkHref}>{itemContent}</a> : itemContent}\n </PrimitiveDropdownMenuItem>\n );\n }\n);\nMenuItemButton.displayName = \"Dropdown.MenuItem.Button\";\n\nexport { MenuItemButton };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { MenuItemButton } from \"./MenuItemButton\";\n\ninterface MenuItemProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n ({ children, className, ...otherProps }, ref) => {\n // When used without className or extra props, skip the wrapper div\n // so Radix's DropdownMenuItem sits directly inside the Group.\n const hasWrapper = className || ref || Object.keys(otherProps).length > 0;\n\n if (!hasWrapper) return <>{children}</>;\n\n return (\n <div ref={ref} className={className} role=\"none\" {...otherProps}>\n {children}\n </div>\n );\n }\n) as React.ForwardRefExoticComponent<\n MenuItemProps & React.RefAttributes<HTMLDivElement>\n> & {\n Button: typeof MenuItemButton;\n};\nMenuItem.displayName = \"Dropdown.MenuItem\";\nMenuItem.Button = MenuItemButton;\n\nexport { MenuItem };\n","import { forwardRef, type ReactNode } from \"react\";\n\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport {\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n} from \"src/primitives/DropdownMenu\";\n\ninterface SubMenuProps {\n label?: string;\n icon?: IconProp;\n children?: ReactNode;\n className?: string;\n}\n\nconst SubMenu = forwardRef<HTMLDivElement, SubMenuProps>(\n ({ label, icon, children, className }, ref) => (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger ref={ref} className={className}>\n {icon && <span className=\"shrink-0\">{renderIcon(icon, \"size-4\")}</span>}\n {label && <span>{label}</span>}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>{children}</DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n);\nSubMenu.displayName = \"Dropdown.SubMenu\";\n\nexport { SubMenu };\n","import { DropdownBase } from \"./DropdownBase\";\nimport { Divider } from \"./Divider\";\nimport { Label } from \"./Label\";\nimport { Menu } from \"./Menu\";\nimport { MenuItem } from \"./MenuItem\";\nimport { SubMenu } from \"./SubMenu\";\n\nexport type { DropdownProps, DropdownPosition } from \"./types\";\n\ntype DropdownComponent = typeof DropdownBase & {\n displayName?: string;\n Menu: typeof Menu;\n MenuItem: typeof MenuItem;\n Divider: typeof Divider;\n Label: typeof Label;\n SubMenu: typeof SubMenu;\n};\n\nconst DropdownMenu = DropdownBase as DropdownComponent;\nDropdownMenu.displayName = \"DropdownMenu\";\nDropdownMenu.Menu = Menu;\nDropdownMenu.MenuItem = MenuItem;\nDropdownMenu.Divider = Divider;\nDropdownMenu.Label = Label;\nDropdownMenu.SubMenu = SubMenu;\n\nexport { DropdownMenu };\n"],"names":["_jsxs","PrimitiveButton","_jsx","DropdownMenu","_Fragment","PrimitiveDropdownMenuItem"],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FieldLabel } from "src/primitives/Field";
|
|
3
3
|
type InputSize = "small" | "medium" | "large";
|
|
4
|
-
export interface InputProps extends Omit<React.ComponentProps<"input">, "size" | "prefix"> {
|
|
4
|
+
export interface InputProps extends Omit<React.ComponentProps<"input">, "size" | "prefix" | "value"> {
|
|
5
|
+
/** Controlled value. */
|
|
6
|
+
value?: string | number;
|
|
5
7
|
/** Size of the input. */
|
|
6
8
|
size?: InputSize;
|
|
7
9
|
/** Input type. */
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import type { MultiEmailInputProps } from "./types";
|
|
3
|
-
export declare const MultiEmailInput:
|
|
2
|
+
export declare const MultiEmailInput: import("react").ForwardRefExoticComponent<MultiEmailInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -14,7 +14,7 @@ export interface RadioGroupProps extends Omit<React.ComponentProps<typeof Primit
|
|
|
14
14
|
/** RadioGroup.Item children. */
|
|
15
15
|
children?: React.ReactNode;
|
|
16
16
|
}
|
|
17
|
-
interface RadioGroupItemProps extends React.ComponentProps<typeof PrimitiveRadioGroupItem> {
|
|
17
|
+
export interface RadioGroupItemProps extends React.ComponentProps<typeof PrimitiveRadioGroupItem> {
|
|
18
18
|
/** Label displayed next to the radio. */
|
|
19
19
|
label?: string;
|
|
20
20
|
/** Helper text displayed below the item label. Accepts string or ReactNode. */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { RadioGroup } from "./RadioGroup";
|
|
2
|
-
export type { RadioGroupProps } from "./RadioGroup";
|
|
2
|
+
export type { RadioGroupProps, RadioGroupItemProps } from "./RadioGroup";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import type { SelectProps } from "./types";
|
|
3
2
|
export type { SelectProps, SelectOption, SelectOptionBase, SelectOptionGroup, } from "./types";
|
|
4
|
-
declare const Select:
|
|
3
|
+
declare const Select: import("react").ForwardRefExoticComponent<SelectProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
5
4
|
export { Select };
|
|
@@ -4,7 +4,9 @@ import { Textarea as PrimitiveTextarea } from "src/primitives/Textarea";
|
|
|
4
4
|
import type { TextareaSize } from "./constants";
|
|
5
5
|
type TextareaResize = "vertical" | "none";
|
|
6
6
|
type PrimitiveTextareaProps = React.ComponentProps<typeof PrimitiveTextarea>;
|
|
7
|
-
export interface TextareaProps extends Omit<PrimitiveTextareaProps, "size" | "children"> {
|
|
7
|
+
export interface TextareaProps extends Omit<PrimitiveTextareaProps, "size" | "children" | "prefix" | "value"> {
|
|
8
|
+
/** Controlled value. */
|
|
9
|
+
value?: string | number;
|
|
8
10
|
/** Size of the textarea. Controls default rows: small=1, medium=3, large=4. */
|
|
9
11
|
size?: TextareaSize;
|
|
10
12
|
/** Resize behavior. */
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import type { TimePickerPanelProps } from "./types";
|
|
3
|
-
declare const TimePickerPanel:
|
|
2
|
+
declare const TimePickerPanel: import("react").ForwardRefExoticComponent<TimePickerPanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
4
3
|
export { TimePickerPanel };
|
package/dist/components/Tree.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { T as Tree } from '../Tree-
|
|
1
|
+
export { T as Tree } from '../Tree-C7r10UY5.js';
|
|
2
|
+
export { f as flattenTreeData, g as getExpandedKeysFromSearch, a as getParentKey } from '../search-BK7Ozh5_.js';
|
|
2
3
|
import 'react/jsx-runtime';
|
|
3
4
|
import 'react';
|
|
4
5
|
import '../utils-DdHUxIdC.js';
|
|
@@ -21,37 +22,4 @@ import '../loader-circle-DycHUAWN.js';
|
|
|
21
22
|
import '../index-DZXbzIgC.js';
|
|
22
23
|
import '../index-CSMSzzKM.js';
|
|
23
24
|
import '../redux-BKH6DnBB.js';
|
|
24
|
-
|
|
25
|
-
const getParentKey = (key, tree) => {
|
|
26
|
-
for (const node of tree) {
|
|
27
|
-
if (node.children) {
|
|
28
|
-
if (node.children.some(child => child.key === key))
|
|
29
|
-
return node.key;
|
|
30
|
-
const parentKey = getParentKey(key, node.children);
|
|
31
|
-
if (parentKey)
|
|
32
|
-
return parentKey;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return undefined;
|
|
36
|
-
};
|
|
37
|
-
const flattenTreeData = (tree) => {
|
|
38
|
-
const list = [];
|
|
39
|
-
const walk = (nodes) => {
|
|
40
|
-
nodes.forEach(node => {
|
|
41
|
-
if (typeof node.title === "string") {
|
|
42
|
-
list.push({ key: node.key, title: node.title });
|
|
43
|
-
}
|
|
44
|
-
if (node.children)
|
|
45
|
-
walk(node.children);
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
walk(tree);
|
|
49
|
-
return list;
|
|
50
|
-
};
|
|
51
|
-
const getExpandedKeysFromSearch = (searchValue, treeData, dataList) => dataList
|
|
52
|
-
.filter(item => item.title.toLowerCase().includes(searchValue.toLowerCase()))
|
|
53
|
-
.map(item => getParentKey(item.key, treeData))
|
|
54
|
-
.filter((key, i, self) => !!key && self.indexOf(key) === i);
|
|
55
|
-
|
|
56
|
-
export { flattenTreeData, getExpandedKeysFromSearch, getParentKey };
|
|
57
25
|
//# sourceMappingURL=Tree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.js","sources":[
|
|
1
|
+
{"version":3,"file":"Tree.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { T as TreeSelect } from '../TreeSelect-
|
|
1
|
+
export { T as TreeSelect } from '../TreeSelect-DRGcYz-6.js';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
4
4
|
import '../utils-DdHUxIdC.js';
|
|
@@ -24,7 +24,7 @@ import '../primitives/Field.js';
|
|
|
24
24
|
import '../index-D7Zy7P05.js';
|
|
25
25
|
import '../label-B4qDF3W1.js';
|
|
26
26
|
import '../separator-BbhgePmX.js';
|
|
27
|
-
import '../Tree-
|
|
27
|
+
import '../Tree-C7r10UY5.js';
|
|
28
28
|
import '../chevron-down-BNi0ntys.js';
|
|
29
29
|
import '../createLucideIcon-C8ycilSN.js';
|
|
30
30
|
import '../chevron-right-DQnrO-ek.js';
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const typographyVariants: (props?: ({
|
|
4
|
+
variant?: "caption" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "jumbo" | "body1" | "body2" | "body3" | "nano" | null | undefined;
|
|
5
|
+
weight?: "bold" | "medium" | "black" | "thin" | "extralight" | "light" | "normal" | "semibold" | "extrabold" | null | undefined;
|
|
6
|
+
color?: "inherit" | "default" | "destructive" | "primary" | "muted" | null | undefined;
|
|
7
|
+
lineClamp?: 1 | "none" | 3 | 2 | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
declare const Typography: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLParagraphElement> & React.HTMLAttributes<HTMLParagraphElement> & VariantProps<(props?: ({
|
|
2
10
|
variant?: "caption" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "jumbo" | "body1" | "body2" | "body3" | "nano" | null | undefined;
|
|
3
11
|
weight?: "bold" | "medium" | "black" | "thin" | "extralight" | "light" | "normal" | "semibold" | "extrabold" | null | undefined;
|
|
4
12
|
color?: "inherit" | "default" | "destructive" | "primary" | "muted" | null | undefined;
|
|
5
13
|
lineClamp?: 1 | "none" | 3 | 2 | null | undefined;
|
|
6
14
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
7
15
|
asChild?: boolean;
|
|
8
|
-
}, "ref"> &
|
|
9
|
-
export { Typography };
|
|
10
|
-
export { typographyVariants } from "src/shadcn/components/typography";
|
|
16
|
+
}, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
17
|
+
export { Typography, typographyVariants };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export * from "./Accordion";
|
|
2
|
+
export * from "./Alert";
|
|
3
|
+
export * from "./Avatar";
|
|
4
|
+
export * from "./Badge";
|
|
5
|
+
export * from "./Button";
|
|
6
|
+
export * from "./Callout";
|
|
7
|
+
export * from "./Checkbox";
|
|
8
|
+
export * from "./ColorPicker";
|
|
9
|
+
export * from "./DataTable";
|
|
10
|
+
export * from "./DatePicker";
|
|
11
|
+
export * from "./Dialog";
|
|
12
|
+
export * from "./DropdownMenu";
|
|
13
|
+
export * from "./Empty";
|
|
14
|
+
export * from "./Input";
|
|
15
|
+
export * from "./Kbd";
|
|
16
|
+
export * from "./Label";
|
|
17
|
+
export * from "./MultiEmailInput";
|
|
18
|
+
export * from "./Pagination";
|
|
19
|
+
export * from "./Popover";
|
|
20
|
+
export * from "./Progress";
|
|
21
|
+
export * from "./RadioGroup";
|
|
22
|
+
export * from "./Select";
|
|
23
|
+
export * from "./Sheet";
|
|
24
|
+
export * from "./Slider";
|
|
25
|
+
export * from "./Spinner";
|
|
26
|
+
export * from "./Stepper";
|
|
27
|
+
export * from "./Switch";
|
|
28
|
+
export * from "./Tabs";
|
|
29
|
+
export * from "./Textarea";
|
|
30
|
+
export * from "./TimePicker";
|
|
31
|
+
export * from "./Toastr";
|
|
32
|
+
export * from "./Tooltip";
|
|
33
|
+
export * from "./TranslationProvider";
|
|
34
|
+
export * from "./Tree";
|
|
35
|
+
export * from "./TreeSelect";
|
|
36
|
+
export * from "./Typography";
|