@a-type/ui 1.1.16 → 1.1.18

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 (86) hide show
  1. package/dist/cjs/components/button/Button.d.ts +1 -1
  2. package/dist/cjs/components/button/Button.js +1 -1
  3. package/dist/cjs/components/button/Button.js.map +1 -1
  4. package/dist/cjs/components/button/Button.stories.d.ts +1 -0
  5. package/dist/cjs/components/button/Button.stories.js +7 -1
  6. package/dist/cjs/components/button/Button.stories.js.map +1 -1
  7. package/dist/cjs/components/button/classes.js +2 -1
  8. package/dist/cjs/components/button/classes.js.map +1 -1
  9. package/dist/cjs/components/card/Card.js +2 -2
  10. package/dist/cjs/components/card/Card.js.map +1 -1
  11. package/dist/cjs/components/card/Card.stories.js +2 -2
  12. package/dist/cjs/components/card/Card.stories.js.map +1 -1
  13. package/dist/cjs/components/dialog/Dialog.js +1 -1
  14. package/dist/cjs/components/dialog/Dialog.js.map +1 -1
  15. package/dist/cjs/components/dialog/Dialog.stories.d.ts +1 -0
  16. package/dist/cjs/components/dialog/Dialog.stories.js +16 -1
  17. package/dist/cjs/components/dialog/Dialog.stories.js.map +1 -1
  18. package/dist/cjs/components/layouts/PageNav.js +11 -1
  19. package/dist/cjs/components/layouts/PageNav.js.map +1 -1
  20. package/dist/cjs/components/layouts/PageNowPlaying.d.ts +2 -1
  21. package/dist/cjs/components/layouts/PageNowPlaying.js +7 -3
  22. package/dist/cjs/components/layouts/PageNowPlaying.js.map +1 -1
  23. package/dist/cjs/components/layouts/layouts.stories.d.ts +2 -0
  24. package/dist/cjs/components/layouts/layouts.stories.js +22 -2
  25. package/dist/cjs/components/layouts/layouts.stories.js.map +1 -1
  26. package/dist/cjs/components/provider/Provider.d.ts +2 -1
  27. package/dist/cjs/components/provider/Provider.js +3 -1
  28. package/dist/cjs/components/provider/Provider.js.map +1 -1
  29. package/dist/cjs/components/tabs/tabs.js +2 -2
  30. package/dist/cjs/components/tabs/tabs.js.map +1 -1
  31. package/dist/cjs/hooks/useVirtualKeyboardBehavior.d.ts +1 -0
  32. package/dist/cjs/hooks/useVirtualKeyboardBehavior.js +15 -0
  33. package/dist/cjs/hooks/useVirtualKeyboardBehavior.js.map +1 -0
  34. package/dist/cjs/uno.preset.js +1 -0
  35. package/dist/cjs/uno.preset.js.map +1 -1
  36. package/dist/css/main.css +2 -2
  37. package/dist/esm/components/button/Button.d.ts +1 -1
  38. package/dist/esm/components/button/Button.js +1 -1
  39. package/dist/esm/components/button/Button.js.map +1 -1
  40. package/dist/esm/components/button/Button.stories.d.ts +1 -0
  41. package/dist/esm/components/button/Button.stories.js +7 -1
  42. package/dist/esm/components/button/Button.stories.js.map +1 -1
  43. package/dist/esm/components/button/classes.js +2 -1
  44. package/dist/esm/components/button/classes.js.map +1 -1
  45. package/dist/esm/components/card/Card.js +2 -2
  46. package/dist/esm/components/card/Card.js.map +1 -1
  47. package/dist/esm/components/card/Card.stories.js +2 -2
  48. package/dist/esm/components/card/Card.stories.js.map +1 -1
  49. package/dist/esm/components/dialog/Dialog.js +1 -1
  50. package/dist/esm/components/dialog/Dialog.js.map +1 -1
  51. package/dist/esm/components/dialog/Dialog.stories.d.ts +1 -0
  52. package/dist/esm/components/dialog/Dialog.stories.js +15 -0
  53. package/dist/esm/components/dialog/Dialog.stories.js.map +1 -1
  54. package/dist/esm/components/layouts/PageNav.js +11 -1
  55. package/dist/esm/components/layouts/PageNav.js.map +1 -1
  56. package/dist/esm/components/layouts/PageNowPlaying.d.ts +2 -1
  57. package/dist/esm/components/layouts/PageNowPlaying.js +7 -3
  58. package/dist/esm/components/layouts/PageNowPlaying.js.map +1 -1
  59. package/dist/esm/components/layouts/layouts.stories.d.ts +2 -0
  60. package/dist/esm/components/layouts/layouts.stories.js +21 -1
  61. package/dist/esm/components/layouts/layouts.stories.js.map +1 -1
  62. package/dist/esm/components/provider/Provider.d.ts +2 -1
  63. package/dist/esm/components/provider/Provider.js +3 -1
  64. package/dist/esm/components/provider/Provider.js.map +1 -1
  65. package/dist/esm/components/tabs/tabs.js +2 -2
  66. package/dist/esm/components/tabs/tabs.js.map +1 -1
  67. package/dist/esm/hooks/useVirtualKeyboardBehavior.d.ts +1 -0
  68. package/dist/esm/hooks/useVirtualKeyboardBehavior.js +11 -0
  69. package/dist/esm/hooks/useVirtualKeyboardBehavior.js.map +1 -0
  70. package/dist/esm/uno.preset.js +1 -0
  71. package/dist/esm/uno.preset.js.map +1 -1
  72. package/package.json +1 -1
  73. package/src/components/button/Button.stories.tsx +22 -0
  74. package/src/components/button/Button.tsx +2 -1
  75. package/src/components/button/classes.tsx +3 -1
  76. package/src/components/card/Card.stories.tsx +4 -4
  77. package/src/components/card/Card.tsx +2 -2
  78. package/src/components/dialog/Dialog.stories.tsx +41 -0
  79. package/src/components/dialog/Dialog.tsx +1 -1
  80. package/src/components/layouts/PageNav.tsx +11 -1
  81. package/src/components/layouts/PageNowPlaying.tsx +12 -2
  82. package/src/components/layouts/layouts.stories.tsx +71 -0
  83. package/src/components/provider/Provider.tsx +6 -2
  84. package/src/components/tabs/tabs.tsx +2 -2
  85. package/src/hooks/useVirtualKeyboardBehavior.ts +12 -0
  86. package/src/uno.preset.ts +2 -0
@@ -11,6 +11,9 @@ import {
11
11
  NavBarRoot,
12
12
  } from '../navBar.js';
13
13
  import { Icon } from '../icon.js';
14
+ import { PageNowPlaying } from './PageNowPlaying.js';
15
+ import { useEffect, useState } from 'react';
16
+ import { Button } from '../button.js';
14
17
 
15
18
  const meta = {
16
19
  title: 'layouts',
@@ -33,6 +36,7 @@ export const Default: Story = {
33
36
  <h1 className="text-3xl font-bold">Hello, World!</h1>
34
37
  <p className="text-lg">This is a simple page layout.</p>
35
38
  </div>
39
+ <PageNowPlaying>Now playing</PageNowPlaying>
36
40
  </PageContent>
37
41
  <PageNav>
38
42
  <NavBarRoot>
@@ -56,3 +60,70 @@ export const Default: Story = {
56
60
  </PageRoot>
57
61
  ),
58
62
  };
63
+
64
+ export const WithoutNav: Story = {
65
+ render: () => (
66
+ <PageRoot className="w-full h-full">
67
+ <PageContent>
68
+ <div className="text-center">
69
+ <h1 className="text-3xl font-bold">Hello, World!</h1>
70
+ <p className="text-lg">This is a simple page layout.</p>
71
+ </div>
72
+ <PageNowPlaying>Now playing</PageNowPlaying>
73
+ </PageContent>
74
+ </PageRoot>
75
+ ),
76
+ };
77
+
78
+ export const WithVirtualKeyboard: Story = {
79
+ render() {
80
+ const [keyboard, setKeyboard] = useState(false);
81
+
82
+ useEffect(() => {
83
+ if (keyboard) {
84
+ document.body.style.setProperty(
85
+ '--mock-virtual-keyboard-height',
86
+ '300px',
87
+ );
88
+ } else {
89
+ document.body.style.removeProperty('--mock-virtual-keyboard-height');
90
+ }
91
+ }, [keyboard]);
92
+
93
+ return (
94
+ <PageRoot className="w-full h-full">
95
+ <PageContent>
96
+ <div className="text-center">
97
+ <h1 className="text-3xl font-bold">Hello, World!</h1>
98
+ <p className="text-lg">This is a simple page layout.</p>
99
+ </div>
100
+ <PageNowPlaying keepAboveKeyboard>
101
+ <Button onClick={() => setKeyboard((v) => !v)}>
102
+ Toggle vkeyboard
103
+ </Button>
104
+ </PageNowPlaying>
105
+ </PageContent>
106
+ <PageNav>
107
+ <NavBarRoot>
108
+ <NavBarItem>
109
+ <NavBarItemIconWrapper>
110
+ <NavBarItemIcon name="cart" />
111
+ </NavBarItemIconWrapper>
112
+ <NavBarItemText>Item 1 long</NavBarItemText>
113
+ </NavBarItem>
114
+ <NavBarItem active={true}>
115
+ <NavBarItemIconWrapper>
116
+ <NavBarItemIcon asChild>
117
+ <Icon name="book" />
118
+ </NavBarItemIcon>
119
+ </NavBarItemIconWrapper>
120
+ <NavBarItemText>Item 2</NavBarItemText>
121
+ <NavBarItemPip />
122
+ </NavBarItem>
123
+ </NavBarRoot>
124
+ </PageNav>
125
+ <div className="fixed bottom-0 h-[var(--mock-virtual-keyboard-height,0)] bg-black w-full transition-height left-0 right-0" />
126
+ </PageRoot>
127
+ );
128
+ },
129
+ };
@@ -2,8 +2,9 @@ import { ReactNode } from 'react';
2
2
  import { ParticleLayer } from '../particles.js';
3
3
  import { IconSpritesheet } from '../icon.js';
4
4
  import { Toaster, ToastPosition } from 'react-hot-toast';
5
- import { Tooltip, TooltipProvider } from '../tooltip.js';
5
+ import { TooltipProvider } from '../tooltip.js';
6
6
  import { useVisualViewportOffset } from '../../hooks.js';
7
+ import { useVirtualKeyboardBehavior } from '../../hooks/useVirtualKeyboardBehavior.js';
7
8
 
8
9
  export interface ProviderProps {
9
10
  children?: ReactNode;
@@ -11,6 +12,7 @@ export interface ProviderProps {
11
12
  toastPosition?: ToastPosition;
12
13
  toastContainerClassName?: string;
13
14
  disableViewportOffset?: boolean;
15
+ virtualKeyboardBehavior?: 'overlay' | 'displace';
14
16
  }
15
17
 
16
18
  /**
@@ -21,9 +23,11 @@ export function Provider({
21
23
  disableParticles,
22
24
  toastPosition = 'top-center',
23
25
  toastContainerClassName,
24
- disableViewportOffset
26
+ disableViewportOffset = true,
27
+ virtualKeyboardBehavior = 'overlay',
25
28
  }: ProviderProps) {
26
29
  useVisualViewportOffset(disableViewportOffset);
30
+ useVirtualKeyboardBehavior(virtualKeyboardBehavior);
27
31
 
28
32
  const otherStuff = (
29
33
  <>
@@ -5,12 +5,12 @@ export const TabsRoot = withClassName(TabsPrimitive.Root, '');
5
5
 
6
6
  export const TabsList = withClassName(
7
7
  TabsPrimitive.List,
8
- 'flex flex-row py-2 px-2 justify-center items-start gap-2',
8
+ 'flex flex-row flex-wrap py-2 px-2 items-start gap-2',
9
9
  );
10
10
 
11
11
  export const TabsTrigger = withClassName(
12
12
  TabsPrimitive.Trigger,
13
- 'layer-components:(flex flex-row items-center justify-center gap-2 color-black py-1 px-4 bg-wash text-md min-w-100px rounded-full border border-1 font-semibold text-gray-7 border-gray-7 border-solid transition-colors cursor-pointer select-none font-sans)',
13
+ 'layer-components:(flex flex-row items-center justify-center gap-2 color-black py-1 px-5 bg-wash text-md min-w-100px rounded-full border border-1 font-semibold text-gray-7 border-gray-7 border-solid transition-colors cursor-pointer select-none font-sans flex-shrink-0)',
14
14
  'hover:bg-primary-light focus-visible:(focus-ring focus-ring-primary-dark outline-off bg-primary-light border-primary-dark) [&[data-state=active]]:(font-semibold bg-primary-light border-primary-light text-black cursor-default hover:bg-primary-light relative z-1)',
15
15
  );
16
16
 
@@ -0,0 +1,12 @@
1
+ import { useEffect } from 'react';
2
+
3
+ export function useVirtualKeyboardBehavior(
4
+ behavior: 'overlay' | 'displace' = 'overlay',
5
+ ) {
6
+ useEffect(() => {
7
+ if ('virtualKeyboard' in navigator) {
8
+ // @ts-ignore
9
+ navigator.virtualKeyboard.overlaysContent = behavior === 'overlay';
10
+ }
11
+ }, [behavior]);
12
+ }
package/src/uno.preset.ts CHANGED
@@ -399,6 +399,8 @@ export default function presetAglio({
399
399
  'outline-off': '[outline:none]',
400
400
  'bg-wash': 'bg-[var(--color-wash)]',
401
401
  unset: '[all:unset]',
402
+ 'bottom-keyboard':
403
+ 'bottom-[var(--mock-virtual-keyboard-height,env(keyboard-inset-height,0px))]',
402
404
  },
403
405
 
404
406
  preflights: [