mado-ui 0.5.4 → 0.5.5

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 (83) hide show
  1. package/css/index.css +189 -1
  2. package/dist/components/form/index.d.ts +1 -0
  3. package/dist/components/form/index.d.ts.map +1 -1
  4. package/dist/components/form/input/date/index.d.ts +36 -16
  5. package/dist/components/form/input/date/index.d.ts.map +1 -1
  6. package/dist/components/form/input/date/views/calendar-view.d.ts +2 -0
  7. package/dist/components/form/input/date/views/calendar-view.d.ts.map +1 -0
  8. package/dist/components/form/input/date/views/clock-view.d.ts +2 -0
  9. package/dist/components/form/input/date/views/clock-view.d.ts.map +1 -0
  10. package/dist/components/form/input/date/views/dropdown-view.d.ts +2 -0
  11. package/dist/components/form/input/date/views/dropdown-view.d.ts.map +1 -0
  12. package/dist/components/form/input/date/views/index.d.ts +5 -0
  13. package/dist/components/form/input/date/views/index.d.ts.map +1 -0
  14. package/dist/components/form/input/date/views/rotary-view.d.ts +2 -0
  15. package/dist/components/form/input/date/views/rotary-view.d.ts.map +1 -0
  16. package/dist/components/form/input/date/views/view-handler.d.ts +21 -0
  17. package/dist/components/form/input/date/views/view-handler.d.ts.map +1 -0
  18. package/dist/components/form/input/index.d.ts +4 -87
  19. package/dist/components/form/input/index.d.ts.map +1 -1
  20. package/dist/components/form/input/input-types.d.ts +102 -0
  21. package/dist/components/form/input/input-types.d.ts.map +1 -0
  22. package/dist/components/form/input/number-input.d.ts +4 -0
  23. package/dist/components/form/input/number-input.d.ts.map +1 -0
  24. package/dist/components/form/input/text-input.d.ts +36 -0
  25. package/dist/components/form/input/text-input.d.ts.map +1 -0
  26. package/dist/components/form/select.d.ts +41 -0
  27. package/dist/components/form/select.d.ts.map +1 -0
  28. package/dist/components.d.ts +161 -62
  29. package/dist/components.esm.js +482 -183
  30. package/dist/components.esm.js.map +1 -1
  31. package/dist/components.js +481 -181
  32. package/dist/components.js.map +1 -1
  33. package/dist/graphics/index.d.ts +2 -0
  34. package/dist/graphics/index.d.ts.map +1 -0
  35. package/dist/graphics/social-media/facebook-logo.d.ts +33 -0
  36. package/dist/graphics/social-media/facebook-logo.d.ts.map +1 -0
  37. package/dist/graphics/social-media/google-logo.d.ts +13 -0
  38. package/dist/graphics/social-media/google-logo.d.ts.map +1 -0
  39. package/dist/graphics/social-media/index.d.ts +8 -0
  40. package/dist/graphics/social-media/index.d.ts.map +1 -0
  41. package/dist/graphics/social-media/instagram-logo.d.ts +13 -0
  42. package/dist/graphics/social-media/instagram-logo.d.ts.map +1 -0
  43. package/dist/graphics/social-media/linkedin-logo.d.ts +26 -0
  44. package/dist/graphics/social-media/linkedin-logo.d.ts.map +1 -0
  45. package/dist/graphics/social-media/tiktok-logo.d.ts +26 -0
  46. package/dist/graphics/social-media/tiktok-logo.d.ts.map +1 -0
  47. package/dist/graphics/social-media/x-logo.d.ts +6 -0
  48. package/dist/graphics/social-media/x-logo.d.ts.map +1 -0
  49. package/dist/graphics/social-media/youtube-logo.d.ts +26 -0
  50. package/dist/graphics/social-media/youtube-logo.d.ts.map +1 -0
  51. package/dist/graphics.d.ts +141 -0
  52. package/dist/graphics.d.ts.map +1 -0
  53. package/dist/graphics.esm.js +241 -0
  54. package/dist/graphics.esm.js.map +1 -0
  55. package/dist/graphics.js +249 -0
  56. package/dist/graphics.js.map +1 -0
  57. package/dist/hooks/use-fieldset-context.d.ts.map +1 -1
  58. package/dist/hooks/use-form-context.d.ts +5 -5
  59. package/dist/hooks/use-form-context.d.ts.map +1 -1
  60. package/dist/hooks.d.ts +5 -5
  61. package/dist/hooks.esm.js.map +1 -1
  62. package/dist/hooks.js.map +1 -1
  63. package/dist/index.d.ts +161 -62
  64. package/dist/index.esm.js +482 -183
  65. package/dist/index.esm.js.map +1 -1
  66. package/dist/index.js +481 -181
  67. package/dist/index.js.map +1 -1
  68. package/dist/utils/get-date.d.ts +32 -20
  69. package/dist/utils/get-date.d.ts.map +1 -1
  70. package/dist/utils/string-manipulation.d.ts +23 -1
  71. package/dist/utils/string-manipulation.d.ts.map +1 -1
  72. package/dist/utils.d.ts +57 -23
  73. package/dist/utils.esm.js +1139 -57
  74. package/dist/utils.esm.js.map +1 -1
  75. package/dist/utils.js +1145 -58
  76. package/dist/utils.js.map +1 -1
  77. package/package.json +100 -96
  78. package/dist/components/mado-ui-provider.d.ts +0 -1
  79. package/dist/hooks/use-anime-scope.d.ts +0 -15
  80. package/dist/types.esm.js +0 -2
  81. package/dist/types.esm.js.map +0 -1
  82. package/dist/types.js +0 -3
  83. package/dist/types.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Url, UrlObject } from 'node:url';
3
- import { ElementType, ComponentPropsWithRef, ReactElement, ReactNode, HTMLInputTypeAttribute, RefObject, FormEvent, FormEventHandler, HTMLAttributes } from 'react';
4
- import { Button as Button$1, DisclosurePanelProps, DisclosureProps, DisclosureButtonProps, MenuButtonProps, MenuItemProps, MenuItemsProps, MenuProps, MenuSectionProps, MenuHeadingProps, MenuSeparatorProps, FieldsetProps as FieldsetProps$1, LegendProps, InputProps as InputProps$1, DescriptionProps, FieldProps, LabelProps, TextareaProps as TextareaProps$1, DialogTitleProps } from '@headlessui/react';
3
+ import { ElementType, ComponentPropsWithRef, ReactElement, ReactNode, RefObject, FormEvent, FormEventHandler, HTMLAttributes } from 'react';
4
+ import { Button as Button$1, DisclosurePanelProps, DisclosureProps, DisclosureButtonProps, MenuButtonProps, MenuItemProps, MenuItemsProps, MenuProps, MenuSectionProps, MenuHeadingProps, MenuSeparatorProps, FieldsetProps as FieldsetProps$1, LegendProps, InputProps as InputProps$1, DescriptionProps, FieldProps, LabelProps, ListboxProps, ListboxSelectedOptionProps, TextareaProps as TextareaProps$1, DialogTitleProps } from '@headlessui/react';
5
5
  import { Placement } from '@floating-ui/react-dom';
6
6
 
7
7
  type AnyElementProps<TTag extends ElementType, Props extends {
@@ -243,7 +243,7 @@ type DetailsBodyProps<TTag extends ElementType = 'div'> = Omit<DisclosurePanelPr
243
243
  type DetailsProps<TTag extends ElementType = 'div'> = Omit<DisclosureProps<TTag>, 'className' | 'role'> & {
244
244
  className?: string;
245
245
  };
246
- type DetailsSummaryProps<TTag extends ElementType = typeof Button<typeof HeadlessButton>> = Omit<DisclosureButtonProps<TTag>, 'as' | 'className' | 'role'> & {
246
+ type DetailsSummaryProps<TTag extends ElementType = typeof Button<typeof Button$1>> = Omit<DisclosureButtonProps<TTag>, 'as' | 'className' | 'role'> & {
247
247
  arrow?: boolean | ReactNode;
248
248
  className?: string;
249
249
  };
@@ -284,8 +284,6 @@ declare function DropDown(props: DropDownProps): ReactElement;
284
284
  type StringField = {
285
285
  type: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url';
286
286
  value: string;
287
- required?: boolean;
288
- invalid?: boolean;
289
287
  };
290
288
  type ObjectField = {
291
289
  type: 'object';
@@ -293,12 +291,14 @@ type ObjectField = {
293
291
  };
294
292
  type ArrayField = {
295
293
  type: 'array';
296
- of: ArrayObjectOrNormalField;
294
+ of: ArrayObjectOrNormalField[];
297
295
  };
298
296
  type ArrayObjectOrNormalField = StringField | ArrayField | ObjectField;
299
- type Field = ArrayObjectOrNormalField & {
297
+ type Field<T extends StringField | ArrayField | ObjectField = ArrayObjectOrNormalField> = T & {
300
298
  id: string;
301
299
  name: string;
300
+ required?: boolean;
301
+ invalid?: boolean;
302
302
  };
303
303
  type FormContext = Field[];
304
304
 
@@ -357,6 +357,8 @@ type SecondNumber = MinuteNumber;
357
357
  type WeekNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53;
358
358
 
359
359
  type DateMinMax = Date | [number, DateTimeObject['month'], DateTimeObject['day']] | Pick<DateTimeObject, 'day' | 'month' | 'year'>;
360
+ type DateOrTimeSelectorType = 'dropdown' | 'rotary';
361
+ type DateSelectorType = DateOrTimeSelectorType | 'calendar';
360
362
  type DateTimeMinMax = Date | [
361
363
  number,
362
364
  DateTimeObject['month'],
@@ -365,61 +367,27 @@ type DateTimeMinMax = Date | [
365
367
  DateTimeObject['minute'],
366
368
  DateTimeObject['second']
367
369
  ] | DateTimeObject;
368
- type TimeMinMax = [DateTimeObject['hour'], DateTimeObject['minute'], DateTimeObject['second']] | Pick<DateTimeObject, 'hour' | 'minute' | 'second'>;
369
- type WeekMinMax = [number, WeekNumber];
370
- type InputType = OneOf<[
371
- {
372
- type?: 'date';
373
- min?: DateMinMax;
374
- max?: DateMinMax;
375
- },
376
- {
377
- type?: 'datetime' | 'datetime-local';
378
- min?: DateTimeMinMax;
379
- max?: DateTimeMinMax;
380
- },
381
- {
382
- type?: 'number';
383
- max?: number;
384
- min?: number;
385
- },
386
- {
387
- type?: 'password';
388
- options?: Partial<PasswordOptions>;
389
- },
390
- {
391
- type?: 'tel';
392
- options?: Partial<PhoneOptions>;
393
- },
394
- {
395
- type?: 'time';
396
- min?: TimeMinMax;
397
- max?: TimeMinMax;
398
- },
399
- {
400
- type?: 'week';
401
- min?: WeekMinMax;
402
- max?: WeekMinMax;
403
- },
404
- {
405
- type?: Exclude<HTMLInputTypeAttribute, 'date' | 'datetime' | 'datetime-local' | 'number' | 'password' | 'tel' | 'time' | 'week'>;
406
- }
407
- ]>;
408
- type InputProps = Omit<InputProps$1, 'max' | 'min' | 'name' | 'type'> & InputType & {
409
- description?: ReactNode;
410
- descriptionProps?: Omit<DescriptionProps, 'children'> & {
411
- /** @deprecated Use the `description` prop instead. */
412
- children?: never;
370
+ type DateTimeUIOption = {
371
+ date: DateSelectorType | DateSelectorType[] | {
372
+ desktop: DateSelectorType | DateSelectorType[];
373
+ mobile: DateSelectorType | DateSelectorType[];
413
374
  };
414
- fieldProps?: Omit<FieldProps, 'children' | 'disabled'>;
415
- label?: ReactNode;
416
- labelProps?: Omit<LabelProps, 'children'> & {
417
- /** @deprecated Use the `label` prop instead. */
418
- children?: never;
375
+ time: TimeSelectorType | TimeSelectorType[] | {
376
+ desktop: TimeSelectorType | TimeSelectorType[];
377
+ mobile: TimeSelectorType | TimeSelectorType[];
419
378
  };
420
- name: string;
421
- ref?: RefObject<HTMLInputElement | null>;
422
379
  };
380
+ type DateUIOption = DateSelectorType | DateSelectorType[] | {
381
+ desktop: DateSelectorType | DateSelectorType[];
382
+ mobile: DateSelectorType | DateSelectorType[];
383
+ };
384
+ type TimeMinMax = Date | [DateTimeObject['hour'], DateTimeObject['minute'], DateTimeObject['second']] | Pick<DateTimeObject, 'hour' | 'minute' | 'second'>;
385
+ type TimeSelectorType = DateOrTimeSelectorType | 'clock';
386
+ type TimeUIOption = TimeSelectorType | TimeSelectorType[] | {
387
+ desktop: TimeSelectorType | TimeSelectorType[];
388
+ mobile: TimeSelectorType | TimeSelectorType[];
389
+ };
390
+
423
391
  type PasswordOptions = {
424
392
  matchPreviousInput: boolean;
425
393
  requireLowercaseCharacter: boolean;
@@ -453,7 +421,138 @@ type PhoneOptions = {
453
421
  format: 'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard';
454
422
  };
455
423
 
456
- declare function Input({ checked, className, defaultValue, description, descriptionProps, disabled, fieldProps, invalid, label, labelProps, max, min, name, onBlur, onChange, options, placeholder, ref, required, type, value, ...props }: InputProps): ReactElement;
424
+ type InputType = 'button' | 'checkbox' | 'color' | 'date' | 'datetime' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'list' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | 'year';
425
+ type DateTimeTypeProps = {
426
+ type: 'datetime' | 'datetime-local';
427
+ min?: DateTimeMinMax;
428
+ max?: DateTimeMinMax;
429
+ options?: Partial<{
430
+ ui: DateTimeUIOption;
431
+ }>;
432
+ };
433
+ type DateTypeProps = {
434
+ type: 'date';
435
+ min?: DateMinMax;
436
+ max?: DateMinMax;
437
+ options?: Partial<{
438
+ ui: DateUIOption;
439
+ }>;
440
+ };
441
+ type MonthTypeProps = {
442
+ type: 'month';
443
+ min?: MonthNumber;
444
+ max?: MonthNumber;
445
+ options?: Partial<{
446
+ ui: DateUIOption;
447
+ }>;
448
+ };
449
+ type NumberTypeProps = {
450
+ type: 'number';
451
+ max?: number;
452
+ min?: number;
453
+ };
454
+ type PasswordTypeProps = {
455
+ type: 'password';
456
+ options?: Partial<PasswordOptions>;
457
+ };
458
+ type PhoneTypeProps = {
459
+ type: 'tel';
460
+ options?: Partial<PhoneOptions>;
461
+ };
462
+ type TimeTypeProps = {
463
+ type: 'time';
464
+ min?: TimeMinMax;
465
+ max?: TimeMinMax;
466
+ options?: {
467
+ ui: TimeUIOption;
468
+ };
469
+ };
470
+ type WeekTypeProps = {
471
+ type: 'week';
472
+ min?: WeekNumber;
473
+ max?: WeekNumber;
474
+ options?: {
475
+ ui: DateUIOption;
476
+ };
477
+ };
478
+ type YearTypeProps = {
479
+ type: 'year';
480
+ min?: number;
481
+ max?: number;
482
+ options?: Partial<{
483
+ ui: DateUIOption;
484
+ }>;
485
+ };
486
+ type InputTypeProps = OneOf<[
487
+ DateTypeProps,
488
+ DateTimeTypeProps,
489
+ MonthTypeProps,
490
+ NumberTypeProps,
491
+ PasswordTypeProps,
492
+ PhoneTypeProps,
493
+ TimeTypeProps,
494
+ WeekTypeProps,
495
+ YearTypeProps,
496
+ {
497
+ type?: Exclude<InputType, 'date' | 'datetime' | 'datetime-local' | 'month' | 'number' | 'password' | 'tel' | 'time' | 'week' | 'year'>;
498
+ }
499
+ ]>;
500
+
501
+ type InputProps = Omit<InputProps$1, 'max' | 'min' | 'name' | 'type'> & InputTypeProps & {
502
+ description?: ReactNode;
503
+ descriptionProps?: Omit<DescriptionProps, 'children'> & {
504
+ /** @deprecated Use the `description` prop instead. */
505
+ children?: never;
506
+ };
507
+ fieldProps?: Omit<FieldProps, 'children' | 'disabled'>;
508
+ label?: ReactNode;
509
+ labelProps?: Omit<LabelProps, 'children'> & {
510
+ /** @deprecated Use the `label` prop instead. */
511
+ children?: never;
512
+ };
513
+ name: string;
514
+ ref?: RefObject<HTMLInputElement | null>;
515
+ };
516
+
517
+ declare function Input({ as, checked, className, defaultValue, description, descriptionProps, disabled, fieldProps, invalid, label, labelProps, max, min, name, onBlur, onChange, options, placeholder, ref, required, type, value, ...props }: InputProps): ReactElement;
518
+
519
+ type IsolatedValue<T extends ValueOption | ValueOption[]> = {
520
+ defaultValue?: T;
521
+ } | {
522
+ value?: T;
523
+ };
524
+ type MultipleOrSingleValue = OneOf<[
525
+ {
526
+ multiple: true;
527
+ } & IsolatedValue<ValueOption[]>,
528
+ {
529
+ multiple?: false;
530
+ } & IsolatedValue<ValueOption>
531
+ ]>;
532
+ type SelectProps = Omit<ListboxProps, 'defaultValue' | 'multiple' | 'name' | 'value'> & Pick<FieldProps, 'disabled'> & MultipleOrSingleValue & {
533
+ description?: ReactNode;
534
+ descriptionProps?: Omit<DescriptionProps, 'children'> & {
535
+ /** @deprecated Use the `description` prop instead. */
536
+ children?: never;
537
+ };
538
+ fieldProps?: Omit<FieldProps, 'children' | 'disabled'>;
539
+ label?: ReactNode;
540
+ labelProps?: Omit<LabelProps, 'children'> & {
541
+ /** @deprecated Use the `label` prop instead. */
542
+ children?: never;
543
+ };
544
+ name: string;
545
+ optionList: ListboxSelectedOptionProps['options'];
546
+ ref?: RefObject<HTMLInputElement | null>;
547
+ required?: boolean;
548
+ };
549
+ type ValueOption = string | {
550
+ id: string;
551
+ render?: ReactNode;
552
+ value: string;
553
+ };
554
+
555
+ declare function Select({ defaultValue, description, descriptionProps, disabled, fieldProps, invalid, label, labelProps, multiple, name, onChange, optionList, required, value, ...props }: SelectProps): ReactElement;
457
556
 
458
557
  type SubmitButtonProps = Omit<ButtonProps, 'as' | 'customTheme' | 'href' | 'theme'> & {
459
558
  /** This doesn't do much by default, because we use built-in colors for different form states. You'll have to modify a good bit to make this do anything. */
@@ -661,5 +760,5 @@ type VideoProps = Omit<ComponentPropsWithRef<'video'>, 'controls' | 'controlList
661
760
 
662
761
  declare function Video({ autoPlay, className, controls, poster, ref, srcSet, title, ...props }: VideoProps): ReactElement;
663
762
 
664
- export { Anchor, Button, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, Fieldset, Form, Ghost, Heading, IFrame, Input, Link, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, SubmitButton, Textarea, Time, Tooltip, TooltipPanel, TooltipTrigger, Video, createButton, createLink };
665
- export type { AnchorProps, ButtonBorderRadius, ButtonPadding, ButtonProps, DetailsBodyProps, DetailsProps, DetailsSummaryProps, DropDownButtonProps, DropDownItemProps, DropDownItemsProps, DropDownProps, DropDownSectionProps, DropDownSeparatorProps, ExtendedButtonConfig, ExtendedButtonProps, ExtendedLinkConfig, ExtendedLinkProps, FieldsetProps, FormProps, FormSubmitArgs, GhostProps, HeadingProps, IFrameAllowAttribute, IFrameProps, IFrameReferrerPolicyAttribute, IFrameSandboxAttribute, InputProps, LinkProps, ModalProps, SubmitButtonProps, TextareaProps, TooltipPanelProps, TooltipProps, TooltipTriggerProps, VideoControl, VideoProps };
763
+ export { Anchor, Button, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, Fieldset, Form, Ghost, Heading, IFrame, Input, Link, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SubmitButton, Textarea, Time, Tooltip, TooltipPanel, TooltipTrigger, Video, createButton, createLink };
764
+ export type { AnchorProps, ButtonBorderRadius, ButtonPadding, ButtonProps, DetailsBodyProps, DetailsProps, DetailsSummaryProps, DropDownButtonProps, DropDownItemProps, DropDownItemsProps, DropDownProps, DropDownSectionProps, DropDownSeparatorProps, ExtendedButtonConfig, ExtendedButtonProps, ExtendedLinkConfig, ExtendedLinkProps, FieldsetProps, FormProps, FormSubmitArgs, GhostProps, HeadingProps, IFrameAllowAttribute, IFrameProps, IFrameReferrerPolicyAttribute, IFrameSandboxAttribute, InputProps, LinkProps, ModalProps, SelectProps, SubmitButtonProps, TextareaProps, TooltipPanelProps, TooltipProps, TooltipTriggerProps, VideoControl, VideoProps };