flowbite-svelte 0.44.20 → 0.44.21

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 (125) hide show
  1. package/README.md +2 -2
  2. package/dist/accordion/AccordionItem.svelte +4 -4
  3. package/dist/accordion/AccordionItem.svelte.d.ts +2 -2
  4. package/dist/alert/Alert.svelte +1 -1
  5. package/dist/avatar/Avatar.svelte +1 -1
  6. package/dist/badge/Badge.svelte +1 -1
  7. package/dist/banner/Banner.svelte +6 -6
  8. package/dist/bottom-navigation/BottomNav.svelte +8 -8
  9. package/dist/bottom-navigation/BottomNavItem.svelte +2 -2
  10. package/dist/breadcrumb/Breadcrumb.svelte +2 -2
  11. package/dist/breadcrumb/Breadcrumb.svelte.d.ts +1 -1
  12. package/dist/breadcrumb/BreadcrumbItem.svelte +6 -6
  13. package/dist/breadcrumb/BreadcrumbItem.svelte.d.ts +2 -2
  14. package/dist/buttons/Button.svelte +3 -39
  15. package/dist/buttons/Button.svelte.d.ts.map +1 -1
  16. package/dist/buttons/GradientButton.svelte +1 -1
  17. package/dist/cards/Card.svelte +1 -1
  18. package/dist/carousel/Carousel.svelte +0 -10
  19. package/dist/carousel/Carousel.svelte.d.ts.map +1 -1
  20. package/dist/carousel/ControlButton.svelte +1 -1
  21. package/dist/carousel/Indicators.svelte +1 -1
  22. package/dist/darkmode/DarkMode.svelte +6 -3
  23. package/dist/darkmode/DarkMode.svelte.d.ts.map +1 -1
  24. package/dist/datepicker/Datepicker.svelte +5 -5
  25. package/dist/datepicker/Datepicker.svelte.d.ts +1 -1
  26. package/dist/drawer/Drawer.svelte +5 -5
  27. package/dist/drawer/Drawer.svelte.d.ts +2 -2
  28. package/dist/footer/FooterBrand.svelte +2 -2
  29. package/dist/footer/FooterBrand.svelte.d.ts +1 -1
  30. package/dist/footer/FooterCopyright.svelte +1 -1
  31. package/dist/footer/FooterLink.svelte +2 -2
  32. package/dist/footer/FooterLink.svelte.d.ts +1 -1
  33. package/dist/forms/Checkbox.svelte +2 -2
  34. package/dist/forms/Checkbox.svelte.d.ts +1 -1
  35. package/dist/forms/FloatingLabelInput.svelte +3 -3
  36. package/dist/forms/Input.svelte +7 -7
  37. package/dist/forms/Input.svelte.d.ts +1 -1
  38. package/dist/forms/InputAddon.svelte +3 -3
  39. package/dist/forms/Label.svelte +2 -2
  40. package/dist/forms/Label.svelte.d.ts +1 -1
  41. package/dist/forms/MultiSelect.svelte +9 -8
  42. package/dist/forms/MultiSelect.svelte.d.ts +2 -0
  43. package/dist/forms/MultiSelect.svelte.d.ts.map +1 -1
  44. package/dist/forms/Radio.svelte +2 -2
  45. package/dist/forms/Radio.svelte.d.ts +1 -1
  46. package/dist/forms/Search.svelte +1 -1
  47. package/dist/forms/Toggle.svelte +4 -4
  48. package/dist/indicators/Indicator.svelte +15 -15
  49. package/dist/list-group/Listgroup.svelte +1 -1
  50. package/dist/list-group/Listgroup.svelte.d.ts +1 -0
  51. package/dist/list-group/Listgroup.svelte.d.ts.map +1 -1
  52. package/dist/marquee/Marquee.svelte +4 -11
  53. package/dist/modal/Modal.svelte +12 -7
  54. package/dist/modal/Modal.svelte.d.ts +1 -1
  55. package/dist/modal/Modal.svelte.d.ts.map +1 -1
  56. package/dist/navbar/NavHamburger.svelte +1 -1
  57. package/dist/navbar/NavLi.svelte +1 -1
  58. package/dist/navbar/NavUl.svelte +2 -2
  59. package/dist/navbar/NavUl.svelte.d.ts +1 -1
  60. package/dist/pagination/Pagination.svelte +5 -5
  61. package/dist/pagination/Pagination.svelte.d.ts +1 -1
  62. package/dist/rating/Rating.svelte +1 -1
  63. package/dist/rating/RatingComment.svelte +5 -5
  64. package/dist/rating/Review.svelte +3 -3
  65. package/dist/rating/Review.svelte.d.ts +1 -1
  66. package/dist/rating/ScoreRating.svelte +6 -6
  67. package/dist/rating/ScoreRating.svelte.d.ts +2 -2
  68. package/dist/sidebar/SidebarBrand.svelte +4 -4
  69. package/dist/sidebar/SidebarBrand.svelte.d.ts +2 -2
  70. package/dist/sidebar/SidebarCta.svelte +2 -2
  71. package/dist/sidebar/SidebarCta.svelte.d.ts +1 -1
  72. package/dist/sidebar/SidebarDropdownItem.svelte +4 -4
  73. package/dist/sidebar/SidebarDropdownItem.svelte.d.ts +2 -2
  74. package/dist/sidebar/SidebarDropdownWrapper.svelte +2 -2
  75. package/dist/sidebar/SidebarDropdownWrapper.svelte.d.ts +1 -1
  76. package/dist/sidebar/SidebarItem.svelte +2 -2
  77. package/dist/sidebar/SidebarItem.svelte.d.ts +1 -1
  78. package/dist/skeleton/CardPlaceholder.svelte +1 -1
  79. package/dist/skeleton/ImagePlaceholder.svelte +2 -2
  80. package/dist/skeleton/ImagePlaceholder.svelte.d.ts +1 -1
  81. package/dist/skeleton/TestimonialPlaceholder.svelte +2 -2
  82. package/dist/skeleton/TextPlaceholder.svelte +6 -6
  83. package/dist/skeleton/WidgetPlaceholder.svelte +1 -1
  84. package/dist/speed-dial/SpeedDial.svelte +2 -2
  85. package/dist/speed-dial/SpeedDial.svelte.d.ts +1 -1
  86. package/dist/speed-dial/SpeedDialButton.svelte +2 -2
  87. package/dist/speed-dial/SpeedDialButton.svelte.d.ts +1 -1
  88. package/dist/table/TableSearch.svelte +4 -4
  89. package/dist/table/TableSearch.svelte.d.ts +2 -2
  90. package/dist/tabs/Tabs.svelte +4 -4
  91. package/dist/tabs/Tabs.svelte.d.ts +1 -1
  92. package/dist/timeline/Activity.svelte +2 -2
  93. package/dist/timeline/Activity.svelte.d.ts +1 -1
  94. package/dist/timeline/ActivityItem.svelte +4 -4
  95. package/dist/timeline/ActivityItem.svelte.d.ts +2 -2
  96. package/dist/timeline/GroupItem.svelte +4 -4
  97. package/dist/timeline/GroupItem.svelte.d.ts +1 -1
  98. package/dist/timeline/Timeline.svelte +3 -3
  99. package/dist/timeline/TimelineItem.svelte +6 -6
  100. package/dist/toast/Toast.svelte +4 -5
  101. package/dist/toast/Toast.svelte.d.ts +0 -1
  102. package/dist/toast/Toast.svelte.d.ts.map +1 -1
  103. package/dist/toolbar/Toolbar.svelte +1 -1
  104. package/dist/toolbar/ToolbarGroup.svelte +2 -2
  105. package/dist/toolbar/ToolbarGroup.svelte.d.ts +1 -1
  106. package/dist/typography/Blockquote.svelte +2 -2
  107. package/dist/typography/Blockquote.svelte.d.ts +1 -1
  108. package/dist/typography/Hr.svelte +6 -6
  109. package/dist/typography/Hr.svelte.d.ts +3 -3
  110. package/dist/typography/P.svelte +2 -2
  111. package/dist/typography/P.svelte.d.ts +1 -1
  112. package/dist/utils/CloseButton.svelte +1 -1
  113. package/dist/utils/Frame.svelte +0 -2
  114. package/dist/utils/Frame.svelte.d.ts +0 -2
  115. package/dist/utils/Frame.svelte.d.ts.map +1 -1
  116. package/dist/utils/Popper.svelte +4 -4
  117. package/dist/utils/Popper.svelte.d.ts +3 -0
  118. package/dist/utils/Popper.svelte.d.ts.map +1 -1
  119. package/dist/utils/TransitionFrame.svelte +10 -0
  120. package/dist/utils/TransitionFrame.svelte.d.ts +8 -0
  121. package/dist/utils/TransitionFrame.svelte.d.ts.map +1 -1
  122. package/package.json +1 -1
  123. package/dist/utils/createEventDispatcher.d.ts +0 -2
  124. package/dist/utils/createEventDispatcher.d.ts.map +0 -1
  125. package/dist/utils/createEventDispatcher.js +0 -22
@@ -9,7 +9,7 @@ import { getContext } from 'svelte';
9
9
  export let type = 'text';
10
10
  export let value = undefined;
11
11
  export let size = undefined;
12
- export let defaultClass = 'block w-full disabled:cursor-not-allowed disabled:opacity-50';
12
+ export let defaultClass = 'block w-full disabled:cursor-not-allowed disabled:opacity-50 rtl:text-right';
13
13
  export let color = 'base';
14
14
  export let floatClass = 'flex absolute inset-y-0 items-center text-gray-500 dark:text-gray-400';
15
15
  const borderClasses = {
@@ -33,20 +33,20 @@ const colorClasses = {
33
33
  let background = getContext('background');
34
34
  let group = getContext('group');
35
35
  const textSizes = { sm: 'sm:text-xs', md: 'text-sm', lg: 'sm:text-base' };
36
- const leftPadding = { sm: 'pl-9', md: 'pl-10', lg: 'pl-11' };
37
- const rightPadding = { sm: 'pr-9', md: 'pr-10', lg: 'pr-11' };
36
+ const leftPadding = { sm: 'ps-9', md: 'ps-10', lg: 'ps-11' };
37
+ const rightPadding = { sm: 'pe-9', md: 'pe-10', lg: 'pe-11' };
38
38
  const inputPadding = { sm: 'p-2', md: 'p-2.5', lg: 'p-3' };
39
39
  $: _size = size || clampSize(group?.size) || 'md';
40
40
  let inputClass;
41
41
  $: {
42
42
  const _color = color === 'base' && background ? 'tinted' : color;
43
- inputClass = twMerge([defaultClass, ($$slots.left && leftPadding[_size]) || ($$slots.right && rightPadding[_size]) || inputPadding[_size], ringClasses[color], colorClasses[_color], borderClasses[_color], textSizes[_size], group || 'rounded-lg', group && 'first:rounded-l-lg last:rounded-r-lg', group && 'border-l-0 first:border-l last:border-r', $$props.class]);
43
+ inputClass = twMerge([defaultClass, inputPadding[_size], ($$slots.left && leftPadding[_size]) || ($$slots.right && rightPadding[_size]), ringClasses[color], colorClasses[_color], borderClasses[_color], textSizes[_size], group || 'rounded-lg', group && 'first:rounded-s-lg last:rounded-e-lg', group && 'border-s-0 first:border-s last:border-e', $$props.class]);
44
44
  }
45
45
  </script>
46
46
 
47
47
  <Wrapper class="relative w-full" show={$$slots.left || $$slots.right}>
48
48
  {#if $$slots.left}
49
- <div class="{twMerge(floatClass, $$props.classLeft)} left-0 pl-2.5 pointer-events-none">
49
+ <div class="{twMerge(floatClass, $$props.classLeft)} start-0 ps-2.5 pointer-events-none">
50
50
  <slot name="left" />
51
51
  </div>
52
52
  {/if}
@@ -54,7 +54,7 @@ $: {
54
54
  <input {...$$restProps} bind:value on:blur on:change on:click on:contextmenu on:focus on:keydown on:keypress on:keyup on:mouseover on:mouseenter on:mouseleave on:paste on:input {...{ type }} class={inputClass} />
55
55
  </slot>
56
56
  {#if $$slots.right}
57
- <div class="{twMerge(floatClass, $$props.classRight)} right-0 pr-2.5"><slot name="right" /></div>
57
+ <div class="{twMerge(floatClass, $$props.classRight)} end-0 pe-2.5"><slot name="right" /></div>
58
58
  {/if}
59
59
  </Wrapper>
60
60
 
@@ -65,7 +65,7 @@ $: {
65
65
  @prop export let type: InputType = 'text';
66
66
  @prop export let value: any = undefined;
67
67
  @prop export let size: FormSizeType | undefined = undefined;
68
- @prop export let defaultClass: string = 'block w-full disabled:cursor-not-allowed disabled:opacity-50';
68
+ @prop export let defaultClass: string = 'block w-full disabled:cursor-not-allowed disabled:opacity-50 rtl:text-right';
69
69
  @prop export let color: 'base' | 'green' | 'red' = 'base';
70
70
  @prop export let floatClass: string = 'flex absolute inset-y-0 items-center text-gray-500 dark:text-gray-400';
71
71
  -->
@@ -48,7 +48,7 @@ export type InputSlots = typeof __propDef.slots;
48
48
  * @prop export let type: InputType = 'text';
49
49
  * @prop export let value: any = undefined;
50
50
  * @prop export let size: FormSizeType | undefined = undefined;
51
- * @prop export let defaultClass: string = 'block w-full disabled:cursor-not-allowed disabled:opacity-50';
51
+ * @prop export let defaultClass: string = 'block w-full disabled:cursor-not-allowed disabled:opacity-50 rtl:text-right';
52
52
  * @prop export let color: 'base' | 'green' | 'red' = 'base';
53
53
  * @prop export let floatClass: string = 'flex absolute inset-y-0 items-center text-gray-500 dark:text-gray-400';
54
54
  */
@@ -14,14 +14,14 @@ const darkBgClasses = {
14
14
  tinted: 'dark:bg-gray-500 dark:text-gray-300'
15
15
  };
16
16
  const divider = {
17
- base: 'dark:border-r-gray-700 dark:last:border-r-gray-600',
18
- tinted: 'dark:border-r-gray-600 dark:last:border-r-gray-500'
17
+ base: 'dark:border-e-gray-700 dark:last:border-e-gray-600',
18
+ tinted: 'dark:border-e-gray-600 dark:last:border-e-gray-500'
19
19
  };
20
20
  const textSizes = { sm: 'sm:text-xs', md: 'text-sm', lg: 'sm:text-base' };
21
21
  const prefixPadding = { sm: 'px-2', md: 'px-3', lg: 'px-4' };
22
22
  // size: explicit, inherited, default
23
23
  $: _size = size || clampSize(group?.size) || 'md';
24
- $: divClass = twMerge(textSizes[_size], prefixPadding[_size], background ? borderClasses['tinted'] : borderClasses['base'], 'text-gray-500 bg-gray-200', background ? darkBgClasses.tinted : darkBgClasses.base, background ? divider.tinted : divider.base, 'inline-flex items-center border-t border-b first:border-l border-r', 'first:rounded-l-lg last:rounded-r-lg', $$props.class);
24
+ $: divClass = twMerge(textSizes[_size], prefixPadding[_size], background ? borderClasses['tinted'] : borderClasses['base'], 'text-gray-500 bg-gray-200', background ? darkBgClasses.tinted : darkBgClasses.base, background ? divider.tinted : divider.base, 'inline-flex items-center border-t border-b first:border-s border-e', 'first:rounded-s-lg last:rounded-e-lg', $$props.class);
25
25
  </script>
26
26
 
27
27
  <div {...$$restProps} class={divClass}>
@@ -1,6 +1,6 @@
1
1
  <script>import { twMerge } from 'tailwind-merge';
2
2
  export let color = 'gray';
3
- export let defaultClass = 'text-sm font-medium block';
3
+ export let defaultClass = 'text-sm rtl:text-right font-medium block';
4
4
  export let show = true;
5
5
  let node;
6
6
  const colorClasses = {
@@ -29,6 +29,6 @@ $: labelClass = twMerge(defaultClass, colorClasses[color], $$props.class);
29
29
  [Go to docs](https://flowbite-svelte.com/)
30
30
  ## Props
31
31
  @prop export let color: 'gray' | 'green' | 'red' | 'disabled' = 'gray';
32
- @prop export let defaultClass: string = 'text-sm font-medium block';
32
+ @prop export let defaultClass: string = 'text-sm rtl:text-right font-medium block';
33
33
  @prop export let show: boolean = true;
34
34
  -->
@@ -20,7 +20,7 @@ export type LabelSlots = typeof __propDef.slots;
20
20
  * [Go to docs](https://flowbite-svelte.com/)
21
21
  * ## Props
22
22
  * @prop export let color: 'gray' | 'green' | 'red' | 'disabled' = 'gray';
23
- * @prop export let defaultClass: string = 'text-sm font-medium block';
23
+ * @prop export let defaultClass: string = 'text-sm rtl:text-right font-medium block';
24
24
  * @prop export let show: boolean = true;
25
25
  */
26
26
  export default class Label extends SvelteComponent<LabelProps, LabelEvents, LabelSlots> {
@@ -1,8 +1,6 @@
1
1
  <script>import Badge from '../badge/Badge.svelte';
2
2
  import CloseButton from '../utils/CloseButton.svelte';
3
3
  import { twMerge } from 'tailwind-merge';
4
- import createEventDispatcher from '../utils/createEventDispatcher';
5
- const dispatch = createEventDispatcher();
6
4
  export let items = [];
7
5
  export let value = [];
8
6
  export let size = 'md';
@@ -18,7 +16,7 @@ const sizes = {
18
16
  const multiSelectClass = 'relative border border-gray-300 flex items-center rounded-lg gap-2 dark:border-gray-600 focus-within:ring-1 focus-within:border-primary-500 ring-primary-500 dark:focus-within:border-primary-500 dark:ring-primary-500';
19
17
  // Dropdown
20
18
  let multiSelectDropdown;
21
- $: multiSelectDropdown = twMerge('absolute z-50 p-3 flex flex-col gap-1 max-h-64 bg-white border border-gray-300 dark:bg-gray-700 dark:border-gray-600 left-0 top-[calc(100%+1rem)] rounded-lg cursor-pointer overflow-y-scroll w-full', dropdownClass);
19
+ $: multiSelectDropdown = twMerge('absolute z-50 p-3 flex flex-col gap-1 max-h-64 bg-white border border-gray-300 dark:bg-gray-700 dark:border-gray-600 start-0 top-[calc(100%+1rem)] rounded-lg cursor-pointer overflow-y-scroll w-full', dropdownClass);
22
20
  // Items
23
21
  const itemsClass = 'py-2 px-3 rounded-lg text-gray-600 hover:text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:text-gray-300 dark:hover:bg-gray-600';
24
22
  // Selected items
@@ -41,6 +39,9 @@ const clearThisOption = (select) => {
41
39
  value = value.filter((o) => o !== select.value);
42
40
  }
43
41
  };
42
+ function create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
43
+ return new CustomEvent(type, { detail, bubbles, cancelable });
44
+ }
44
45
  function init(node, value) {
45
46
  const inital = value; // hack for below
46
47
  return {
@@ -48,8 +49,8 @@ function init(node, value) {
48
49
  selectItems = items.filter((x) => value.includes(x.value));
49
50
  // avoid initial event emitting
50
51
  if (value !== inital) {
51
- dispatch('change', node, selectItems);
52
- dispatch('input', node, selectItems);
52
+ node.dispatchEvent(create_custom_event('input', selectItems));
53
+ node.dispatchEvent(create_custom_event('change', selectItems));
53
54
  }
54
55
  }
55
56
  };
@@ -57,7 +58,7 @@ function init(node, value) {
57
58
  </script>
58
59
 
59
60
  <!-- Hidden select for form submission -->
60
- <select use:init={value} {...$$restProps} {value} hidden multiple>
61
+ <select use:init={value} {...$$restProps} {value} hidden multiple on:change on:input>
61
62
  {#each items as { value, name }}
62
63
  <option {value}>{name}</option>
63
64
  {/each}
@@ -75,12 +76,12 @@ function init(node, value) {
75
76
  {/each}
76
77
  {/if}
77
78
  </span>
78
- <div class="flex ml-auto gap-2 items-center">
79
+ <div class="flex ms-auto gap-2 items-center">
79
80
  {#if selectItems.length}
80
81
  <CloseButton {size} on:click={clearAll} color="none" class="p-0 focus:ring-gray-400" />
81
82
  {/if}
82
83
  <div class="w-[1px] bg-gray-300 dark:bg-gray-600" />
83
- <svg class="cursor-pointer h-3 w-3 ml-1 text-gray-800 dark:text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
84
+ <svg class="cursor-pointer h-3 w-3 ms-1 text-gray-800 dark:text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
84
85
  <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d={show ? 'm1 5 4-4 4 4' : 'm9 1-4 4-4-4'} />
85
86
  </svg>
86
87
  </div>
@@ -9,6 +9,8 @@ declare const __propDef: {
9
9
  dropdownClass?: string | undefined;
10
10
  };
11
11
  events: {
12
+ change: Event;
13
+ input: Event;
12
14
  click: MouseEvent;
13
15
  } & {
14
16
  [evt: string]: CustomEvent<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/forms/MultiSelect.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAID,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAqH/D,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;CAA+D,CAAC;AAC/E,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACtD,MAAM,MAAM,iBAAiB,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,eAAe,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;CAC9G"}
1
+ {"version":3,"file":"MultiSelect.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/forms/MultiSelect.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAID,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAqH/D,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;CAA+D,CAAC;AAC/E,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACtD,MAAM,MAAM,iBAAiB,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,eAAe,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;CAC9G"}
@@ -12,7 +12,7 @@ const colorClasses = {
12
12
  blue: 'text-blue-600 focus:ring-blue-500 dark:focus:ring-blue-600'
13
13
  };
14
14
  export const labelClass = (inline, extraClass) => twMerge(inline ? 'inline-flex' : 'flex', 'items-center', extraClass);
15
- export let spacing = 'mr-2';
15
+ export let spacing = 'me-2';
16
16
  export const inputClass = (custom, color, rounded, tinted, extraClass) => twMerge('w-4 h-4 bg-gray-100 border-gray-300 dark:ring-offset-gray-800 focus:ring-2', spacing, tinted ? 'dark:bg-gray-600 dark:border-gray-500' : 'dark:bg-gray-700 dark:border-gray-600', custom && 'sr-only peer', rounded && 'rounded', colorClasses[color], extraClass);
17
17
  </script>
18
18
 
@@ -36,7 +36,7 @@ let background = getContext('background');
36
36
  @component
37
37
  [Go to docs](https://flowbite-svelte.com/)
38
38
  ## Props
39
- @prop export let spacing: string = 'mr-2';
39
+ @prop export let spacing: string = 'me-2';
40
40
  @prop export let color: FormColorType = 'primary';
41
41
  @prop export let custom: boolean = false;
42
42
  @prop export let inline: boolean = false;
@@ -37,7 +37,7 @@ export type RadioSlots = typeof __propDef.slots;
37
37
  /**
38
38
  * [Go to docs](https://flowbite-svelte.com/)
39
39
  * ## Props
40
- * @prop export let spacing: string = 'mr-2';
40
+ * @prop export let spacing: string = 'me-2';
41
41
  * @prop export let color: FormColorType = 'primary';
42
42
  * @prop export let custom: boolean = false;
43
43
  * @prop export let inline: boolean = false;
@@ -24,7 +24,7 @@ const sizes = {
24
24
  Due to that we need the below slot and Wrapper around
25
25
  -->
26
26
  {#if $$slots.default}
27
- <div class="flex absolute inset-y-0 right-0 items-center text-gray-500 dark:text-gray-400">
27
+ <div class="flex absolute inset-y-0 end-0 items-center text-gray-500 dark:text-gray-400">
28
28
  <slot />
29
29
  </div>
30
30
  {/if}
@@ -8,7 +8,7 @@ export let checked = undefined;
8
8
  export let customSize = '';
9
9
  // tinted if put in component having its own background
10
10
  let background = getContext('background');
11
- const common = "mr-3 shrink-0 bg-gray-200 rounded-full peer-focus:ring-4 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:bg-white after:border-gray-300 after:border after:rounded-full after:transition-all";
11
+ const common = "me-3 shrink-0 bg-gray-200 rounded-full peer-focus:ring-4 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:bg-white after:border-gray-300 after:border after:rounded-full after:transition-all";
12
12
  const colors = {
13
13
  primary: 'peer-focus:ring-primary-300 dark:peer-focus:ring-primary-800 peer-checked:bg-primary-600',
14
14
  secondary: 'peer-focus:ring-secondary-300 dark:peer-focus:ring-secondary-800 peer-checked:bg-secondary-600',
@@ -21,9 +21,9 @@ const colors = {
21
21
  blue: 'peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 peer-checked:bg-blue-600'
22
22
  };
23
23
  const sizes = {
24
- small: 'w-9 h-5 after:top-[2px] after:left-[2px] after:h-4 after:w-4',
25
- default: 'w-11 h-6 after:top-0.5 after:left-[2px] after:h-5 after:w-5',
26
- large: 'w-14 h-7 after:top-0.5 after:left-[4px] after:h-6 after:w-6',
24
+ small: 'w-9 h-5 after:top-[2px] after:start-[2px] after:h-4 after:w-4',
25
+ default: 'w-11 h-6 after:top-0.5 after:start-[2px] after:h-5 after:w-5',
26
+ large: 'w-14 h-7 after:top-0.5 after:start-[4px] after:h-6 after:w-6',
27
27
  custom: customSize
28
28
  };
29
29
  let divClass;
@@ -27,31 +27,31 @@ const sizes = {
27
27
  };
28
28
  const placements = {
29
29
  // top
30
- 'top-left': 'top-0 left-0',
31
- 'top-center': 'top-0 left-1/2 -translate-x-1/2',
32
- 'top-right': 'top-0 right-0',
30
+ 'top-left': 'top-0 start-0',
31
+ 'top-center': 'top-0 start-1/2 -translate-x-1/2 rtl:translate-x-1/2 rtl:translate-x-1/2',
32
+ 'top-right': 'top-0 end-0',
33
33
  // center
34
- 'center-left': 'top-1/2 -translate-y-1/2 left-0',
35
- center: 'top-1/2 -translate-y-1/2 left-1/2 -translate-x-1/2',
36
- 'center-right': 'top-1/2 -translate-y-1/2 right-0',
34
+ 'center-left': 'top-1/2 -translate-y-1/2 start-0',
35
+ center: 'top-1/2 -translate-y-1/2 start-1/2 -translate-x-1/2 rtl:translate-x-1/2 rtl:translate-x-1/2',
36
+ 'center-right': 'top-1/2 -translate-y-1/2 end-0',
37
37
  // bottom
38
- 'bottom-left': 'bottom-0 left-0',
39
- 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2',
40
- 'bottom-right': 'bottom-0 right-0'
38
+ 'bottom-left': 'bottom-0 start-0',
39
+ 'bottom-center': 'bottom-0 start-1/2 -translate-x-1/2 rtl:translate-x-1/2 rtl:translate-x-1/2',
40
+ 'bottom-right': 'bottom-0 end-0'
41
41
  };
42
42
  const offsets = {
43
43
  // top
44
- 'top-left': '-translate-x-1/3 -translate-y-1/3',
44
+ 'top-left': '-translate-x-1/3 rtl:translate-x-1/3 -translate-y-1/3',
45
45
  'top-center': '-translate-y-1/3',
46
- 'top-right': 'translate-x-1/3 -translate-y-1/3',
46
+ 'top-right': 'translate-x-1/3 rtl:-translate-x-1/3 -translate-y-1/3',
47
47
  // center
48
- 'center-left': '-translate-x-1/3',
48
+ 'center-left': '-translate-x-1/3 rtl:translate-x-1/3',
49
49
  center: '',
50
- 'center-right': 'translate-x-1/3',
50
+ 'center-right': 'translate-x-1/3 rtl:-translate-x-1/3',
51
51
  // bottom
52
- 'bottom-left': '-translate-x-1/3 translate-y-1/3',
52
+ 'bottom-left': '-translate-x-1/3 rtl:translate-x-1/3 translate-y-1/3',
53
53
  'bottom-center': 'translate-y-1/3',
54
- 'bottom-right': 'translate-x-1/3 translate-y-1/3'
54
+ 'bottom-right': 'translate-x-1/3 rtl:-translate-x-1/3 translate-y-1/3'
55
55
  };
56
56
  let dotClass;
57
57
  $: dotClass = twMerge('flex-shrink-0', rounded ? 'rounded' : 'rounded-full', border && 'border-2 border-white dark:border-gray-800', sizes[size], colors[color], $$slots.default && 'inline-flex items-center justify-center', placement && 'absolute ' + placements[placement], placement && offset && offsets[placement], $$props.class);
@@ -20,7 +20,7 @@ $: groupClass = twMerge(defaultClass, $$props.class);
20
20
  {/if}
21
21
  {:else}
22
22
  {@const item = items[0]}
23
- <slot {item} />
23
+ <slot {item} index={0} />
24
24
  {/each}
25
25
  </Frame>
26
26
 
@@ -24,6 +24,7 @@ declare const __propDef: {
24
24
  slots: {
25
25
  default: {
26
26
  item: string;
27
+ index: number;
27
28
  };
28
29
  };
29
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Listgroup.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/list-group/Listgroup.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAGD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA8ClD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwC,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACpD,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,eAAe,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC;CACtG"}
1
+ {"version":3,"file":"Listgroup.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/list-group/Listgroup.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAGD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA8ClD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwC,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACpD,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,eAAe,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC;CACtG"}
@@ -8,10 +8,10 @@ let isHovering = false;
8
8
  let marquee;
9
9
  let intervalId;
10
10
  let shadowClass = `after:content-[''] after:absolute after:block after:z-10 after:h-full before:content-[''] before:absolute
11
- before:block before:z-10 before:h-full before:right-0 after:shadow-[10px_0_50px_65px_rgba(256,256,256,1)]
11
+ before:block before:z-10 before:h-full before:end-0 after:shadow-[10px_0_50px_65px_rgba(256,256,256,1)]
12
12
  before:shadow-[-10px_0_50px_65px_rgba(256,256,256,1)] dark:after:shadow-[10px_0_50px_65px_rgba(16,24,39,1)]
13
13
  dark:before:shadow-[-10px_0_50px_65px_rgba(16,24,39,1)]`;
14
- let divCls = twMerge("relative flex overflow-hidden w-[100%]", shadow ? shadowClass : '', $$props.class);
14
+ let divCls = twMerge('relative flex overflow-hidden w-[100%]', shadow ? shadowClass : '', $$props.class);
15
15
  onMount(() => {
16
16
  intervalId = setInterval(() => {
17
17
  if (marquee && Math.abs(offset) >= marquee.offsetWidth) {
@@ -29,15 +29,8 @@ onDestroy(() => intervalId);
29
29
  </script>
30
30
 
31
31
  <!-- svelte-ignore a11y-mouse-events-have-key-events -->
32
- <div
33
- class={divCls}
34
- role="banner"
35
- on:mouseover={() => (isHovering = true)}
36
- on:mouseleave={() => (isHovering = false)}>
37
- <div
38
- class="flex justify-around items-center min-w-[100%]"
39
- style="transform: {`translateX(${offset}px)`}"
40
- bind:this={marquee}>
32
+ <div class={divCls} role="banner" on:mouseover={() => (isHovering = true)} on:mouseleave={() => (isHovering = false)}>
33
+ <div class="flex justify-around items-center min-w-[100%]" style="transform: {`translateX(${offset}px)`}" bind:this={marquee}>
41
34
  <slot />
42
35
  </div>
43
36
  <div class="flex justify-around items-center min-w-[100%]" style="transform: {`translateX(${offset}px)`}">
@@ -12,7 +12,7 @@ export let dismissable = true;
12
12
  export let backdropClass = 'fixed inset-0 z-40 bg-gray-900 bg-opacity-50 dark:bg-opacity-80';
13
13
  export let defaultClass = 'relative flex flex-col mx-auto';
14
14
  export let outsideclose = false;
15
- export let dialogClass = 'fixed top-0 left-0 right-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
15
+ export let dialogClass = 'fixed top-0 start-0 end-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
16
16
  const dispatch = createEventDispatcher();
17
17
  $: dispatch(open ? 'open' : 'close');
18
18
  function prepareFocus(node) {
@@ -66,6 +66,9 @@ const onAutoClose = (e) => {
66
66
  const target = e.target;
67
67
  if (autoclose && target?.tagName === 'BUTTON')
68
68
  hide(e); // close on any button click
69
+ };
70
+ const onOutsideClose = (e) => {
71
+ const target = e.target;
69
72
  if (outsideclose && target === e.currentTarget)
70
73
  hide(e); // close on click outside
71
74
  };
@@ -88,13 +91,14 @@ function handleKeys(e) {
88
91
  <div class={backdropCls} />
89
92
  <!-- dialog -->
90
93
  <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
91
- <div on:keydown={handleKeys} on:wheel|preventDefault|nonpassive use:prepareFocus use:focusTrap on:click={onAutoClose} class={twMerge(dialogClass, $$props.classDialog, ...getPlacementClasses())} tabindex="-1" aria-modal="true" role="dialog">
94
+ <div on:keydown={handleKeys} on:wheel|preventDefault|nonpassive use:prepareFocus use:focusTrap on:click={onAutoClose} on:mousedown={onOutsideClose} class={twMerge(dialogClass, $$props.classDialog, ...getPlacementClasses())} tabindex="-1" aria-modal="true" role="dialog">
92
95
  <div class="flex relative {sizes[size]} w-full max-h-full">
93
96
  <!-- Modal content -->
97
+
94
98
  <Frame rounded shadow {...$$restProps} class={frameClass}>
95
99
  <!-- Modal header -->
96
100
  {#if $$slots.header || title}
97
- <Frame color={$$restProps.color} class="flex justify-between items-center p-4 rounded-t">
101
+ <Frame color={$$restProps.color} class="flex justify-between items-center p-4 rounded-t-lg">
98
102
  <slot name="header">
99
103
  <h3 class="text-xl font-semibold {$$restProps.color ? '' : 'text-gray-900 dark:text-white'} p-0">
100
104
  {title}
@@ -102,16 +106,17 @@ function handleKeys(e) {
102
106
  </slot>
103
107
  {#if dismissable}<CloseButton name="Close modal" on:click={hide} color={$$restProps.color} />{/if}
104
108
  </Frame>
105
- {:else if dismissable}
106
- <CloseButton name="Close modal" class="absolute top-3 right-2.5" on:click={hide} color={$$restProps.color} />
107
109
  {/if}
108
110
  <!-- Modal body -->
109
111
  <div class={twMerge('p-6 space-y-6 flex-1 overflow-y-auto overscroll-contain', $$props.bodyClass)} on:keydown|stopPropagation={handleKeys} role="document" on:wheel|stopPropagation|passive>
112
+ {#if dismissable && !$$slots.header && !title}
113
+ <CloseButton name="Close modal" class="absolute top-3 end-2.5" on:click={hide} color={$$restProps.color} />
114
+ {/if}
110
115
  <slot />
111
116
  </div>
112
117
  <!-- Modal footer -->
113
118
  {#if $$slots.footer}
114
- <Frame color={$$restProps.color} class="flex items-center p-6 space-x-2 rounded-b">
119
+ <Frame color={$$restProps.color} class="flex items-center p-6 space-x-2 rtl:space-x-reverse rounded-b-lg">
115
120
  <slot name="footer" />
116
121
  </Frame>
117
122
  {/if}
@@ -133,5 +138,5 @@ function handleKeys(e) {
133
138
  @prop export let backdropClass: string = 'fixed inset-0 z-40 bg-gray-900 bg-opacity-50 dark:bg-opacity-80';
134
139
  @prop export let defaultClass: string = 'relative flex flex-col mx-auto';
135
140
  @prop export let outsideclose: boolean = false;
136
- @prop export let dialogClass: string = 'fixed top-0 left-0 right-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
141
+ @prop export let dialogClass: string = 'fixed top-0 start-0 end-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
137
142
  -->
@@ -53,7 +53,7 @@ export type ModalSlots = typeof __propDef.slots;
53
53
  * @prop export let backdropClass: string = 'fixed inset-0 z-40 bg-gray-900 bg-opacity-50 dark:bg-opacity-80';
54
54
  * @prop export let defaultClass: string = 'relative flex flex-col mx-auto';
55
55
  * @prop export let outsideclose: boolean = false;
56
- * @prop export let dialogClass: string = 'fixed top-0 left-0 right-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
56
+ * @prop export let dialogClass: string = 'fixed top-0 start-0 end-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
57
57
  */
58
58
  export default class Modal extends SvelteComponent<ModalProps, ModalEvents, ModalSlots> {
59
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/modal/Modal.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAMD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AA8JnD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwC,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEhD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;CACtF"}
1
+ {"version":3,"file":"Modal.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/modal/Modal.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAMD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAmKnD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwC,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEhD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;CACtF"}
@@ -5,7 +5,7 @@ import ToolbarButton from '../toolbar/ToolbarButton.svelte';
5
5
  import Menu from './Menu.svelte';
6
6
  export let menuClass = 'h-6 w-6 shrink-0';
7
7
  export let onClick = undefined;
8
- let btnClass = 'ml-3 md:hidden';
8
+ let btnClass = 'ms-3 md:hidden';
9
9
  let hiddenStore = getContext('navHidden') ?? writable(true);
10
10
  const toggle = (ev) => hiddenStore.update((h) => !h);
11
11
  </script>
@@ -10,7 +10,7 @@ activeUrlStore.subscribe((value) => {
10
10
  navUrl = value;
11
11
  });
12
12
  $: active = navUrl ? href === navUrl : false;
13
- $: liClass = twMerge('block py-2 pr-4 pl-3 md:p-0 rounded md:border-0', active ? activeClass ?? context.activeClass : nonActiveClass ?? context.nonActiveClass, $$props.class);
13
+ $: liClass = twMerge('block py-2 pe-4 ps-3 md:p-0 rounded md:border-0', active ? activeClass ?? context.activeClass : nonActiveClass ?? context.nonActiveClass, $$props.class);
14
14
  // $: console.log()
15
15
  </script>
16
16
 
@@ -10,7 +10,7 @@ import Frame from '../utils/Frame.svelte';
10
10
  const activeUrlStore = writable('');
11
11
  export let activeUrl = '';
12
12
  export let divClass = 'w-full md:block md:w-auto';
13
- export let ulClass = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 md:mt-0 md:text-sm md:font-medium';
13
+ export let ulClass = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 rtl:space-x-reverse md:mt-0 md:text-sm md:font-medium';
14
14
  export let hidden = undefined;
15
15
  export let slideParams = { delay: 250, duration: 500, easing: quintOut };
16
16
  export let activeClass = 'text-white bg-primary-700 md:bg-transparent md:text-primary-700 md:dark:text-white dark:bg-primary-600 md:dark:bg-transparent';
@@ -51,7 +51,7 @@ $$props.classUl);
51
51
  ## Props
52
52
  @prop export let activeUrl: string = '';
53
53
  @prop export let divClass: string = 'w-full md:block md:w-auto';
54
- @prop export let ulClass: string = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 md:mt-0 md:text-sm md:font-medium';
54
+ @prop export let ulClass: string = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 rtl:space-x-reverse md:mt-0 md:text-sm md:font-medium';
55
55
  @prop export let hidden: boolean | undefined = undefined;
56
56
  @prop export let slideParams: SlideParams = { delay: 250, duration: 500, easing: quintOut };
57
57
  @prop export let activeClass: string = 'text-white bg-primary-700 md:bg-transparent md:text-primary-700 md:dark:text-white dark:bg-primary-600 md:dark:bg-transparent';
@@ -32,7 +32,7 @@ export type NavUlSlots = typeof __propDef.slots;
32
32
  * ## Props
33
33
  * @prop export let activeUrl: string = '';
34
34
  * @prop export let divClass: string = 'w-full md:block md:w-auto';
35
- * @prop export let ulClass: string = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 md:mt-0 md:text-sm md:font-medium';
35
+ * @prop export let ulClass: string = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 rtl:space-x-reverse md:mt-0 md:text-sm md:font-medium';
36
36
  * @prop export let hidden: boolean | undefined = undefined;
37
37
  * @prop export let slideParams: SlideParams = { delay: 250, duration: 500, easing: quintOut };
38
38
  * @prop export let activeClass: string = 'text-white bg-primary-700 md:bg-transparent md:text-primary-700 md:dark:text-white dark:bg-primary-600 md:dark:bg-transparent';
@@ -4,7 +4,7 @@ import PaginationItem from './PaginationItem.svelte';
4
4
  export let pages = [];
5
5
  export let activeClass = 'text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white';
6
6
  export let normalClass = 'text-gray-500 bg-white hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
7
- export let ulClass = 'inline-flex -space-x-px items-center';
7
+ export let ulClass = 'inline-flex -space-x-px rtl:space-x-reverse items-center';
8
8
  export let table = false;
9
9
  export let large = false;
10
10
  export let ariaLabel = 'Page navigation';
@@ -20,9 +20,9 @@ const next = () => {
20
20
  </script>
21
21
 
22
22
  <nav aria-label={ariaLabel}>
23
- <ul class={twMerge(ulClass, table && 'divide-x dark divide-gray-700 dark:divide-gray-700', $$props.class)}>
23
+ <ul class={twMerge(ulClass, table && 'divide-x rtl:divide-x-reverse dark divide-gray-700 dark:divide-gray-700', $$props.class)}>
24
24
  <li>
25
- <PaginationItem {large} on:click={previous} {normalClass} class={table ? 'rounded-l' : 'rounded-l-lg'}>
25
+ <PaginationItem {large} on:click={previous} {normalClass} class={table ? 'rounded-l' : 'rounded-s-lg'}>
26
26
  <slot name="prev">Previous</slot>
27
27
  </PaginationItem>
28
28
  </li>
@@ -34,7 +34,7 @@ const next = () => {
34
34
  </li>
35
35
  {/each}
36
36
  <li>
37
- <PaginationItem {large} on:click={next} {normalClass} class={table ? 'rounded-r' : 'rounded-r-lg'}>
37
+ <PaginationItem {large} on:click={next} {normalClass} class={table ? 'rounded-r' : 'rounded-e-lg'}>
38
38
  <slot name="next">Next</slot>
39
39
  </PaginationItem>
40
40
  </li>
@@ -48,7 +48,7 @@ const next = () => {
48
48
  @prop export let pages: LinkType[] = [];
49
49
  @prop export let activeClass: string = 'text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white';
50
50
  @prop export let normalClass: string = 'text-gray-500 bg-white hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
51
- @prop export let ulClass: string = 'inline-flex -space-x-px items-center';
51
+ @prop export let ulClass: string = 'inline-flex -space-x-px rtl:space-x-reverse items-center';
52
52
  @prop export let table: boolean = false;
53
53
  @prop export let large: boolean = false;
54
54
  @prop export let ariaLabel: string = 'Page navigation';
@@ -41,7 +41,7 @@ export type PaginationSlots = typeof __propDef.slots;
41
41
  * @prop export let pages: LinkType[] = [];
42
42
  * @prop export let activeClass: string = 'text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white';
43
43
  * @prop export let normalClass: string = 'text-gray-500 bg-white hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
44
- * @prop export let ulClass: string = 'inline-flex -space-x-px items-center';
44
+ * @prop export let ulClass: string = 'inline-flex -space-x-px rtl:space-x-reverse items-center';
45
45
  * @prop export let table: boolean = false;
46
46
  * @prop export let large: boolean = false;
47
47
  * @prop export let ariaLabel: string = 'Page navigation';
@@ -21,7 +21,7 @@ let grayStars = total - (fullStars + Math.ceil(rateDiffence));
21
21
  <div class={twMerge(divClass, $$props.class)}>
22
22
  {#if count}
23
23
  <svelte:component this={icon} fillPercent={100} {size} />
24
- <p class="ml-2 text-sm font-bold text-gray-900 dark:text-white">{rating}</p>
24
+ <p class="ms-2 text-sm font-bold text-gray-900 dark:text-white">{rating}</p>
25
25
  <slot />
26
26
  {:else}
27
27
  {#each Array(fullStars) as star}
@@ -10,7 +10,7 @@ let grayStars = comment.total - roundedRating;
10
10
  </script>
11
11
 
12
12
  <article>
13
- <div class="flex items-center mb-4 space-x-4">
13
+ <div class="flex items-center mb-4 space-x-4 rtl:space-x-reverse">
14
14
  <img class="w-10 h-10 rounded-full" src={comment.user.img.src} alt={comment.user.img.alt} />
15
15
  <div class="space-y-1 font-medium dark:text-white">
16
16
  <p>
@@ -23,12 +23,12 @@ let grayStars = comment.total - roundedRating;
23
23
  </div>
24
24
  <div class="flex items-center mb-1">
25
25
  <Rating total={comment.total} rating={comment.rating}>
26
- <p slot="text" class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">
26
+ <p slot="text" class="ms-2 text-sm font-medium text-gray-500 dark:text-gray-400">
27
27
  {comment.rating} out of {comment.total}
28
28
  </p>
29
29
  </Rating>
30
30
  {#if comment.heading}
31
- <h3 class="ml-2 text-sm font-semibold text-gray-900 dark:text-white">
31
+ <h3 class="ms-2 text-sm font-semibold text-gray-900 dark:text-white">
32
32
  {comment.heading}
33
33
  </h3>
34
34
  {/if}
@@ -44,12 +44,12 @@ let grayStars = comment.total - roundedRating;
44
44
  <slot name="evaluation" />
45
45
  </p>
46
46
  {#if helpfullink || abuselink}
47
- <div class="flex items-center mt-3 space-x-3 divide-x divide-gray-200 dark:divide-gray-600">
47
+ <div class="flex items-center mt-3 space-x-3 rtl:space-x-reverse divide-x rtl:divide-x-reverse divide-gray-200 dark:divide-gray-600">
48
48
  {#if helpfullink}
49
49
  <Button size="xs" href="/" color="dark">Helpful</Button>
50
50
  {/if}
51
51
  {#if abuselink}
52
- <a href={abuselink} class="pl-4 text-sm font-medium text-primary-600 hover:underline dark:text-primary-500"> Report abuse </a>
52
+ <a href={abuselink} class="ps-4 text-sm font-medium text-primary-600 hover:underline dark:text-primary-500"> Report abuse </a>
53
53
  {/if}
54
54
  </div>
55
55
  {/if}
@@ -1,7 +1,7 @@
1
1
  <script>import { twMerge } from 'tailwind-merge';
2
2
  export let review;
3
3
  export let articleClass = 'md:gap-8 md:grid md:grid-cols-3';
4
- export let divClass = 'flex items-center mb-6 space-x-4';
4
+ export let divClass = 'flex items-center mb-6 space-x-4 rtl:space-x-reverse';
5
5
  export let imgClass = 'w-10 h-10 rounded-full';
6
6
  export let ulClass = 'space-y-4 text-sm text-gray-500 dark:text-gray-400';
7
7
  export let liClass = 'flex items-center';
@@ -42,7 +42,7 @@ export let liClass = 'flex items-center';
42
42
  </div>
43
43
  <div class="col-span-2 mt-6 md:mt-0">
44
44
  <div class="flex items-start mb-5">
45
- <div class="pr-4">
45
+ <div class="pe-4">
46
46
  {#if review.reviewDate}
47
47
  <footer>
48
48
  <p class="mb-2 text-sm text-gray-500 dark:text-gray-400">
@@ -68,7 +68,7 @@ export let liClass = 'flex items-center';
68
68
  ## Props
69
69
  @prop export let review: ReviewType;
70
70
  @prop export let articleClass: string = 'md:gap-8 md:grid md:grid-cols-3';
71
- @prop export let divClass: string = 'flex items-center mb-6 space-x-4';
71
+ @prop export let divClass: string = 'flex items-center mb-6 space-x-4 rtl:space-x-reverse';
72
72
  @prop export let imgClass: string = 'w-10 h-10 rounded-full';
73
73
  @prop export let ulClass: string = 'space-y-4 text-sm text-gray-500 dark:text-gray-400';
74
74
  @prop export let liClass: string = 'flex items-center';