asterui 0.12.1 → 0.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/dist/components/Calendar.d.ts +23 -0
  2. package/dist/components/Checkbox.d.ts +10 -0
  3. package/dist/components/Dock.d.ts +38 -0
  4. package/dist/components/Mask.d.ts +14 -0
  5. package/dist/index.css +1 -0
  6. package/dist/index.d.ts +8 -1
  7. package/dist/index.js +203 -194
  8. package/dist/index.js.map +1 -1
  9. package/dist/index10.js +85 -59
  10. package/dist/index10.js.map +1 -1
  11. package/dist/index100.js +45 -7
  12. package/dist/index100.js.map +1 -1
  13. package/dist/index101.js +11 -11
  14. package/dist/index101.js.map +1 -1
  15. package/dist/index102.js +12 -28
  16. package/dist/index102.js.map +1 -1
  17. package/dist/index103.js +7 -17
  18. package/dist/index103.js.map +1 -1
  19. package/dist/index104.js +12 -10792
  20. package/dist/index104.js.map +1 -1
  21. package/dist/index105.js +31 -5
  22. package/dist/index105.js.map +1 -1
  23. package/dist/index106.js +16 -40
  24. package/dist/index106.js.map +1 -1
  25. package/dist/index107.js +174 -2
  26. package/dist/index107.js.map +1 -1
  27. package/dist/index109.js +10788 -147
  28. package/dist/index109.js.map +1 -1
  29. package/dist/index110.js +5 -30
  30. package/dist/index110.js.map +1 -1
  31. package/dist/index111.js +39 -27
  32. package/dist/index111.js.map +1 -1
  33. package/dist/index113.js +6 -71
  34. package/dist/index113.js.map +1 -1
  35. package/dist/index114.js +147 -34
  36. package/dist/index114.js.map +1 -1
  37. package/dist/index115.js +28 -24
  38. package/dist/index115.js.map +1 -1
  39. package/dist/index116.js +28 -19
  40. package/dist/index116.js.map +1 -1
  41. package/dist/index117.js +2 -24
  42. package/dist/index117.js.map +1 -1
  43. package/dist/index118.js +71 -19
  44. package/dist/index118.js.map +1 -1
  45. package/dist/index119.js +33 -94
  46. package/dist/index119.js.map +1 -1
  47. package/dist/index120.js +24 -358
  48. package/dist/index120.js.map +1 -1
  49. package/dist/index121.js +19 -23
  50. package/dist/index121.js.map +1 -1
  51. package/dist/index122.js +22 -71
  52. package/dist/index122.js.map +1 -1
  53. package/dist/index123.js +18 -14
  54. package/dist/index123.js.map +1 -1
  55. package/dist/index124.js +92 -58
  56. package/dist/index124.js.map +1 -1
  57. package/dist/index125.js +357 -141
  58. package/dist/index125.js.map +1 -1
  59. package/dist/index126.js +25 -2
  60. package/dist/index126.js.map +1 -1
  61. package/dist/index127.js +70 -53
  62. package/dist/index127.js.map +1 -1
  63. package/dist/index128.js +16 -2
  64. package/dist/index128.js.map +1 -1
  65. package/dist/index129.js +66 -2
  66. package/dist/index129.js.map +1 -1
  67. package/dist/index13.js +35 -95
  68. package/dist/index13.js.map +1 -1
  69. package/dist/index130.js +144 -2
  70. package/dist/index130.js.map +1 -1
  71. package/dist/index131.js +2 -2
  72. package/dist/index132.js +56 -2
  73. package/dist/index132.js.map +1 -1
  74. package/dist/index133.js +2 -2
  75. package/dist/index134.js +2 -2
  76. package/dist/index136.js +2 -32
  77. package/dist/index136.js.map +1 -1
  78. package/dist/index137.js +2 -2
  79. package/dist/index138.js +2 -8
  80. package/dist/index138.js.map +1 -1
  81. package/dist/index139.js +2 -2
  82. package/dist/index14.js +90 -153
  83. package/dist/index14.js.map +1 -1
  84. package/dist/index140.js +2 -2
  85. package/dist/index141.js +31 -20
  86. package/dist/index141.js.map +1 -1
  87. package/dist/index142.js +2 -2
  88. package/dist/index143.js +7 -23
  89. package/dist/index143.js.map +1 -1
  90. package/dist/index144.js +2 -71
  91. package/dist/index144.js.map +1 -1
  92. package/dist/index145.js +2 -21
  93. package/dist/index145.js.map +1 -1
  94. package/dist/index146.js +20 -33
  95. package/dist/index146.js.map +1 -1
  96. package/dist/index147.js +2 -70
  97. package/dist/index147.js.map +1 -1
  98. package/dist/index148.js +24 -2
  99. package/dist/index148.js.map +1 -1
  100. package/dist/index149.js +70 -21
  101. package/dist/index149.js.map +1 -1
  102. package/dist/index15.js +154 -146
  103. package/dist/index15.js.map +1 -1
  104. package/dist/index150.js +21 -2
  105. package/dist/index150.js.map +1 -1
  106. package/dist/index151.js +34 -2
  107. package/dist/index151.js.map +1 -1
  108. package/dist/index152.js +70 -2
  109. package/dist/index152.js.map +1 -1
  110. package/dist/index153.js +2 -2
  111. package/dist/index154.js +21 -3
  112. package/dist/index154.js.map +1 -1
  113. package/dist/index155.js +5 -0
  114. package/dist/index155.js.map +1 -0
  115. package/dist/index156.js +5 -0
  116. package/dist/index156.js.map +1 -0
  117. package/dist/index157.js +5 -0
  118. package/dist/index157.js.map +1 -0
  119. package/dist/index158.js +5 -0
  120. package/dist/index158.js.map +1 -0
  121. package/dist/index159.js +7 -0
  122. package/dist/index159.js.map +1 -0
  123. package/dist/index16.js +150 -5
  124. package/dist/index16.js.map +1 -1
  125. package/dist/index17.js +5 -71
  126. package/dist/index17.js.map +1 -1
  127. package/dist/index18.js +71 -17
  128. package/dist/index18.js.map +1 -1
  129. package/dist/index19.js +15 -96
  130. package/dist/index19.js.map +1 -1
  131. package/dist/index20.js +89 -105
  132. package/dist/index20.js.map +1 -1
  133. package/dist/index21.js +107 -177
  134. package/dist/index21.js.map +1 -1
  135. package/dist/index22.js +181 -107
  136. package/dist/index22.js.map +1 -1
  137. package/dist/index23.js +110 -19
  138. package/dist/index23.js.map +1 -1
  139. package/dist/index24.js +19 -32
  140. package/dist/index24.js.map +1 -1
  141. package/dist/index25.js +42 -40
  142. package/dist/index25.js.map +1 -1
  143. package/dist/index26.js +31 -11
  144. package/dist/index26.js.map +1 -1
  145. package/dist/index27.js +41 -33
  146. package/dist/index27.js.map +1 -1
  147. package/dist/index28.js +12 -63
  148. package/dist/index28.js.map +1 -1
  149. package/dist/index29.js +33 -80
  150. package/dist/index29.js.map +1 -1
  151. package/dist/index30.js +63 -18
  152. package/dist/index30.js.map +1 -1
  153. package/dist/index31.js +79 -219
  154. package/dist/index31.js.map +1 -1
  155. package/dist/index32.js +16 -1080
  156. package/dist/index32.js.map +1 -1
  157. package/dist/index33.js +218 -16
  158. package/dist/index33.js.map +1 -1
  159. package/dist/index34.js +1081 -121
  160. package/dist/index34.js.map +1 -1
  161. package/dist/index35.js +17 -39
  162. package/dist/index35.js.map +1 -1
  163. package/dist/index36.js +121 -190
  164. package/dist/index36.js.map +1 -1
  165. package/dist/index37.js +37 -94
  166. package/dist/index37.js.map +1 -1
  167. package/dist/index38.js +186 -157
  168. package/dist/index38.js.map +1 -1
  169. package/dist/index39.js +89 -138
  170. package/dist/index39.js.map +1 -1
  171. package/dist/index40.js +161 -14
  172. package/dist/index40.js.map +1 -1
  173. package/dist/index41.js +146 -18
  174. package/dist/index41.js.map +1 -1
  175. package/dist/index42.js +14 -20
  176. package/dist/index42.js.map +1 -1
  177. package/dist/index43.js +15 -116
  178. package/dist/index43.js.map +1 -1
  179. package/dist/index44.js +18 -10
  180. package/dist/index44.js.map +1 -1
  181. package/dist/index45.js +119 -35
  182. package/dist/index45.js.map +1 -1
  183. package/dist/index46.js +12 -115
  184. package/dist/index46.js.map +1 -1
  185. package/dist/index47.js +33 -174
  186. package/dist/index47.js.map +1 -1
  187. package/dist/index48.js +10 -147
  188. package/dist/index48.js.map +1 -1
  189. package/dist/index49.js +116 -12
  190. package/dist/index49.js.map +1 -1
  191. package/dist/index50.js +176 -22
  192. package/dist/index50.js.map +1 -1
  193. package/dist/index51.js +147 -14
  194. package/dist/index51.js.map +1 -1
  195. package/dist/index52.js +10 -5
  196. package/dist/index52.js.map +1 -1
  197. package/dist/index53.js +21 -265
  198. package/dist/index53.js.map +1 -1
  199. package/dist/index54.js +10 -13
  200. package/dist/index54.js.map +1 -1
  201. package/dist/index55.js +7 -122
  202. package/dist/index55.js.map +1 -1
  203. package/dist/index56.js +262 -106
  204. package/dist/index56.js.map +1 -1
  205. package/dist/index57.js +14 -167
  206. package/dist/index57.js.map +1 -1
  207. package/dist/index58.js +121 -31
  208. package/dist/index58.js.map +1 -1
  209. package/dist/index59.js +107 -119
  210. package/dist/index59.js.map +1 -1
  211. package/dist/index60.js +161 -77
  212. package/dist/index60.js.map +1 -1
  213. package/dist/index61.js +31 -19
  214. package/dist/index61.js.map +1 -1
  215. package/dist/index62.js +117 -69
  216. package/dist/index62.js.map +1 -1
  217. package/dist/index63.js +82 -53
  218. package/dist/index63.js.map +1 -1
  219. package/dist/index64.js +19 -44
  220. package/dist/index64.js.map +1 -1
  221. package/dist/index65.js +70 -48
  222. package/dist/index65.js.map +1 -1
  223. package/dist/index66.js +55 -60
  224. package/dist/index66.js.map +1 -1
  225. package/dist/index67.js +39 -101
  226. package/dist/index67.js.map +1 -1
  227. package/dist/index68.js +52 -41
  228. package/dist/index68.js.map +1 -1
  229. package/dist/index69.js +58 -64
  230. package/dist/index69.js.map +1 -1
  231. package/dist/index70.js +105 -19
  232. package/dist/index70.js.map +1 -1
  233. package/dist/index71.js +41 -46
  234. package/dist/index71.js.map +1 -1
  235. package/dist/index72.js +63 -129
  236. package/dist/index72.js.map +1 -1
  237. package/dist/index73.js +19 -50
  238. package/dist/index73.js.map +1 -1
  239. package/dist/index74.js +46 -22
  240. package/dist/index74.js.map +1 -1
  241. package/dist/index75.js +132 -29
  242. package/dist/index75.js.map +1 -1
  243. package/dist/index76.js +52 -22
  244. package/dist/index76.js.map +1 -1
  245. package/dist/index77.js +19 -326
  246. package/dist/index77.js.map +1 -1
  247. package/dist/index78.js +31 -56
  248. package/dist/index78.js.map +1 -1
  249. package/dist/index79.js +22 -40
  250. package/dist/index79.js.map +1 -1
  251. package/dist/index80.js +328 -22
  252. package/dist/index80.js.map +1 -1
  253. package/dist/index81.js +55 -94
  254. package/dist/index81.js.map +1 -1
  255. package/dist/index82.js +38 -128
  256. package/dist/index82.js.map +1 -1
  257. package/dist/index83.js +20 -158
  258. package/dist/index83.js.map +1 -1
  259. package/dist/index84.js +93 -63
  260. package/dist/index84.js.map +1 -1
  261. package/dist/index85.js +128 -33
  262. package/dist/index85.js.map +1 -1
  263. package/dist/index86.js +152 -225
  264. package/dist/index86.js.map +1 -1
  265. package/dist/index87.js +63 -32
  266. package/dist/index87.js.map +1 -1
  267. package/dist/index88.js +35 -210
  268. package/dist/index88.js.map +1 -1
  269. package/dist/index89.js +229 -208
  270. package/dist/index89.js.map +1 -1
  271. package/dist/index90.js +34 -295
  272. package/dist/index90.js.map +1 -1
  273. package/dist/index91.js +200 -168
  274. package/dist/index91.js.map +1 -1
  275. package/dist/index92.js +198 -243
  276. package/dist/index92.js.map +1 -1
  277. package/dist/index93.js +293 -12
  278. package/dist/index93.js.map +1 -1
  279. package/dist/index94.js +174 -29
  280. package/dist/index94.js.map +1 -1
  281. package/dist/index95.js +258 -6
  282. package/dist/index95.js.map +1 -1
  283. package/dist/index96.js +13 -13
  284. package/dist/index96.js.map +1 -1
  285. package/dist/index97.js +32 -45
  286. package/dist/index97.js.map +1 -1
  287. package/dist/index98.js +5 -12
  288. package/dist/index98.js.map +1 -1
  289. package/dist/index99.js +13 -14
  290. package/dist/index99.js.map +1 -1
  291. package/package.json +2 -1
  292. package/dist/index108.js +0 -10
  293. package/dist/index108.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ import { en, fr, MonthCalendarProps as BaseMonthCalendarProps, WeekCalendarProps as BaseWeekCalendarProps, CalendarEvent, CalendarLocale } from '@vinctus/calendar';
2
+ export type { CalendarEvent, CalendarLocale };
3
+ export { en, fr };
4
+ export interface MonthCalendarProps<T extends CalendarEvent = CalendarEvent> extends Omit<BaseMonthCalendarProps<T>, 'theme'> {
5
+ className?: string;
6
+ }
7
+ export interface WeekCalendarProps<T extends CalendarEvent = CalendarEvent> extends Omit<BaseWeekCalendarProps<T>, 'theme'> {
8
+ className?: string;
9
+ }
10
+ declare const MonthCalendar: {
11
+ <T extends CalendarEvent = CalendarEvent>({ className, ...props }: MonthCalendarProps<T>): import("react/jsx-runtime").JSX.Element;
12
+ displayName: string;
13
+ };
14
+ declare const WeekCalendar: {
15
+ <T extends CalendarEvent = CalendarEvent>({ className, ...props }: WeekCalendarProps<T>): import("react/jsx-runtime").JSX.Element;
16
+ displayName: string;
17
+ };
18
+ interface CalendarComponent {
19
+ Month: typeof MonthCalendar;
20
+ Week: typeof WeekCalendar;
21
+ }
22
+ export declare const Calendar: CalendarComponent;
23
+ export default Calendar;
@@ -1,9 +1,19 @@
1
1
  import { default as React } from 'react';
2
+ export interface CheckboxSwapConfig {
3
+ /** Content shown when checked */
4
+ on: React.ReactNode;
5
+ /** Content shown when unchecked */
6
+ off: React.ReactNode;
7
+ /** Animation effect for the swap transition */
8
+ effect?: 'rotate' | 'flip';
9
+ }
2
10
  export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
3
11
  children?: React.ReactNode;
4
12
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
13
  color?: 'primary' | 'secondary' | 'accent' | 'neutral' | 'success' | 'warning' | 'info' | 'error';
6
14
  indeterminate?: boolean;
15
+ /** Swap mode: toggle between two visual states instead of showing a checkbox */
16
+ swap?: CheckboxSwapConfig;
7
17
  className?: string;
8
18
  }
9
19
  export interface CheckboxOptionType {
@@ -0,0 +1,38 @@
1
+ import { default as React } from 'react';
2
+ export interface DockItemConfig {
3
+ /** Icon element */
4
+ icon: React.ReactNode;
5
+ /** Label text */
6
+ label?: string;
7
+ /** Whether this item is active */
8
+ active?: boolean;
9
+ /** Whether this item is disabled */
10
+ disabled?: boolean;
11
+ /** Click handler for this item */
12
+ onClick?: () => void;
13
+ }
14
+ export interface DockProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
15
+ /** Dock items configuration */
16
+ items?: DockItemConfig[];
17
+ /** Size variant */
18
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
19
+ /** Controlled active index */
20
+ activeIndex?: number;
21
+ /** Callback when an item is clicked */
22
+ onChange?: (index: number) => void;
23
+ /** Children (alternative to items prop) */
24
+ children?: React.ReactNode;
25
+ /** Additional CSS classes */
26
+ className?: string;
27
+ }
28
+ export interface DockItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
29
+ /** Whether this item is active */
30
+ active?: boolean;
31
+ /** Children (icon and optional label) */
32
+ children: React.ReactNode;
33
+ /** Additional CSS classes */
34
+ className?: string;
35
+ }
36
+ export declare const Dock: React.ForwardRefExoticComponent<DockProps & React.RefAttributes<HTMLDivElement>> & {
37
+ Item: React.ForwardRefExoticComponent<DockItemProps & React.RefAttributes<HTMLButtonElement>>;
38
+ };
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ export type MaskShape = 'squircle' | 'heart' | 'hexagon' | 'hexagon-2' | 'decagon' | 'pentagon' | 'diamond' | 'square' | 'circle' | 'star' | 'star-2' | 'triangle' | 'triangle-2' | 'triangle-3' | 'triangle-4';
3
+ export type MaskHalf = 'half-1' | 'half-2';
4
+ export interface MaskProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ /** Shape of the mask */
6
+ shape: MaskShape;
7
+ /** Show only half of the mask */
8
+ half?: MaskHalf;
9
+ /** Content to mask (typically an image) */
10
+ children: React.ReactNode;
11
+ /** Additional CSS classes */
12
+ className?: string;
13
+ }
14
+ export declare const Mask: React.ForwardRefExoticComponent<MaskProps & React.RefAttributes<HTMLDivElement>>;
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ .month-calendar{background-color:var(--calendar-bg-primary);display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;height:100%;width:100%}.month-calendar .month-calendar-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.month-calendar .month-calendar-month-display h2{font-size:18px;font-weight:500;margin:0}.month-calendar .month-calendar-weekday-header{border-bottom:1px solid var(--calendar-border-primary);display:grid;grid-template-columns:repeat(7,1fr)}.month-calendar .month-calendar-weekday-header .month-calendar-weekday-cell{color:var(--calendar-text-secondary);font-size:12px;font-weight:500;padding:4px 0;text-align:center;text-transform:uppercase}.month-calendar .month-calendar-grid{border-left:1px solid var(--calendar-border-primary);display:grid;flex:1;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr)}.month-calendar .month-calendar-cell{border-bottom:1px solid var(--calendar-border-primary);border-right:1px solid var(--calendar-border-primary);cursor:pointer;overflow:hidden;padding:4px;position:relative}.month-calendar .month-calendar-cell:hover{background-color:var(--calendar-bg-hover)}.month-calendar .month-calendar-cell .month-calendar-date-number-container{display:flex;justify-content:center;margin-bottom:2px}.month-calendar .month-calendar-cell .month-calendar-date-number{align-items:center;color:var(--calendar-text-primary);display:flex;font-size:12px;justify-content:center;line-height:1}.month-calendar .month-calendar-cell .month-calendar-events-container{display:flex;flex-direction:column}.month-calendar .month-calendar-other-month{background-color:var(--calendar-bg-secondary)}.month-calendar .month-calendar-other-month .month-calendar-date-number{color:var(--calendar-text-muted)}.month-calendar .month-calendar-past{opacity:.6}.month-calendar .month-calendar-past .month-calendar-date-number{color:var(--calendar-text-muted)}.month-calendar .month-calendar-past .month-calendar-event{opacity:.8}.month-calendar .month-calendar-past-non-interactive{cursor:not-allowed}.month-calendar .month-calendar-past-non-interactive .month-calendar-event{cursor:pointer}.month-calendar .month-calendar-today{background-color:var(--calendar-bg-today)}.month-calendar .month-calendar-today .month-calendar-today-number{color:var(--calendar-accent-primary);font-weight:700}.month-calendar .month-calendar-selected{outline:2px solid var(--calendar-accent-primary);z-index:1}.month-calendar .month-calendar-event{align-items:center;border-radius:3px;color:var(--calendar-text-event);cursor:pointer;display:flex;font-size:12px;line-height:1;overflow:hidden;padding:3px 4px;transition:background-color .1s ease;white-space:nowrap}.month-calendar .month-calendar-event:hover{background-color:var(--calendar-bg-event-hover)}.month-calendar .month-calendar-event .month-calendar-event-dot{border-radius:50%;display:inline-block;flex-shrink:0;height:8px;margin-right:6px;width:8px}.month-calendar .month-calendar-event .month-calendar-event-title{overflow:hidden;white-space:nowrap}.month-calendar .month-calendar-ellipsis{text-overflow:ellipsis}.month-calendar .month-calendar-cancelled-event{text-decoration:line-through}.month-calendar .month-calendar-future-event{color:var(--calendar-text-future-event)}.month-calendar .month-calendar-more-events{border-radius:3px;color:var(--calendar-text-secondary);cursor:pointer;font-size:11px}.month-calendar .month-calendar-more-events:hover{background-color:var(--calendar-bg-event-hover)}.calendar-light{--calendar-bg-primary:#fff;--calendar-bg-secondary:#f8f9fa;--calendar-bg-hover:#f8f9fa;--calendar-bg-today:#e8f0fe;--calendar-bg-time-label:#fafafa;--calendar-bg-day-hover:#f0f6ff;--calendar-bg-event-hover:rgba(0,0,0,.04);--calendar-border-primary:#e0e0e0;--calendar-border-secondary:#f0f0f0;--calendar-text-primary:#3c4043;--calendar-text-secondary:#70757a;--calendar-text-muted:#80868b;--calendar-text-time:#8c8c8c;--calendar-text-event:#000;--calendar-text-future-event:#3c4043;--calendar-accent-primary:#1a73e8;--calendar-scrollbar-track:#f1f1f1;--calendar-scrollbar-thumb:#c1c1c1;--calendar-scrollbar-thumb-hover:#a8a8a8}.calendar-dark{--calendar-bg-primary:#1f1f1f;--calendar-bg-secondary:#2a2a2a;--calendar-bg-hover:#2a2a2a;--calendar-bg-today:#1e3a5f;--calendar-bg-time-label:#1a1a1a;--calendar-bg-day-hover:#2a3f5f;--calendar-bg-event-hover:hsla(0,0%,100%,.08);--calendar-border-primary:#434343;--calendar-border-secondary:#383838;--calendar-text-primary:#e8e8e8;--calendar-text-secondary:#b8b8b8;--calendar-text-muted:grey;--calendar-text-time:#999;--calendar-text-event:#fff;--calendar-text-future-event:#d0d0d0;--calendar-accent-primary:#4a9eff;--calendar-scrollbar-track:#2a2a2a;--calendar-scrollbar-thumb:#4a4a4a;--calendar-scrollbar-thumb-hover:#5a5a5a}.week-calendar{display:flex;flex-direction:column;height:100%;overflow:hidden}.week-calendar,.week-calendar .week-calendar-header{background:var(--calendar-bg-primary);border-bottom:1px solid var(--calendar-border-secondary)}.week-calendar .week-calendar-header{display:grid;grid-template-columns:80px repeat(7,1fr)}.week-calendar .week-calendar-day-header{cursor:pointer;padding:2px 8px;text-align:center;transition:background-color .2s}.week-calendar .week-calendar-day-header:hover{background-color:var(--calendar-bg-day-hover)}.week-calendar .week-calendar-day-header.week-calendar-day-header-past-non-interactive{cursor:not-allowed}.week-calendar .week-calendar-day-name{color:var(--calendar-text-secondary);font-size:12px;font-weight:500;margin-bottom:0;text-transform:uppercase}.week-calendar .week-calendar-day-name.week-calendar-day-name-past{color:var(--calendar-text-muted)}.week-calendar .week-calendar-day-number{align-items:center;color:var(--calendar-text-primary);display:flex;font-size:12px;font-weight:500;justify-content:center;margin:0 auto;transition:all .2s}.week-calendar .week-calendar-day-number.week-calendar-day-number-today{color:var(--calendar-accent-primary);font-weight:700}.week-calendar .week-calendar-day-number.week-calendar-day-number-past{color:var(--calendar-text-muted)}.week-calendar .week-calendar-body{flex:1;overflow-y:auto}.week-calendar .week-calendar-time-row{border-bottom:1px solid var(--calendar-border-secondary);display:grid;grid-template-columns:80px repeat(7,1fr);height:80px}.week-calendar .week-calendar-time-row:last-child{border-bottom:none}.week-calendar .week-calendar-time-label{align-items:flex-start;background:var(--calendar-bg-time-label);border-left:1px solid var(--calendar-border-secondary);border-right:1px solid var(--calendar-border-secondary);color:var(--calendar-text-time);display:flex;font-size:12px;justify-content:flex-end;padding:4px 8px 8px;text-align:right}.week-calendar .week-calendar-time-cell{border-right:1px solid var(--calendar-border-secondary);cursor:pointer;display:flex;flex-direction:column;height:80px;justify-content:flex-start;overflow-y:auto;padding:4px 2px;position:relative}.week-calendar .week-calendar-time-cell:last-child{border-right:none}.week-calendar .week-calendar-time-cell:hover{background-color:var(--calendar-bg-day-hover)}.week-calendar .week-calendar-time-cell.week-calendar-time-cell-non-interactive{cursor:not-allowed}.week-calendar .week-calendar-time-cell.week-calendar-time-cell-non-interactive:hover{background-color:var(--calendar-bg-day-hover);cursor:not-allowed}.week-calendar .week-calendar-time-cell.week-calendar-time-cell-non-interactive .week-calendar-event{cursor:pointer}.week-calendar .week-calendar-event{align-items:center;border-radius:3px;color:var(--calendar-text-event);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;line-height:1;margin-bottom:1px;overflow:hidden;padding:3px 4px;transition:background-color .1s ease;white-space:nowrap}.week-calendar .week-calendar-event:hover{background-color:var(--calendar-bg-event-hover)}.week-calendar .week-calendar-event:last-child{margin-bottom:0}.week-calendar .week-calendar-event.week-calendar-event-cancelled{text-decoration:line-through}.week-calendar .week-calendar-event.week-calendar-event-future{color:var(--calendar-text-primary)}.week-calendar .week-calendar-event-dot{border-radius:50%;display:inline-block;flex-shrink:0;height:8px;margin-right:6px;width:8px}.week-calendar .week-calendar-event-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-calendar-body::-webkit-scrollbar{width:8px}.week-calendar-body::-webkit-scrollbar-track{background:var(--calendar-scrollbar-track)}.week-calendar-body::-webkit-scrollbar-thumb{background:var(--calendar-scrollbar-thumb);border-radius:4px}.week-calendar-body::-webkit-scrollbar-thumb:hover{background:var(--calendar-scrollbar-thumb-hover)}@media(max-width:768px){.week-calendar .week-calendar-time-column{width:60px}.week-calendar .week-calendar-header,.week-calendar .week-calendar-time-row{grid-template-columns:60px repeat(7,1fr)}.week-calendar .week-calendar-time-label{font-size:10px;padding:4px}.week-calendar .week-calendar-day-name,.week-calendar .week-calendar-day-number{font-size:10px}.week-calendar .week-calendar-event{font-size:10px;padding:2px 4px}}
package/dist/index.d.ts CHANGED
@@ -15,11 +15,14 @@ export type { BreadcrumbProps, BreadcrumbItemProps } from './components/Breadcru
15
15
  export { Button } from './components/Button';
16
16
  export type { ButtonProps } from './components/Button';
17
17
  export { Checkbox } from './components/Checkbox';
18
- export type { CheckboxProps, CheckboxGroupProps, CheckboxOptionType } from './components/Checkbox';
18
+ export type { CheckboxProps, CheckboxGroupProps, CheckboxOptionType, CheckboxSwapConfig } from './components/Checkbox';
19
19
  export { Chat } from './components/Chat';
20
20
  export type { ChatProps } from './components/Chat';
21
21
  export { ColorPicker } from './components/ColorPicker';
22
22
  export type { ColorPickerProps } from './components/ColorPicker';
23
+ export { Calendar } from './components/Calendar';
24
+ export type { MonthCalendarProps, WeekCalendarProps, CalendarEvent, CalendarLocale } from './components/Calendar';
25
+ export { en as calendarEn, fr as calendarFr } from './components/Calendar';
23
26
  export { Card } from './components/Card';
24
27
  export type { CardProps, CardGridProps } from './components/Card';
25
28
  export { Cascader } from './components/Cascader';
@@ -42,6 +45,8 @@ export { Descriptions } from './components/Descriptions';
42
45
  export type { DescriptionsProps, DescriptionsItemProps, DescriptionsSize, DescriptionsLayout } from './components/Descriptions';
43
46
  export { Diff } from './components/Diff';
44
47
  export type { DiffProps } from './components/Diff';
48
+ export { Dock } from './components/Dock';
49
+ export type { DockProps, DockItemProps, DockItemConfig } from './components/Dock';
45
50
  export { Divider } from './components/Divider';
46
51
  export type { DividerProps } from './components/Divider';
47
52
  export { Drawer } from './components/Drawer';
@@ -86,6 +91,8 @@ export { List } from './components/List';
86
91
  export type { ListProps, ListRowProps } from './components/List';
87
92
  export { Loading } from './components/Loading';
88
93
  export type { LoadingProps } from './components/Loading';
94
+ export { Mask } from './components/Mask';
95
+ export type { MaskProps, MaskShape, MaskHalf } from './components/Mask';
89
96
  export { Masonry } from './components/Masonry';
90
97
  export type { MasonryProps } from './components/Masonry';
91
98
  export { Mention } from './components/Mention';
package/dist/index.js CHANGED
@@ -2,214 +2,223 @@ import { Affix as e } from "./index2.js";
2
2
  import { Anchor as p } from "./index3.js";
3
3
  import { Alert as f } from "./index4.js";
4
4
  import { Autocomplete as a } from "./index5.js";
5
- import { Avatar as n, AvatarGroup as s } from "./index6.js";
6
- import { Badge as l } from "./index7.js";
5
+ import { Avatar as s, AvatarGroup as i } from "./index6.js";
6
+ import { Badge as u } from "./index7.js";
7
7
  import { Breadcrumb as c } from "./index8.js";
8
8
  import { Button as T } from "./index9.js";
9
9
  import { Checkbox as P } from "./index10.js";
10
10
  import { Chat as b } from "./index11.js";
11
11
  import { ColorPicker as h } from "./index12.js";
12
- import { Card as y } from "./index13.js";
13
- import { Cascader as R } from "./index14.js";
14
- import { Chart as F } from "./index15.js";
15
- import { Carousel as A } from "./index16.js";
16
- import { Collapse as L } from "./index17.js";
17
- import { Container as H } from "./index18.js";
18
- import { ContextMenu as G } from "./index19.js";
19
- import { Countdown as O } from "./index20.js";
20
- import { DatePicker as z } from "./index21.js";
21
- import { Descriptions as J } from "./index22.js";
22
- import { Diff as U } from "./index23.js";
23
- import { Divider as q } from "./index24.js";
24
- import { Drawer as X } from "./index25.js";
25
- import { Fieldset as Z } from "./index26.js";
26
- import { FileInput as $ } from "./index27.js";
27
- import { Flex as ro } from "./index28.js";
28
- import { FloatButton as to } from "./index29.js";
29
- import { Footer as mo } from "./index30.js";
30
- import { Form as xo, useFormInstance as ao } from "./index31.js";
31
- import { Col as no, Grid as so, Row as uo } from "./index32.js";
32
- import { Hero as co } from "./index33.js";
33
- import { Image as To } from "./index34.js";
34
- import { Indicator as Po } from "./index35.js";
35
- import { Dropdown as bo } from "./index36.js";
36
- import { Empty as ho } from "./index37.js";
37
- import { Input as yo } from "./index38.js";
38
- import { InputNumber as Ro } from "./index39.js";
39
- import { Join as Fo } from "./index40.js";
40
- import { Kbd as Ao } from "./index41.js";
41
- import { Label as Lo } from "./index42.js";
42
- import { Layout as Ho, useSiderContext as Ko } from "./index43.js";
43
- import { List as No } from "./index44.js";
44
- import { Loading as Wo } from "./index45.js";
45
- import { Masonry as Eo } from "./index46.js";
46
- import { Mention as Qo } from "./index47.js";
47
- import { Menu as jo } from "./index48.js";
48
- import { Browser as Vo } from "./index49.js";
49
- import { Code as Yo } from "./index50.js";
50
- import { Phone as _o } from "./index51.js";
51
- import { Window as or } from "./index52.js";
52
- import { Modal as er } from "./index53.js";
53
- import { Navbar as pr } from "./index54.js";
54
- import { notification as fr } from "./index55.js";
55
- import { OTPInput as ar } from "./index56.js";
56
- import { Pagination as nr } from "./index57.js";
57
- import { PageLayout as ur } from "./index58.js";
58
- import { Popconfirm as dr } from "./index59.js";
59
- import { Popover as Cr } from "./index60.js";
60
- import { Progress as gr } from "./index61.js";
61
- import { QRCode as Sr } from "./index62.js";
62
- import { Radio as kr } from "./index63.js";
63
- import { RadialProgress as wr } from "./index64.js";
64
- import { Range as Dr } from "./index65.js";
65
- import { Rating as vr } from "./index66.js";
66
- import { Result as Ir } from "./index67.js";
67
- import { Select as Br } from "./index68.js";
68
- import { Segmented as Mr } from "./index69.js";
69
- import { Skeleton as Kr } from "./index70.js";
70
- import { Space as Nr } from "./index71.js";
71
- import { Splitter as Wr } from "./index72.js";
72
- import { Stack as Er } from "./index73.js";
73
- import { Stats as Qr } from "./index74.js";
74
- import { Status as jr } from "./index75.js";
75
- import { Steps as Vr } from "./index76.js";
76
- import { Table as Yr } from "./index77.js";
77
- import { Tabs as _r } from "./index78.js";
78
- import { Textarea as oe } from "./index79.js";
79
- import { TextRotate as ee } from "./index80.js";
80
- import { CheckableTag as pe, Tag as me } from "./index81.js";
81
- import { ThemeController as xe } from "./index82.js";
82
- import { TimePicker as ie } from "./index83.js";
83
- import { Timeline as se } from "./index84.js";
84
- import { Toggle as le } from "./index85.js";
85
- import { Tour as ce } from "./index86.js";
86
- import { Tooltip as Te } from "./index87.js";
87
- import { Transfer as Pe } from "./index88.js";
88
- import { Tree as be } from "./index89.js";
89
- import { TreeSelect as he } from "./index90.js";
90
- import { Typography as ye } from "./index91.js";
91
- import { Upload as Re } from "./index92.js";
92
- import { Hide as Fe, Show as Ie } from "./index93.js";
93
- import { useBreakpoint as Be } from "./index94.js";
94
- import { useDisclosure as Me } from "./index95.js";
95
- import { useClipboard as Ke } from "./index96.js";
96
- import { useLocalStorage as Ne } from "./index97.js";
97
- import { useDebounce as We } from "./index98.js";
98
- import { useClickOutside as Ee } from "./index99.js";
99
- import { usePrevious as Qe } from "./index100.js";
100
- import { useHover as je } from "./index101.js";
101
- import { useKeyPress as Ve, useKeyPressCallback as Xe } from "./index102.js";
102
- import { useWindowSize as Ze } from "./index103.js";
12
+ import { Calendar as w } from "./index13.js";
13
+ import { Card as F } from "./index14.js";
14
+ import { Cascader as v } from "./index15.js";
15
+ import { Chart as A } from "./index16.js";
16
+ import { Carousel as L } from "./index17.js";
17
+ import { Collapse as H } from "./index18.js";
18
+ import { Container as E } from "./index19.js";
19
+ import { ContextMenu as N } from "./index20.js";
20
+ import { Countdown as W } from "./index21.js";
21
+ import { DatePicker as J } from "./index22.js";
22
+ import { Descriptions as U } from "./index23.js";
23
+ import { Diff as q } from "./index24.js";
24
+ import { Dock as X } from "./index25.js";
25
+ import { Divider as Z } from "./index26.js";
26
+ import { Drawer as $ } from "./index27.js";
27
+ import { Fieldset as ro } from "./index28.js";
28
+ import { FileInput as to } from "./index29.js";
29
+ import { Flex as mo } from "./index30.js";
30
+ import { FloatButton as xo } from "./index31.js";
31
+ import { Footer as no } from "./index32.js";
32
+ import { Form as io, useFormInstance as lo } from "./index33.js";
33
+ import { Col as co, Grid as Co, Row as To } from "./index34.js";
34
+ import { Hero as Po } from "./index35.js";
35
+ import { Image as bo } from "./index36.js";
36
+ import { Indicator as ho } from "./index37.js";
37
+ import { Dropdown as wo } from "./index38.js";
38
+ import { Empty as Fo } from "./index39.js";
39
+ import { Input as vo } from "./index40.js";
40
+ import { InputNumber as Ao } from "./index41.js";
41
+ import { Join as Lo } from "./index42.js";
42
+ import { Kbd as Ho } from "./index43.js";
43
+ import { Label as Eo } from "./index44.js";
44
+ import { Layout as No, useSiderContext as Oo } from "./index45.js";
45
+ import { List as zo } from "./index46.js";
46
+ import { Loading as Qo } from "./index47.js";
47
+ import { Mask as jo } from "./index48.js";
48
+ import { Masonry as Vo } from "./index49.js";
49
+ import { Mention as Yo } from "./index50.js";
50
+ import { Menu as _o } from "./index51.js";
51
+ import { Browser as or } from "./index52.js";
52
+ import { Code as er } from "./index53.js";
53
+ import { Phone as pr } from "./index54.js";
54
+ import { Window as fr } from "./index55.js";
55
+ import { Modal as ar } from "./index56.js";
56
+ import { Navbar as sr } from "./index57.js";
57
+ import { notification as lr } from "./index58.js";
58
+ import { OTPInput as dr } from "./index59.js";
59
+ import { Pagination as Cr } from "./index60.js";
60
+ import { PageLayout as gr } from "./index61.js";
61
+ import { Popconfirm as Sr } from "./index62.js";
62
+ import { Popover as kr } from "./index63.js";
63
+ import { Progress as Dr } from "./index64.js";
64
+ import { QRCode as yr } from "./index65.js";
65
+ import { Radio as Rr } from "./index66.js";
66
+ import { RadialProgress as Ir } from "./index67.js";
67
+ import { Range as Br } from "./index68.js";
68
+ import { Rating as Mr } from "./index69.js";
69
+ import { Result as Kr } from "./index70.js";
70
+ import { Select as Gr } from "./index71.js";
71
+ import { Segmented as Or } from "./index72.js";
72
+ import { Skeleton as zr } from "./index73.js";
73
+ import { Space as Qr } from "./index74.js";
74
+ import { Splitter as jr } from "./index75.js";
75
+ import { Stack as Vr } from "./index76.js";
76
+ import { Stats as Yr } from "./index77.js";
77
+ import { Status as _r } from "./index78.js";
78
+ import { Steps as oe } from "./index79.js";
79
+ import { Table as ee } from "./index80.js";
80
+ import { Tabs as pe } from "./index81.js";
81
+ import { Textarea as fe } from "./index82.js";
82
+ import { TextRotate as ae } from "./index83.js";
83
+ import { CheckableTag as se, Tag as ie } from "./index84.js";
84
+ import { ThemeController as ue } from "./index85.js";
85
+ import { TimePicker as ce } from "./index86.js";
86
+ import { Timeline as Te } from "./index87.js";
87
+ import { Toggle as Pe } from "./index88.js";
88
+ import { Tour as be } from "./index89.js";
89
+ import { Tooltip as he } from "./index90.js";
90
+ import { Transfer as we } from "./index91.js";
91
+ import { Tree as Fe } from "./index92.js";
92
+ import { TreeSelect as ve } from "./index93.js";
93
+ import { Typography as Ae } from "./index94.js";
94
+ import { Upload as Le } from "./index95.js";
95
+ import { Hide as He, Show as Ke } from "./index96.js";
96
+ import { useBreakpoint as Ge } from "./index97.js";
97
+ import { useDisclosure as Oe } from "./index98.js";
98
+ import { useClipboard as ze } from "./index99.js";
99
+ import { useLocalStorage as Qe } from "./index100.js";
100
+ import { useDebounce as je } from "./index101.js";
101
+ import { useClickOutside as Ve } from "./index102.js";
102
+ import { usePrevious as Ye } from "./index103.js";
103
+ import { useHover as _e } from "./index104.js";
104
+ import { useKeyPress as ot, useKeyPressCallback as rt } from "./index105.js";
105
+ import { useWindowSize as tt } from "./index106.js";
106
+ import { en as mt, fr as ft } from "./index107.js";
103
107
  export {
104
108
  e as Affix,
105
109
  f as Alert,
106
110
  p as Anchor,
107
111
  a as Autocomplete,
108
- n as Avatar,
109
- s as AvatarGroup,
110
- l as Badge,
112
+ s as Avatar,
113
+ i as AvatarGroup,
114
+ u as Badge,
111
115
  c as Breadcrumb,
112
- Vo as Browser,
116
+ or as Browser,
113
117
  T as Button,
114
- y as Card,
115
- A as Carousel,
116
- R as Cascader,
117
- F as Chart,
118
+ w as Calendar,
119
+ F as Card,
120
+ L as Carousel,
121
+ v as Cascader,
122
+ A as Chart,
118
123
  b as Chat,
119
- pe as CheckableTag,
124
+ se as CheckableTag,
120
125
  P as Checkbox,
121
- Yo as Code,
122
- no as Col,
123
- L as Collapse,
126
+ er as Code,
127
+ co as Col,
128
+ H as Collapse,
124
129
  h as ColorPicker,
125
- H as Container,
126
- G as ContextMenu,
127
- O as Countdown,
128
- z as DatePicker,
129
- J as Descriptions,
130
- U as Diff,
131
- q as Divider,
132
- X as Drawer,
133
- bo as Dropdown,
134
- ho as Empty,
135
- Z as Fieldset,
136
- $ as FileInput,
137
- ro as Flex,
138
- to as FloatButton,
139
- mo as Footer,
140
- xo as Form,
141
- so as Grid,
142
- co as Hero,
143
- Fe as Hide,
144
- To as Image,
145
- Po as Indicator,
146
- yo as Input,
147
- Ro as InputNumber,
148
- Fo as Join,
149
- Ao as Kbd,
150
- Lo as Label,
151
- Ho as Layout,
152
- No as List,
153
- Wo as Loading,
154
- Eo as Masonry,
155
- Qo as Mention,
156
- jo as Menu,
157
- er as Modal,
158
- pr as Navbar,
159
- ar as OTPInput,
160
- ur as PageLayout,
161
- nr as Pagination,
162
- _o as Phone,
163
- dr as Popconfirm,
164
- Cr as Popover,
165
- gr as Progress,
166
- Sr as QRCode,
167
- wr as RadialProgress,
168
- kr as Radio,
169
- Dr as Range,
170
- vr as Rating,
171
- Ir as Result,
172
- uo as Row,
173
- Mr as Segmented,
174
- Br as Select,
175
- Ie as Show,
176
- Kr as Skeleton,
177
- Nr as Space,
178
- Wr as Splitter,
179
- Er as Stack,
180
- Qr as Stats,
181
- jr as Status,
182
- Vr as Steps,
183
- Yr as Table,
184
- _r as Tabs,
185
- me as Tag,
186
- ee as TextRotate,
187
- oe as Textarea,
188
- xe as ThemeController,
189
- ie as TimePicker,
190
- se as Timeline,
191
- le as Toggle,
192
- Te as Tooltip,
193
- ce as Tour,
194
- Pe as Transfer,
195
- be as Tree,
196
- he as TreeSelect,
197
- ye as Typography,
198
- Re as Upload,
199
- or as Window,
200
- fr as notification,
201
- Be as useBreakpoint,
202
- Ee as useClickOutside,
203
- Ke as useClipboard,
204
- We as useDebounce,
205
- Me as useDisclosure,
206
- ao as useFormInstance,
207
- je as useHover,
208
- Ve as useKeyPress,
209
- Xe as useKeyPressCallback,
210
- Ne as useLocalStorage,
211
- Qe as usePrevious,
212
- Ko as useSiderContext,
213
- Ze as useWindowSize
130
+ E as Container,
131
+ N as ContextMenu,
132
+ W as Countdown,
133
+ J as DatePicker,
134
+ U as Descriptions,
135
+ q as Diff,
136
+ Z as Divider,
137
+ X as Dock,
138
+ $ as Drawer,
139
+ wo as Dropdown,
140
+ Fo as Empty,
141
+ ro as Fieldset,
142
+ to as FileInput,
143
+ mo as Flex,
144
+ xo as FloatButton,
145
+ no as Footer,
146
+ io as Form,
147
+ Co as Grid,
148
+ Po as Hero,
149
+ He as Hide,
150
+ bo as Image,
151
+ ho as Indicator,
152
+ vo as Input,
153
+ Ao as InputNumber,
154
+ Lo as Join,
155
+ Ho as Kbd,
156
+ Eo as Label,
157
+ No as Layout,
158
+ zo as List,
159
+ Qo as Loading,
160
+ jo as Mask,
161
+ Vo as Masonry,
162
+ Yo as Mention,
163
+ _o as Menu,
164
+ ar as Modal,
165
+ sr as Navbar,
166
+ dr as OTPInput,
167
+ gr as PageLayout,
168
+ Cr as Pagination,
169
+ pr as Phone,
170
+ Sr as Popconfirm,
171
+ kr as Popover,
172
+ Dr as Progress,
173
+ yr as QRCode,
174
+ Ir as RadialProgress,
175
+ Rr as Radio,
176
+ Br as Range,
177
+ Mr as Rating,
178
+ Kr as Result,
179
+ To as Row,
180
+ Or as Segmented,
181
+ Gr as Select,
182
+ Ke as Show,
183
+ zr as Skeleton,
184
+ Qr as Space,
185
+ jr as Splitter,
186
+ Vr as Stack,
187
+ Yr as Stats,
188
+ _r as Status,
189
+ oe as Steps,
190
+ ee as Table,
191
+ pe as Tabs,
192
+ ie as Tag,
193
+ ae as TextRotate,
194
+ fe as Textarea,
195
+ ue as ThemeController,
196
+ ce as TimePicker,
197
+ Te as Timeline,
198
+ Pe as Toggle,
199
+ he as Tooltip,
200
+ be as Tour,
201
+ we as Transfer,
202
+ Fe as Tree,
203
+ ve as TreeSelect,
204
+ Ae as Typography,
205
+ Le as Upload,
206
+ fr as Window,
207
+ mt as calendarEn,
208
+ ft as calendarFr,
209
+ lr as notification,
210
+ Ge as useBreakpoint,
211
+ Ve as useClickOutside,
212
+ ze as useClipboard,
213
+ je as useDebounce,
214
+ Oe as useDisclosure,
215
+ lo as useFormInstance,
216
+ _e as useHover,
217
+ ot as useKeyPress,
218
+ rt as useKeyPressCallback,
219
+ Qe as useLocalStorage,
220
+ Ye as usePrevious,
221
+ Oo as useSiderContext,
222
+ tt as useWindowSize
214
223
  };
215
224
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}